Skip to content

Commit 7e33de7

Browse files
committed
fix(ci): pin release validation dependency images
1 parent 5047573 commit 7e33de7

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

.github/workflows/release.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ jobs:
3131
checkout_ref: ${{ steps.vars.outputs.checkout_ref }}
3232
control_image: ${{ steps.vars.outputs.control_image }}
3333
control_image_name: ${{ steps.vars.outputs.control_image_name }}
34+
dataplane_image: ${{ steps.vars.outputs.dataplane_image }}
35+
dashboard_image: ${{ steps.vars.outputs.dashboard_image }}
3436

3537
steps:
3638
- name: Compute release metadata
@@ -51,12 +53,16 @@ jobs:
5153
checkout_ref="refs/tags/${release_tag}"
5254
control_image_name="ghcr.io/${owner_lc}/nantian-controlplane"
5355
control_image="${control_image_name}:${release_tag}"
56+
dataplane_image="ghcr.io/${owner_lc}/dataplane:${release_tag}"
57+
dashboard_image="ghcr.io/${owner_lc}/dashboard:${release_tag}"
5458
5559
{
5660
echo "release_tag=${release_tag}"
5761
echo "checkout_ref=${checkout_ref}"
5862
echo "control_image=${control_image}"
5963
echo "control_image_name=${control_image_name}"
64+
echo "dataplane_image=${dataplane_image}"
65+
echo "dashboard_image=${dashboard_image}"
6066
} >>"${GITHUB_OUTPUT}"
6167
6268
security-scans:
@@ -106,8 +112,8 @@ jobs:
106112
CLUSTER_NAME: release-validation
107113
GATEWAY_API_VERSION: v1.5.1
108114
CONTROLPLANE_IMAGE: ${{ needs.metadata.outputs.control_image }}
109-
DATAPLANE_IMAGE: ghcr.io/nantian-gw/dataplane:latest
110-
DASHBOARD_IMAGE: ghcr.io/nantian-gw/dashboard:latest
115+
DATAPLANE_IMAGE: ${{ needs.metadata.outputs.dataplane_image }}
116+
DASHBOARD_IMAGE: ${{ needs.metadata.outputs.dashboard_image }}
111117
CONFORMANCE_EXPERIMENTAL: "true"
112118
ALL_FEATURES: "true"
113119

scripts/ci/ci_assets_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,30 @@ func TestReleaseWorkflowUsesCurrentCIEntrypoints(t *testing.T) {
193193
}
194194
}
195195

196+
func TestReleaseWorkflowUsesReleaseTaggedDependencyImages(t *testing.T) {
197+
contents := string(readFile(t, repoPath(".github", "workflows", "release.yml")))
198+
199+
for _, want := range []string{
200+
`dataplane_image: ${{ steps.vars.outputs.dataplane_image }}`,
201+
`dashboard_image: ${{ steps.vars.outputs.dashboard_image }}`,
202+
`DATAPLANE_IMAGE: ${{ needs.metadata.outputs.dataplane_image }}`,
203+
`DASHBOARD_IMAGE: ${{ needs.metadata.outputs.dashboard_image }}`,
204+
} {
205+
if !strings.Contains(contents, want) {
206+
t.Fatalf("release workflow missing %q", want)
207+
}
208+
}
209+
210+
for _, unwanted := range []string{
211+
`DATAPLANE_IMAGE: ghcr.io/nantian-gw/dataplane:latest`,
212+
`DASHBOARD_IMAGE: ghcr.io/nantian-gw/dashboard:latest`,
213+
} {
214+
if strings.Contains(contents, unwanted) {
215+
t.Fatalf("release workflow must not pin dependency image to %q", unwanted)
216+
}
217+
}
218+
}
219+
196220
func TestSecurityScanWorkflowUsesExistingHelper(t *testing.T) {
197221
contents := string(readFile(t, repoPath(".github", "workflows", "security-scans.yml")))
198222
helperPath := repoPath("scripts", "ci", "run-security-scans.sh")

0 commit comments

Comments
 (0)