4141 kubernetes-tests :
4242 name : Kubernetes Reporter Tests
4343 runs-on : ubuntu-latest
44+ needs : docker-merge
45+ if : ${{ always() && (github.event_name != 'pull_request' || needs.docker-merge.result == 'success') }}
46+ permissions :
47+ contents : read
48+ packages : read
4449 env :
4550 SCCACHE_GHA_ENABLED : " true"
4651 RUSTC_WRAPPER : " sccache"
@@ -62,12 +67,92 @@ jobs:
6267 chmod +x /tmp/kubectl
6368 sudo mv /tmp/kubectl /usr/local/bin/kubectl
6469 fi
65- - name : Test Kubernetes reporter with KinD
66- run : cargo test -p amber-compiler --all-features kubernetes_smoke_config_roundtrip -- --ignored --test-threads=1
67- - name : Test Kubernetes external slot routing with KinD
68- run : cargo test -p amber-compiler --all-features kubernetes_smoke_external_slot_routes_to_outside_service -- --ignored --test-threads=1
69- - name : Test Kubernetes export routing with KinD
70- run : cargo test -p amber-compiler --all-features kubernetes_smoke_export_routes_to_host -- --ignored --test-threads=1
70+ - name : Create shared KinD cluster
71+ shell : bash
72+ run : |
73+ set -euo pipefail
74+ cluster_name="amber-ci-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
75+ kubeconfig="${RUNNER_TEMP}/amber-kind-kubeconfig"
76+ kind create cluster --name "$cluster_name" --kubeconfig "$kubeconfig" --wait 120s
77+ echo "AMBER_TEST_KIND_CLUSTER_NAME=${cluster_name}" >> "$GITHUB_ENV"
78+ echo "AMBER_TEST_KIND_KUBECONFIG=${kubeconfig}" >> "$GITHUB_ENV"
79+ - name : Compute image registries
80+ if : github.event_name == 'pull_request'
81+ id : registry
82+ shell : bash
83+ run : |
84+ set -euo pipefail
85+ owner_lc="$(printf '%s' '${{ github.repository_owner }}' | tr '[:upper:]' '[:lower:]')"
86+ ci_registry="ghcr.io/${owner_lc}"
87+ code_registry="$(jq -r '.registry' docker/images.json)"
88+ if [ -z "$code_registry" ] || [ "$code_registry" = "null" ]; then
89+ echo "docker/images.json registry is missing" >&2
90+ exit 1
91+ fi
92+ code_registry="${code_registry%/}"
93+ echo "CI_IMAGE_REGISTRY=${ci_registry}" >> "$GITHUB_ENV"
94+ echo "CODE_IMAGE_REGISTRY=${code_registry}" >> "$GITHUB_ENV"
95+ - name : Compute semver tag metadata
96+ if : github.event_name == 'pull_request'
97+ id : version_tags
98+ shell : bash
99+ run : |
100+ set -euo pipefail
101+ json="$(cargo run -q -p amber-images --bin version_tags -- docker/images.json)"
102+ {
103+ echo "json<<EOF"
104+ echo "$json"
105+ echo "EOF"
106+ } >> "$GITHUB_OUTPUT"
107+ - uses : docker/login-action@v3
108+ if : github.event_name == 'pull_request'
109+ with :
110+ registry : ghcr.io
111+ username : ${{ github.actor }}
112+ password : ${{ secrets.GITHUB_TOKEN }}
113+ - name : Pull and retag images for tests
114+ if : github.event_name == 'pull_request'
115+ shell : bash
116+ run : |
117+ set -euo pipefail
118+ version_tags_json='${{ steps.version_tags.outputs.json }}'
119+ while IFS= read -r spec; do
120+ [ -z "$spec" ] && continue
121+ name="$(jq -r '.name' <<< "$spec")"
122+ version="$(jq -r '.version' <<< "$spec")"
123+ runtime_tag="$(jq -r '.runtime_tag' <<< "$spec")"
124+ src="${CI_IMAGE_REGISTRY}/${name}:${GITHUB_SHA}"
125+ docker pull "$src"
126+ docker tag "$src" "${CODE_IMAGE_REGISTRY}/${name}:${version}"
127+ if [ "$runtime_tag" != "$version" ]; then
128+ docker tag "$src" "${CODE_IMAGE_REGISTRY}/${name}:${runtime_tag}"
129+ fi
130+ if [ "$name" = "amber-helper" ]; then
131+ docker tag "$src" "amber-helper:e2e"
132+ fi
133+ done < <(jq -c '.images[]' <<< "$version_tags_json")
134+ - name : Run Kubernetes smoke tests (prebuilt images)
135+ if : github.event_name == 'pull_request'
136+ env :
137+ AMBER_TEST_USE_PREBUILT_IMAGES : " 1"
138+ run : |
139+ cargo test -p amber-compiler --all-features kubernetes_smoke_config_roundtrip -- --ignored --test-threads=1
140+ cargo test -p amber-compiler --all-features kubernetes_smoke_external_slot_routes_to_outside_service -- --ignored --test-threads=1
141+ cargo test -p amber-compiler --all-features kubernetes_smoke_export_routes_to_host -- --ignored --test-threads=1
142+ - name : Run Kubernetes smoke tests
143+ if : github.event_name != 'pull_request'
144+ run : |
145+ cargo test -p amber-compiler --all-features kubernetes_smoke_config_roundtrip -- --ignored --test-threads=1
146+ cargo test -p amber-compiler --all-features kubernetes_smoke_external_slot_routes_to_outside_service -- --ignored --test-threads=1
147+ cargo test -p amber-compiler --all-features kubernetes_smoke_export_routes_to_host -- --ignored --test-threads=1
148+ - name : Delete shared KinD cluster
149+ if : always()
150+ shell : bash
151+ run : |
152+ set -euo pipefail
153+ if [ -n "${AMBER_TEST_KIND_CLUSTER_NAME:-}" ]; then
154+ kind delete cluster --name "${AMBER_TEST_KIND_CLUSTER_NAME}" --kubeconfig "${AMBER_TEST_KIND_KUBECONFIG}"
155+ fi
71156
72157 image-matrix :
73158 name : Image Matrix
@@ -109,7 +194,7 @@ jobs:
109194 matrix : ${{ fromJSON(needs.image-matrix.outputs.build_matrix) }}
110195 steps :
111196 - uses : actions/checkout@v5
112- - name : Compute image registry (lowercase owner for GHCR)
197+ - name : Compute image registry
113198 id : registry
114199 shell : bash
115200 run : |
@@ -149,7 +234,7 @@ jobs:
149234 packages : write
150235 steps :
151236 - uses : actions/checkout@v5
152- - name : Compute image registry (lowercase owner for GHCR)
237+ - name : Compute image registry
153238 id : registry
154239 shell : bash
155240 run : |
0 commit comments