@@ -15,29 +15,58 @@ concurrency:
1515
1616permissions : {}
1717
18- env :
19- # Image repository configuration - can be overridden in forks via repository variables
20- IMAGE_REGISTRY : ${{ vars.IMAGE_REGISTRY || 'quay.io' }}
21- IMAGE_NAMESPACE : ${{ vars.IMAGE_NAMESPACE || 'argoproj' }}
22- IMAGE_REPOSITORY : ${{ vars.IMAGE_REPOSITORY || 'argocd' }}
23- GHCR_REGISTRY : ${{ vars.GHCR_REGISTRY || 'ghcr.io' }}
24- GHCR_NAMESPACE : ${{ vars.GHCR_NAMESPACE || 'argoproj/argo-cd' }}
25- GHCR_REPOSITORY : ${{ vars.GHCR_REPOSITORY || 'argocd' }}
26-
2718jobs :
2819 set-vars :
2920 permissions :
3021 contents : read
31- if : github.repository == 'argoproj/argo-cd' || (vars.IMAGE_NAMESPACE && vars.IMAGE_NAMESPACE != 'argoproj')
22+ # Always run to calculate variables - other jobs check outputs
3223 runs-on : ubuntu-22.04
3324 outputs :
3425 image-tag : ${{ steps.image.outputs.tag}}
3526 platforms : ${{ steps.platforms.outputs.platforms }}
27+ image_registry : ${{ steps.image.outputs.image_registry }}
28+ image_namespace : ${{ steps.image.outputs.image_namespace }}
29+ image_repository : ${{ steps.image.outputs.image_repository }}
30+ quay_image_name : ${{ steps.image.outputs.quay_image_name }}
31+ docker_image_name : ${{ steps.image.outputs.docker_image_name }}
32+ ghcr_image_name : ${{ steps.image.outputs.ghcr_image_name }}
33+ ghcr_provenance_image : ${{ steps.image.outputs.ghcr_provenance_image }}
3634 steps :
3735 - uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
3836
39- - name : Set image tag for ghcr
40- run : echo "tag=$(cat ./VERSION)-${GITHUB_SHA::8}" >> $GITHUB_OUTPUT
37+ - name : Set image tag and names
38+ run : |
39+ # Calculate image tag
40+ TAG="$(cat ./VERSION)-${GITHUB_SHA::8}"
41+ echo "tag=$TAG" >> $GITHUB_OUTPUT
42+
43+ # Calculate image names with defaults
44+ IMAGE_REGISTRY="${{ vars.IMAGE_REGISTRY || 'quay.io' }}"
45+ IMAGE_NAMESPACE="${{ vars.IMAGE_NAMESPACE || 'argoproj' }}"
46+ IMAGE_REPOSITORY="${{ vars.IMAGE_REPOSITORY || 'argocd' }}"
47+ GHCR_REGISTRY="${{ vars.GHCR_REGISTRY || 'ghcr.io' }}"
48+ GHCR_NAMESPACE="${{ vars.GHCR_NAMESPACE || 'argoproj/argo-cd' }}"
49+ GHCR_REPOSITORY="${{ vars.GHCR_REPOSITORY || 'argocd' }}"
50+
51+ echo "image_registry=$IMAGE_REGISTRY" >> $GITHUB_OUTPUT
52+ echo "image_namespace=$IMAGE_NAMESPACE" >> $GITHUB_OUTPUT
53+ echo "image_repository=$IMAGE_REPOSITORY" >> $GITHUB_OUTPUT
54+
55+ # Construct image names based on registry type
56+ if [[ "$IMAGE_REGISTRY" == "quay.io" ]]; then
57+ echo "quay_image_name=$IMAGE_REGISTRY/$IMAGE_NAMESPACE/$IMAGE_REPOSITORY:latest" >> $GITHUB_OUTPUT
58+ echo "docker_image_name=" >> $GITHUB_OUTPUT
59+ elif [[ "$IMAGE_REGISTRY" == "docker.io" ]]; then
60+ echo "quay_image_name=" >> $GITHUB_OUTPUT
61+ echo "docker_image_name=$IMAGE_REGISTRY/$IMAGE_NAMESPACE/$IMAGE_REPOSITORY:latest" >> $GITHUB_OUTPUT
62+ else
63+ # For other registries, use quay parameter
64+ echo "quay_image_name=$IMAGE_REGISTRY/$IMAGE_NAMESPACE/$IMAGE_REPOSITORY:latest" >> $GITHUB_OUTPUT
65+ echo "docker_image_name=" >> $GITHUB_OUTPUT
66+ fi
67+
68+ echo "ghcr_image_name=$GHCR_REGISTRY/$GHCR_NAMESPACE/$GHCR_REPOSITORY:$TAG" >> $GITHUB_OUTPUT
69+ echo "ghcr_provenance_image=$GHCR_REGISTRY/$GHCR_NAMESPACE/$GHCR_REPOSITORY" >> $GITHUB_OUTPUT
4170 id : image
4271
4372 - name : Determine image platforms to use
5786 contents : read
5887 packages : write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
5988 id-token : write # for creating OIDC tokens for signing.
60- if : ${{ (github.repository == 'argoproj/argo-cd' || (vars.IMAGE_NAMESPACE && vars.IMAGE_NAMESPACE != 'argoproj') ) && github.event_name != 'push' }}
89+ if : ${{ (github.repository == 'argoproj/argo-cd' || needs.set- vars.outputs.image_namespace != 'argoproj') && github.event_name != 'push' }}
6190 uses : ./.github/workflows/image-reuse.yaml
6291 with :
6392 # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations)
@@ -72,11 +101,12 @@ jobs:
72101 contents : read
73102 packages : write # for pushing packages to GHCR, which is used by cd.apps.argoproj.io to avoid polluting Quay with tags
74103 id-token : write # for creating OIDC tokens for signing.
75- if : ${{ (github.repository == 'argoproj/argo-cd' || (vars.IMAGE_NAMESPACE && vars.IMAGE_NAMESPACE != 'argoproj') ) && github.event_name == 'push' }}
104+ if : ${{ (github.repository == 'argoproj/argo-cd' || needs.set- vars.outputs.image_namespace != 'argoproj') && github.event_name == 'push' }}
76105 uses : ./.github/workflows/image-reuse.yaml
77106 with :
78- quay_image_name : ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ env.IMAGE_REPOSITORY }}:latest
79- ghcr_image_name : ${{ env.GHCR_REGISTRY }}/${{ env.GHCR_NAMESPACE }}/${{ env.GHCR_REPOSITORY }}:${{ needs.set-vars.outputs.image-tag }}
107+ quay_image_name : ${{ needs.set-vars.outputs.quay_image_name }}
108+ docker_image_name : ${{ needs.set-vars.outputs.docker_image_name }}
109+ ghcr_image_name : ${{ needs.set-vars.outputs.ghcr_image_name }}
80110 # Note: cannot use env variables to set go-version (https://docs.github.com/en/actions/using-workflows/reusing-workflows#limitations)
81111 # renovate: datasource=golang-version packageName=golang
82112 go-version : 1.25.3
@@ -90,16 +120,17 @@ jobs:
90120
91121 build-and-publish-provenance : # Push attestations to GHCR, latest image is polluting quay.io
92122 needs :
123+ - set-vars
93124 - build-and-publish
94125 permissions :
95126 actions : read # for detecting the Github Actions environment.
96127 id-token : write # for creating OIDC tokens for signing.
97128 packages : write # for uploading attestations. (https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#known-issues)
98- if : ${{ (github.repository == 'argoproj/argo-cd' || (vars.IMAGE_NAMESPACE && vars.IMAGE_NAMESPACE != 'argoproj') ) && github.event_name == 'push' }}
129+ if : ${{ (github.repository == 'argoproj/argo-cd' || needs.set- vars.outputs.image_namespace != 'argoproj') && github.event_name == 'push' }}
99130 # Must be refernced by a tag. https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/container/README.md#referencing-the-slsa-generator
100131 uses : slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.1.0
101132 with :
102- image : ${{ env.GHCR_REGISTRY }}/${{ env.GHCR_NAMESPACE }}/${{ env.GHCR_REPOSITORY }}
133+ image : ${{ needs.set-vars.outputs.ghcr_provenance_image }}
103134 digest : ${{ needs.build-and-publish.outputs.image-digest }}
104135 registry-username : ${{ github.actor }}
105136 secrets :
0 commit comments