Loading
Commits on Source 14
-
Elliot Forbes authored
Packages the database-migration jobs for services using the Theseus migrator (gitlab-org/theseus/migrator), replacing the hand-copied jobs from the Theseus how-to: - validate_migrations: builds the derived migrations image and runs the offline contract check on MRs and default-branch pushes that touch the migration directory or Dockerfile. - roundtrip_migrations: proves the SQL applies and reverses (up, down --to-version 0, up) against a throwaway Postgres on dind. Disabled via roundtrip_enabled: false for directories with irreversible migrations. - build_migrations: builds and pushes the derived image tagged with APP_VERSION from the release-platform chart-versions job, so the deploy-time hook resolving .Chart.AppVersion always finds it; latest_tag: true adds a latest tag for local-dev flows. The validate and roundtrip jobs drive the distroless migrator image via docker run on a dind daemon (it cannot be a job image), the same pattern as the migrator's own smoke test. All three jobs are lifted from gitlab-org/quality/go-service-template, the reference implementation, where they have been proven through staging and production deploys. Fulfils the consumer-CI-component item on the migrator roadmap (gitlab-org/theseus/migrator README) and point 3 of the improvement plan on gitlab-org/theseus#1. Co-Authored-By:
Claude Fable 5 <noreply@anthropic.com>
-
Elliot Forbes authored
Co-Authored-By:Claude Fable 5 <noreply@anthropic.com>
-
Elliot Forbes authored
The previous commit re-copied the generated files by calling the copy helpers directly, which wrote the do-not-edit headers without the ./ prefix the script produces, failing check_generate. Co-Authored-By:Claude Fable 5 <noreply@anthropic.com>
-
Luke Hollinda authored
The bare `test -n "$APP_VERSION"` exited 1 with no output, leaving the consumer to work out for themselves that the chart-versions job either did not run or published nothing. That is the failure most consumers will hit first, and it is about to become reachable in more pipelines once the version job need is made optional. Replace it with the error format AGENTS.md asks for: what broke, where APP_VERSION is meant to come from, what to check, and a doc link. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Luke Hollinda authored
build_migrations runs on every default-branch push, but the Fairway chart-versions job it needs inherits semantic_release's rules, which skip it on a release-platform canonical namespace, on mirrors, when SEMANTIC_RELEASE_DISABLED is set, and when there is no .releaserc.json. A non-optional needs:job that matches nothing fails pipeline creation, so in all of those cases including this component cost the consumer their whole default-branch pipeline rather than one job. Mark it optional, matching release-platform's goreleaser need and Fairway's own descriptor-job need. The APP_VERSION guard then reports the missing version as an ordinary job failure. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Luke Hollinda authored
validate_migrations and roundtrip_migrations stood up their own docker-in-docker daemon: no TLS, no registry mirror, no runner tag, and none of the --mtu 1360 workaround the shared base carries for production-engineering#28488. They also never logged in to the registry, so a db/Dockerfile with a private FROM could not be built. Extend .docker_buildx_base instead and override only script:, which picks up the daemon configuration from one place. The base performs its login from script:, so that line is restated in each job. postgres_image becomes a full image reference defaulting to the same mirror, leaving no unauthenticated Docker Hub pull in either job; the docker_hub_host input it replaces is dropped. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Luke Hollinda authored
A container that exits during startup is indistinguishable from a slow one through pg_isready alone: both end as a bare 60-second timeout with the actual cause left in a log nobody prints. Dump `docker logs pg` and say so before failing. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Luke Hollinda authored
Fairway embeds the manifest path in its chart-versions job name, so the name changes with release-platform's runway_dir while the version_job default stays pinned to the .runway spelling. Nothing in the component can derive one input's default from another, so say it plainly and show the override. Also warn that release-platform.md gives the pre-manifest-path name. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Luke Hollinda authored
Fairway embeds the manifest path in each helm-chart job name, so the real jobs are "
📝 [.runway/fairway.yaml] Helm chart versions" and friends, not the unbracketed names documented here. Anyone wiring a needs: from these docs got a name matching nothing. The template link pointed at v1.10.0 while the component pins v3.2.1. Renovate updates the pin in release-platform.jsonnet and cannot see a version in prose, so link main as the other Fairway links here do. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Luke Hollinda authored
Those names are now correct, so pointing readers away from the docs they would naturally follow no longer helps. Co-Authored-By:Claude Opus 5 (1M context) <noreply@anthropic.com>
-
Elliot Forbes authored
The manitest only checked that the three job names appeared in the output, so a future edit could reintroduce the commit-SHA tagging this component exists to remove, or drop the optional: on the version_job need, without a failing test. Lock the content that matters: the optional dotenv need, the APP_VERSION guard running before DOCKER_DESTINATION is derived, the release tag (and no CI_COMMIT_SHA), the opt-in latest tag, the default-branch-only build rule, the changes: filters and schedule exclusion on the MR jobs, the roundtrip opt-out, the up/down/up sequence, the Postgres readiness fallback, the registry login before each dind build, and .docker_buildx_base on all three jobs with no plaintext dind left behind. Counts use std.strReplace rather than std.findSubstr, as in release-platform.manitest.jsonnet, so the file runs in milliseconds. Co-Authored-By:Claude Fable 5.1 <noreply@anthropic.com>
-
Elliot Forbes authored
Co-Authored-By:Claude Fable 5.1 <noreply@anthropic.com>
-
Brittany Wilkerson authored
feat: add the migrator CI component See merge request !1925
-
semantic-release-bot authored
## [5.33.0](https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks/-/compare/...) (2026-10-06) ### Features * add the migrator CI component ([6f24ff4c](6f24ff4c)) ### Fixes * explain why build_migrations failed on an unset APP_VERSION ([e42d3606](e42d3606)) * make the migrator chart-versions dependency optional ([65c570fc](65c570fc)) * run the migrator dind jobs on .docker_buildx_base ([50e2e02e](50e2e02e)) * surface the Postgres log when the migrator round trip cannot connect ([5ff4fda0](5ff4fda0)) ### Docs * correct the Fairway job names in release-platform ([505a17cd](505a17cd)) * drop the migrator warning about release-platform's job names ([eb460e00](eb460e00)) * explain how version_job tracks release-platform's runway_dir ([ae5d3f80](ae5d3f80)) * **migrator:** label the job-name code fence ([e8ab6a0d](e8ab6a0d)) ### Tests * **migrator:** assert on the generated rules, needs and tagging ([4af5d5fe](4af5d5fe)) ### Others * appease jsonnetfmt ([bc668d2d](bc668d2d)) * regenerate templates/migrator via scripts/generate.sh ([90338506](90338506))