Today the transformer (#85) drops every uses: step it doesn't recognise into a NeedsReview provenance record. This issue adds a typed registry so the 14 most-used marketplace actions translate cleanly.
type ActionMapping = {
uses: string; // "actions/checkout"
majorVersions?: string[]; // ["v3", "v4"] — match all if omitted
apply: (step: GitHubStep, ctx: MigrationContext) => MappingResult;
};
type MappingResult =
| { kind: "delete"; reason: string }
| { kind: "image"; image: GitLabImage } // job-level image substitution
| { kind: "script"; lines: string[] }
| { kind: "service"; service: GitLabService }
| { kind: "needsReview"; reason: string };
Tier 1 (from the upstream skill's references/marketplace-actions.md):
| Action |
Mapping |
actions/checkout |
delete |
actions/setup-node |
image: node:<v> |
actions/setup-python |
image: python:<v> |
actions/setup-java |
image: eclipse-temurin:<v> |
actions/setup-go |
image: golang:<v> |
actions/setup-ruby |
image: ruby:<v> |
actions/cache |
cache: keyword (handled at job level) |
actions/upload-artifact |
artifacts: keyword |
actions/download-artifact |
needs:artifacts: or removed when adjacent stages |
docker/build-push-action |
script + services: docker:dind |
docker/login-action |
script (docker login) |
docker/setup-buildx-action |
script + services: docker:dind |
docker/setup-qemu-action |
script (docker run tonistiigi/binfmt) |
actions/github-script |
needsReview |
Done when
Depends on: #85. Blocks: #88.
Inspired by
gitlab-org/ci-cd/github-actions-to-gitlab-ci — references/marketplace-actions.md Tier 1 section. Each chant ActionMapping is a direct port of that file's before/after examples.
Today the transformer (#85) drops every
uses:step it doesn't recognise into aNeedsReviewprovenance record. This issue adds a typed registry so the 14 most-used marketplace actions translate cleanly.Tier 1 (from the upstream skill's
references/marketplace-actions.md):actions/checkoutdeleteactions/setup-nodeimage: node:<v>actions/setup-pythonimage: python:<v>actions/setup-javaimage: eclipse-temurin:<v>actions/setup-goimage: golang:<v>actions/setup-rubyimage: ruby:<v>actions/cachecache:keyword (handled at job level)actions/upload-artifactartifacts:keywordactions/download-artifactneeds:artifacts:or removed when adjacent stagesdocker/build-push-actionscript+services: docker:dinddocker/login-actionscript(docker login)docker/setup-buildx-actionscript+services: docker:dinddocker/setup-qemu-actionscript(docker run tonistiigi/binfmt)actions/github-scriptneedsReviewDone when
lexicons/gitlab/src/migrate/from-github/action-mappings.tsexports anActionMapping[]covering all 14.needsReviewprovenance record with the action name.Depends on: #85. Blocks: #88.
Inspired by
gitlab-org/ci-cd/github-actions-to-gitlab-ci—references/marketplace-actions.mdTier 1 section. Each chantActionMappingis a direct port of that file's before/after examples.