Skip to content

feat(release): move micromasters to the release-resource workflow - #6248

Merged
feoh merged 3 commits into
mainfrom
cpatti/micromasters-release-resource
Oct 7, 2026
Merged

feoh merged 3 commits into
mainfrom
cpatti/micromasters-release-resource

Conversation

@feoh

@feoh feoh commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

What are the relevant tickets?

Part of the release-workflow rollout under https://github.com/mitodl/hq/issues/7185.

Description (What does it do?)

Sets release_resource_workflow=True on micromasters in src/bridge/settings/apps.py. That one field switches both control surfaces: k8s-apps-meta regenerates micromasters-pipeline in the release-resource shape, and the release bot stops answering /doof commands in #product-micromasters with "still on the legacy release-candidate/release pipeline".

After this merges, micromasters releases the way ol-analytics-api and learn-ai do: /doof release micromasters cuts releases/<calver>, builds the RC image and deploys QA with a release issue; closing the issue deploys production and merges the branch back to master. The release-candidate -> release flow and Doof stop applying.

Do not merge until

Implementation details
  • The two comments naming the opted-in apps (release_workflow_repos(), _required_checks_bypass) now list micromasters. The ruleset bypass for the release GitHub App already covers it, since it is derived from all of APPS.
  • Version handling: micromasters is a VERSION-file app (version_file="VERSION", read by settings.py). Its baseline tag v0.254.0 is semver, so the first release's bump-version goes through the transition script, using semver_tag_fallback. master is 1 commit ahead of that tag.

How can this be tested?

Pipeline generated locally with the flip (uv run python -c ... build_app_pipeline(app_name='micromasters')):

  • Jobs: build-micromasters-image-from-master, build-micromasters-release-image, abandon-micromasters-release, deploy-ol-application-micromasters-{ci,qa,production}.
  • With app names normalized and main -> master, it differs from ol-analytics-api's generated pipeline only in refresh_stack: false, TARGET: production (micromasters' build target) and two extra Pulumi trigger paths (src/bridge/secrets/fastly.yaml, src/bridge/secrets/vector).
  • The bump-version transition script run against a checkout of micromasters master with fix(mit-learn): drop the dead /src/django_media Granian static mount #5565 applied changes only VERSION and current_version, and uv lock --check stays clean; a second bump with bump-my-version==1.3.0 behaves the same.
  • ruff check and ruff format --check pass on src/bridge and the touched file.

After merge:

  • create-micromasters-pipeline should fire, since apps.py is in k8s-apps-meta's trigger paths. fly -t odl-inf get-pipeline -p micromasters-pipeline | grep -c NEEDS_SEED should then be non-zero.
  • The release-bot preview gate (pulumi-release-bot) has to be closed before the bot accepts micromasters commands.
  • The first real /doof release micromasters is the end-to-end check; the bump-version output should show Updated VERSION (replaced 0.254.0).

Additional Context

Not verified: that ol-release-bot is installed on mitodl/micromasters (it needs app-level credentials; the 2026-09-11 check recorded all eight app repos as installed) and that the bot has been invited to #product-micromasters; the earlier bot notification outage came from missing channel membership.

The micromasters release and release-candidate branches (both at the v0.254.0 tag content) and the protected-release-branches repo ruleset are left for cleanup after the first release succeeds.

@feoh feoh self-assigned this Oct 6, 2026
@feoh
feoh requested review from blarghmatey and a balanced review from Copilot October 6, 2026 20:13
@feoh
feoh marked this pull request as ready for review October 6, 2026 20:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The coordinated cross-repository prerequisites remain incomplete, and the generated pipeline description still documents the legacy workflow.

Review effort: Balanced
Findings: 1 Low severity

Open (1)
What changed in this PR

Migrates MicroMasters to the shared release-resource workflow used by the pipeline generator and release bot.

Changes:

  • Enables the modern release workflow for MicroMasters.
  • Updates ruleset documentation to reflect the opt-in.
File Description
src/​bridge/​settings/​apps.py Enables release-resource workflow and updates registry documentation.
src/​ol_infrastructure/​saas/​github/​repositories/​rulesets.py Updates release-bot bypass documentation.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/bridge/settings/apps.py
@feoh
feoh merged commit 5ecdec1 into main Oct 7, 2026
10 checks passed
@feoh
feoh deleted the cpatti/micromasters-release-resource branch October 7, 2026 18:39
feoh added a commit that referenced this pull request Oct 7, 2026
* fix(k8s_apps): build release-workflow images with OUTPUT_OCI

The release-resource workflow's image jobs (_build_image_job and
_build_release_image_job) were missing the OUTPUT_OCI fix that #5722 added
to the legacy path. Images built FROM mitodl/ol-python-base carry zstd
layers from the DHI base; oci-build-task's default Docker-format tarball
labels them gzip, so the registry-image put's implicit get fails with
"gzip: invalid header". This broke micromasters' first build after #6248
and learn-ai's release image build.

Set OUTPUT_OCI and push the image/image layout directory, keeping the
tarball only when uploading Sentry source maps, as the legacy path does.

* test(k8s_apps): guard the source-map tarball exception on release builds

A release image build that uploads Sentry source maps must skip OUTPUT_OCI
and push image/image.tar, since the upload reads the unpacked rootfs.
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.

3 participants