ci: publish edge from main and reserve latest for stable releases#12338
ci: publish edge from main and reserve latest for stable releases#12338DariuszPorowski wants to merge 5 commits into
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Pull request overview
This PR aligns the Radius repo’s tagging convention with radius-project/recipes: edge tracks the tip of main, while latest is reserved for the most recent full (non-prerelease) release. This updates CI publishing plus Helm/install tooling so “edge” installs and templates pull the correct tags.
Changes:
- Update CI to publish container images to
:edgeonmain, and publish:latestonly on full releases (plus keep the existing release-channel tag behavior). - Split Helm chart tag logic into
radius.versiontag(Radius-owned images) vsradius.externalversiontag(external images that still uselatestfor main builds). - Update install scripts and Helm unit tests to use/pin
edgeappropriately.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/build.yaml |
Switch main-branch publishing from latest→edge; add release-only publishing for latest for container images; adjust build-metrics tagging. |
deploy/Chart/templates/_helpers.tpl |
Refactor tag helpers: radius.versiontag keeps edge, new radius.externalversiontag maps edge→latest. |
deploy/Chart/templates/dashboard/deployment.yaml |
Use radius.externalversiontag for the dashboard image tag defaulting. |
deploy/Chart/templates/de/deployment.yaml |
Use radius.externalversiontag for externally hosted deployment-engine image, while keeping radius.versiontag for Radius-owned init container. |
deploy/Chart/tests/helpers_test.yaml |
Update Helm unit test expectations to applications-rp:edge where appropriate; minor YAML quoting/formatting adjustments. |
deploy/install.sh |
Download “edge” CLI from ghcr.io/...:edge instead of :latest. |
deploy/install.ps1 |
Download “edge” CLI from ghcr.io/...:edge instead of :latest. |
| - name: Push edge rad cli binary to GHCR (unix-like) | ||
| if: github.ref == 'refs/heads/main' && matrix.target_os != 'windows' && needs.changes.outputs.only_changed != 'true' | ||
| run: | | ||
| cp "./dist/${GOOS}_${GOARCH}/release/rad" ./rad | ||
| oras push "${CONTAINER_REGISTRY}/rad/${GOOS}-${GOARCH}:latest" ./rad --annotation "org.opencontainers.image.source=${IMAGE_SRC}" | ||
| oras push "${CONTAINER_REGISTRY}/rad/${GOOS}-${GOARCH}:edge" ./rad --annotation "org.opencontainers.image.source=${IMAGE_SRC}" |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #12338 +/- ##
==========================================
- Coverage 53.29% 53.27% -0.02%
==========================================
Files 755 755
Lines 48884 48884
==========================================
- Hits 26051 26043 -8
- Misses 20417 20421 +4
- Partials 2416 2420 +4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Functional Tests - upgrade-noncloud3 tests ±0 0 ✅ - 3 20m 21s ⏱️ + 16m 2s For more details on these failures, see this check. Results for commit 8a6e061. ± Comparison against base commit fd5adbb. ♻️ This comment has been updated with latest results. |
0f0965b to
5b4a0e7
Compare
7fc6831 to
265b10f
Compare
Align Radius container image and rad CLI tags with the radius-project/recipes convention: `edge` tracks the top of main, and `latest` tracks the most recent full (non-prerelease) release. - build.yaml: push images and the rad CLI to `:edge` on merges to main; push `:latest` only on full releases (gated on UPDATE_RELEASE), alongside the existing major.minor channel tag - chart: split `radius.versiontag` (edge->edge) from a new `radius.externalversiontag` (edge->latest) so the deployment-engine and dashboard images keep resolving to `:latest` until those repos publish `edge` - install.sh/install.ps1: download the edge CLI from the `:edge` tag - helm unit tests: expect `:edge` for the default radius image tag Fixes #7915 Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
The Validate Bash Installer job runs `install.sh --version edge`, which does a live `oras pull` of the edge CLI. That artifact is only published from a main-branch build, so a new :edge tag does not exist while this PR's CI runs and the pull fails. Issue #7915 targets the container image tags; the rad CLI oras artifact is a separate mechanism whose tag migration needs a two-phase rollout, so keep it on :latest here. Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
…r Radius images Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
- Implemented logic to determine the latest stable release and update environment variables accordingly in get_release_version.py. - Added tests for release version parsing to ensure correct behavior. - Updated build.yaml to include new steps for testing release version parsing and container image promotion. - Introduced promote-container-image.sh script for promoting Docker images between tags. - Created test script for promote-container-image.sh to validate its functionality. - Enhanced README and contributing guidelines to clarify image tagging and promotion processes. Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
d73837a to
8a6e061
Compare
Radius functional test overviewClick here to see the test run details
Test Status⌛ Building Radius and pushing container images for functional tests... |
Description
Aligns the container image tags in
radius-project/radiuswith theradius-project/recipesconvention so tagging is consistent across the project:edgetracks the top ofmainandlatesttracks the most recent full (non-prerelease) release.Previously
latestwas published on every push tomainand there was noedgetag — the opposite of the recipes repo.Changes
.github/workflows/build.yaml— push container images to:edgeon merges tomain; push:latestonly on full (non-prerelease) releases (gated onUPDATE_RELEASE), alongside the existingmajor.minorchannel tag; the build-metrics tag reportsedgeformain.deploy/Chart/templates/_helpers.tpl— split the tag helper:radius.versiontagnow mapsedge → edge(radius-owned images); newradius.externalversiontagmapsedge → latest.deploy/Chart/templates/dashboard/deployment.yaml,deploy/Chart/templates/de/deployment.yaml— resolve the externally hosteddashboardanddeployment-engineimages throughradius.externalversiontagso they keep pulling:latestuntil those repos publish anedgetag (the DE template keepsradius.versiontagfor itsapplications-rpinit container).deploy/Chart/tests/helpers_test.yaml— expect:edgefor the default radius image tag.Validation
helm template(AppVersionedge): radius-owned images resolve to:edge,dashboard/deployment-engineto:latest.helm unittest(helm v4.2.2 + plugin 1.1.1): 105/105 pass.actionlintclean on the workflow.Note
Scope: this PR covers the container images named in #7915. Two related changes are intentionally out of scope because each needs a two-phase rollout (publish the new tag from
mainfirst, then switch consumers):radCLI oras artifact (rad/<os>-<arch>) stays on:latest. ItsValidate Bash Installertest does a liveoras pullof the edge CLI, so consumers can't switch to:edgeuntil:edgehas been published from amainbuild.radius-project/deployment-engineandradius-project/dashboardstill publish only:latest;radius.externalversiontagkeeps those two images on:latestuntil they adopt anedgetag.Type of change
Fixes: #7915
Contributor checklist
Please verify that the PR meets the following requirements, where applicable:
eng/design-notes/in this repository, if new APIs are being introduced.