Skip to content

[ci] Stop a manual mobile build from taking the released :latest tag - #5815

Merged
mmabrouk merged 2 commits into
release/v0.111.0from
ci/mobile-release-publish-path
Aug 8, 2026
Merged

[ci] Stop a manual mobile build from taking the released :latest tag#5815
mmabrouk merged 2 commits into
release/v0.111.0from
ci/mobile-release-publish-path

Conversation

@ardaerzin

Copy link
Copy Markdown
Contributor

Context

Agenta-AI/agenta_cloud#1665 adds agenta-web-mobile to 43 - Release to GHCR, so from v0.111 the release pipeline publishes the mobile image alongside api, web, services and runner. Part of publishing is moving ghcr.io/agenta-ai/agenta-web-mobile:latest onto the released version, exactly as it does for the other four.

This workflow could move that tag too. A manual dispatch with push_latest=true retagged :latest onto whatever commit was dispatched. That was harmless while nothing else owned the tag and no image had ever been published. It stops being harmless the moment a released version lives there.

It matters because :latest is the default a self-hoster gets:

image: ghcr.io/agenta-ai/${AGENTA_WEB_MOBILE_IMAGE_NAME:-agenta-web-mobile}:${AGENTA_WEB_MOBILE_IMAGE_TAG:-latest}

So a one-off build dispatched from a feature branch could quietly become what every opted-in self-host deployment pulls on its next restart.

Changes

Dropped the push_latest input and the latest branch of the manifest stitch. Dispatch still builds and pushes an explicit tag (manual-<short-sha>, or whatever image_tag is set to), which is what makes it useful for a preview or a one-off. It just cannot claim :latest any more.

The comment on workflow_dispatch now says where the release path actually is, so the next person does not have to reconstruct it.

Nothing else changes. The PR-triggered path (typecheck, two-arch build, /m smoke test, non-root check) is untouched, and dispatch never pushed :latest by default anyway, so no existing usage breaks.

Tests / notes

  • The workflow parses, every run: block parses as bash, and no reference to push_latest or PUSH_LATEST survives anywhere in .github/ or hosting/.
  • Nothing to QA. This removes an option from a manual workflow.

Ordering: this is safe to merge before or after agenta_cloud#1665. Merged first it removes the footgun early; merged after it closes the window where two workflows both claim :latest.

While checking the related profile-name mismatch I found this repo is the consistent one. Every profile here is with-prefixed (with-web, with-nginx, with-traefik, with-tunnel, with-web-mobile), so nothing needs renaming on this side. The cloud compose spells it bare web-mobile, which is the side worth aligning, and that is a change for the other repo.

`43 - Release to GHCR` in agenta_cloud is about to publish agenta-web-mobile
alongside api, web, services and runner, which means it owns
ghcr.io/agenta-ai/agenta-web-mobile:latest the same way it owns the other four.

This workflow could also move that tag: a manual dispatch with push_latest=true
retagged :latest onto an arbitrary build. Self-hosters pull :latest by default
(the compose service defaults to it), so that is a footgun pointed at every
opted-in self-host deployment, and it only got sharper once a released version
started living there.

Dispatch keeps building and pushing an explicit tag, which is what makes it
useful for a preview or a one-off. It just cannot claim :latest any more.
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Aug 8, 2026
@vercel

vercel Bot commented Aug 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agenta-documentation Ready Ready Preview Aug 8, 2026 3:32pm

Request Review

@dosubot dosubot Bot added the ci/cd label Aug 8, 2026
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 715ff696-f702-4a6f-a097-63091134ff40

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Updated mobile build workflow documentation to clarify that manual builds must not overwrite the latest tag.
    • Manual builds now publish only the requested tag without creating or reporting a latest manifest.

Walkthrough

The mobile workflow now treats manual builds as ad hoc images. It removes the push_latest input and no longer creates or reports a :latest manifest. Requested image tags still merge the amd64 and arm64 images.

Changes

Mobile image tag control

Layer / File(s) Summary
Enforce manual image tag policy
.github/workflows/17-check-mobile.yml
The workflow documents the manual-build policy, removes the push_latest dispatch input, and limits manifest merging to the requested image tag.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • Agenta-AI/agenta#5683: Both changes modify the mobile workflow's image tagging and manifest-merging behavior.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes preventing manual mobile builds from moving the released :latest tag.
Description check ✅ Passed The description explains the workflow change, its purpose, affected behavior, and unchanged PR-triggered checks.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/mobile-release-publish-path

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7256dcb3-6823-4ce8-998e-a07620c1ea10

📥 Commits

Reviewing files that changed from the base of the PR and between 6f2cd5b and 0f62af2.

📒 Files selected for processing (1)
  • .github/workflows/17-check-mobile.yml

Comment thread .github/workflows/17-check-mobile.yml
@dosubot dosubot Bot added the lgtm This PR has been approved by a maintainer label Aug 8, 2026
… left behind

Dropping the push_latest input was not enough on its own: image_tag is free
text, so a dispatch with image_tag=latest sails through the existing
character/length validation and reaches the same imagetools create -t
"${IMAGE}:${TAG}" command, taking the tag by the other route. The prepare
job's metadata step now rejects TAG=latest outright, right after the
128-character check, so a manual build can no longer claim :latest by either
input.

That guard obsoletes two pieces of text that assumed push_latest still
existed. The build-image job's comment on why it depends on typecheck said
a passing dispatch "publishes that tag and merge-manifests can move latest
onto it" — merge-manifests can't move latest anymore, so the sentence now
says what actually happens: an image with unchecked types can still be
pushed, just never as latest. And the mobile design doc's first-publication
runbook still told an operator to dispatch this workflow with push=true,
push_latest=true — an input that no longer exists, describing exactly the
action this PR removes. It now points at 43 - Release to GHCR in
agenta_cloud, which is where publication actually lives, alongside api, web,
services and runner.
@dosubot dosubot Bot added size:S This PR changes 10-29 lines, ignoring generated files. and removed size:XS This PR changes 0-9 lines, ignoring generated files. labels Aug 8, 2026
@mmabrouk
mmabrouk merged commit 8485e0f into release/v0.111.0 Aug 8, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd lgtm This PR has been approved by a maintainer size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants