Skip to content

ci: publish edge from main and reserve latest for stable releases#12338

Open
DariuszPorowski wants to merge 5 commits into
mainfrom
dp/giant-vicuna-amber
Open

ci: publish edge from main and reserve latest for stable releases#12338
DariuszPorowski wants to merge 5 commits into
mainfrom
dp/giant-vicuna-amber

Conversation

@DariuszPorowski

@DariuszPorowski DariuszPorowski commented Jul 7, 2026

Copy link
Copy Markdown
Member

Description

Aligns the container image tags in radius-project/radius with the radius-project/recipes convention so tagging is consistent across the project: edge tracks the top of main and latest tracks the most recent full (non-prerelease) release.

Previously latest was published on every push to main and there was no edge tag — the opposite of the recipes repo.

Changes

  • .github/workflows/build.yaml — push container images to :edge on merges to main; push :latest only on full (non-prerelease) releases (gated on UPDATE_RELEASE), alongside the existing major.minor channel tag; the build-metrics tag reports edge for main.
  • deploy/Chart/templates/_helpers.tpl — split the tag helper: radius.versiontag now maps edge → edge (radius-owned images); new radius.externalversiontag maps edge → latest.
  • deploy/Chart/templates/dashboard/deployment.yaml, deploy/Chart/templates/de/deployment.yaml — resolve the externally hosted dashboard and deployment-engine images through radius.externalversiontag so they keep pulling :latest until those repos publish an edge tag (the DE template keeps radius.versiontag for its applications-rp init container).
  • deploy/Chart/tests/helpers_test.yaml — expect :edge for the default radius image tag.

Validation

  • helm template (AppVersion edge): radius-owned images resolve to :edge, dashboard / deployment-engine to :latest.
  • helm unittest (helm v4.2.2 + plugin 1.1.1): 105/105 pass.
  • actionlint clean 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 main first, then switch consumers):

  • The rad CLI oras artifact (rad/<os>-<arch>) stays on :latest. Its Validate Bash Installer test does a live oras pull of the edge CLI, so consumers can't switch to :edge until :edge has been published from a main build.
  • radius-project/deployment-engine and radius-project/dashboard still publish only :latest; radius.externalversiontag keeps those two images on :latest until they adopt an edge tag.

Type of change

  • This pull request is a minor refactor, code cleanup, test improvement, or other maintenance task and doesn't change the functionality of Radius (issue link optional).

Fixes: #7915

Contributor checklist

Please verify that the PR meets the following requirements, where applicable:

  • An overview of proposed schema changes is included in a linked GitHub issue.
    • Yes
    • Not applicable
  • A design document is added or updated under eng/design-notes/ in this repository, if new APIs are being introduced.
    • Yes
    • Not applicable
  • The design document has been reviewed and approved by Radius maintainers/approvers.
    • Yes
    • Not applicable
  • A PR for resource-types-contrib is created, if resource types or recipes are affected by the changes in this PR.
    • Yes
    • Not applicable
  • A PR for dashboard is created, if the Radius Dashboard is affected by the changes in this PR.
    • Yes
    • Not applicable
  • A PR for the documentation repository is created, if the changes in this PR affect the documentation or any user facing updates are made.
    • Yes
    • Not applicable

Copilot AI review requested due to automatic review settings July 7, 2026 22:14
@DariuszPorowski
DariuszPorowski requested review from a team as code owners July 7, 2026 22:14
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

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.

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 :edge on main, and publish :latest only on full releases (plus keep the existing release-channel tag behavior).
  • Split Helm chart tag logic into radius.versiontag (Radius-owned images) vs radius.externalversiontag (external images that still use latest for main builds).
  • Update install scripts and Helm unit tests to use/pin edge appropriately.

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 latestedge; 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 edgelatest.
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.

Comment thread .github/workflows/build.yaml Outdated
Comment on lines +163 to +167
- 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}"
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

Functional Tests - corerp-noncloud

180 tests  ±0   178 ✅ ±0   1h 25m 46s ⏱️ + 2m 59s
  3 suites ±0     2 💤 ±0 
  1 files   ±0     0 ❌ ±0 

Results for commit 5b4a0e7. ± Comparison against base commit 349a805.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

Unit Tests

    2 files  ±0    453 suites  ±0   7m 18s ⏱️ -7s
5 785 tests ±0  5 783 ✅ ±0  2 💤 ±0  0 ❌ ±0 
6 986 runs  ±0  6 984 ✅ ±0  2 💤 ±0  0 ❌ ±0 

Results for commit 8a6e061. ± Comparison against base commit fd5adbb.

♻️ This comment has been updated with latest results.

@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 53.27%. Comparing base (fd5adbb) to head (8a6e061).
⚠️ Report is 1 commits behind head on main.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

Functional Tests - upgrade-noncloud

3 tests  ±0   0 ✅  - 3   20m 21s ⏱️ + 16m 2s
1 suites ±0   0 💤 ±0 
1 files   ±0   3 ❌ +3 

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.

@DariuszPorowski
DariuszPorowski force-pushed the dp/giant-vicuna-amber branch from 0f0965b to 5b4a0e7 Compare July 10, 2026 06:46
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>
@DariuszPorowski
DariuszPorowski force-pushed the dp/giant-vicuna-amber branch from d73837a to 8a6e061 Compare July 13, 2026 17:16
@radius-functional-tests

radius-functional-tests Bot commented Jul 13, 2026

Copy link
Copy Markdown

Radius functional test overview

🔍 Go to test action run

Click here to see the test run details
Name Value
Repository radius-project/radius
Commit ref 8a6e061
Unique ID func42d20219c9
Image tag pr-func42d20219c9
  • Dapr: 1.14.4
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-func42d20219c9
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-func42d20219c9
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-func42d20219c9
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-func42d20219c9
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-func42d20219c9
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
✅ Recipe publishing succeeded
⌛ Starting corerp-cloud functional tests...
⌛ Starting corerp-cloud functional tests...
⌛ Starting ucp-cloud functional tests...
⌛ Starting ucp-cloud functional tests...
✅ ucp-cloud functional tests succeeded
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

@DariuszPorowski
DariuszPorowski marked this pull request as ready for review July 13, 2026 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

latest and edge tags are inconsistent across the project

3 participants