Skip to content

feat(devcontainer-features-common-utils): ✨ add GitLab CI fragments for every GitHub workflow - #245

Draft
tomgrv wants to merge 7 commits into
developfrom
ccr-df368c1e-gn1q4f
Draft

tomgrv wants to merge 7 commits into
developfrom
ccr-df368c1e-gn1q4f

Conversation

@tomgrv

@tomgrv tomgrv commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • One GitLab fragment per GitHub workflow (18), src/<feature>/stubs/_<workflow>...gitlab-ci.yml (root: stubs/). The three dots make feature-configure deploy them as the dotted .gitlab-ci.yml (.. collapses to . before the _ qualifier is stripped), merged by yaml-merge.
  • Two shared templates: .zz-use (common-utils; bootstraps zz-* from tomgrv/scripts at v3, not main) and .zz-use-php (larasets).
  • tomgrv/actions steps are zz-use -x tomgrv/actions/<name>, inputs mapped to env vars; the actions' stdout outputs are appended to $GITHUB_OUTPUT like the GitHub wrappers do.
  • check-secret and check-laravel have no run.sh, so they are replaced by the gitleaks CLI and the pint step; trivy replaces its GitHub action.
  • configure-gitlab sets the protected branches and the pipeline requirement through the project API.
  • Vendors GitLab's github-actions-to-gitlab-ci skill (MIT) in ai-coding, unchanged, with the .github/skills symlink (and the repo's own copy).
  • New tests/gitlab-fragments.bats; README sections per feature.

Depends on

Still a placeholder: review-deepseek (GitLab pipelines do not run on comments).

Verified

  • All fragments merged one after another with the real yaml-merge (mikefarah yq v4.54.1) into a single .gitlab-ci.yml: no clash.
  • glci lint (v0.8.0) on the merged file: valid, 21 jobs, 5 stages.
  • zz-use -x tomgrv/actions/check-pr-source-branch run for real: exit 0 / 1 as expected.
  • configure-gitlab's script run against a stubbed curl.
  • bats tests/ passes.

Not verified

  • The jobs were never run on GitLab.
  • The reviewdog reporter needs a REVIEWDOG_GITLAB_API_TOKEN variable.

🤖 Generated with Claude Code

…or every GitHub workflow

One `_<workflow>...gitlab-ci.yml` stub per workflow, merged into the dotted
`.gitlab-ci.yml`. tomgrv/actions steps run through `zz-use -x`; the ones
that call the GitHub API are pending manual jobs. Vendors the GitLab
github-actions-to-gitlab-ci skill, and adds a repo-wide bats guard.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWCx6ifQFkyqUFNvkGPo4o
…ab merge requests

check-pr-format now reads and fixes the title through the GitLab API
(tomgrv/actions#152), so the job is no longer pending.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWCx6ifQFkyqUFNvkGPo4o
…ew GitLab API support

clean-branches, update-labels, manage-orphan-branches and update-features
run on schedules; fix-phpinsights opens a merge request; the monorepo jobs
keep targeting GitHub repositories with FORGE=github.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWCx6ifQFkyqUFNvkGPo4o
…GitLab API

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWCx6ifQFkyqUFNvkGPo4o
…the actions in GitLab jobs

The GitHub action wrappers append the actions' stdout to GITHUB_OUTPUT; do the
same in the GitLab jobs that read list-packages, list-php-parts, degit-package
and split-package outputs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWCx6ifQFkyqUFNvkGPo4o
…anches through the project API

Replaces the placeholder configure-gitlab job: protects main and develop and
requires successful pipelines for merge requests.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWCx6ifQFkyqUFNvkGPo4o
… GitLab projects

degit-package, split-package and create-pr now target GitLab projects by
default (FORGE=github keeps GitHub package repositories); configure-gitlab
sets the protected branches through the project API.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWCx6ifQFkyqUFNvkGPo4o
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants