Skip to content

Commit 7f92418

Browse files
ci(release): only set latest release in github when latest (cherry-pick #24525 for 3.1) (#24685)
Signed-off-by: Alexandre Gaudreault <[email protected]> Co-authored-by: Alexandre Gaudreault <[email protected]>
1 parent f3d59b0 commit 7f92418

File tree

2 files changed

+45
-24
lines changed

2 files changed

+45
-24
lines changed

.github/workflows/release.yaml

Lines changed: 43 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,42 @@ jobs:
3232
quay_username: ${{ secrets.RELEASE_QUAY_USERNAME }}
3333
quay_password: ${{ secrets.RELEASE_QUAY_TOKEN }}
3434

35+
setup-variables:
36+
name: Setup Release Variables
37+
if: github.repository == 'argoproj/argo-cd'
38+
runs-on: ubuntu-22.04
39+
outputs:
40+
is_pre_release: ${{ steps.var.outputs.is_pre_release }}
41+
is_latest_release: ${{ steps.var.outputs.is_latest_release }}
42+
steps:
43+
- name: Checkout code
44+
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
45+
with:
46+
fetch-depth: 0
47+
token: ${{ secrets.GITHUB_TOKEN }}
48+
- name: Setup variables
49+
id: var
50+
run: |
51+
set -xue
52+
# Fetch all tag information
53+
git fetch --prune --tags --force
54+
55+
LATEST_RELEASE_TAG=$(git -c 'versionsort.suffix=-rc' tag --list --sort=version:refname | grep -v '-' | tail -n1)
56+
57+
PRE_RELEASE=false
58+
# Check if latest tag is a pre-release
59+
if echo ${{ github.ref_name }} | grep -E -- '-rc[0-9]+$';then
60+
PRE_RELEASE=true
61+
fi
62+
63+
IS_LATEST=false
64+
# Ensure latest release tag matches github.ref_name
65+
if [[ $LATEST_RELEASE_TAG == ${{ github.ref_name }} ]];then
66+
IS_LATEST=true
67+
fi
68+
echo "is_pre_release=$PRE_RELEASE" >> $GITHUB_OUTPUT
69+
echo "is_latest_release=$IS_LATEST" >> $GITHUB_OUTPUT
70+
3571
argocd-image-provenance:
3672
needs: [argocd-image]
3773
permissions:
@@ -50,15 +86,17 @@ jobs:
5086

5187
goreleaser:
5288
needs:
89+
- setup-variables
5390
- argocd-image
5491
- argocd-image-provenance
5592
permissions:
5693
contents: write # used for uploading assets
5794
if: github.repository == 'argoproj/argo-cd'
5895
runs-on: ubuntu-22.04
96+
env:
97+
GORELEASER_MAKE_LATEST: ${{ needs.setup-variables.outputs.is_latest_release }}
5998
outputs:
6099
hashes: ${{ steps.hash.outputs.hashes }}
61-
62100
steps:
63101
- name: Checkout code
64102
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
@@ -142,7 +180,7 @@ jobs:
142180
permissions:
143181
contents: write # Needed for release uploads
144182
outputs:
145-
hashes: ${{ steps.sbom-hash.outputs.hashes}}
183+
hashes: ${{ steps.sbom-hash.outputs.hashes }}
146184
if: github.repository == 'argoproj/argo-cd'
147185
runs-on: ubuntu-22.04
148186
steps:
@@ -221,6 +259,7 @@ jobs:
221259

222260
post-release:
223261
needs:
262+
- setup-variables
224263
- argocd-image
225264
- goreleaser
226265
- generate-sbom
@@ -229,6 +268,8 @@ jobs:
229268
pull-requests: write # Needed to create PR for VERSION update.
230269
if: github.repository == 'argoproj/argo-cd'
231270
runs-on: ubuntu-22.04
271+
env:
272+
TAG_STABLE: ${{ needs.setup-variables.outputs.is_latest_release }}
232273
steps:
233274
- name: Checkout code
234275
uses: actions/checkout@8410ad0602e1e429cee44a835ae9f77f654a6694 # v4.0.0
@@ -242,27 +283,6 @@ jobs:
242283
git config --global user.email '[email protected]'
243284
git config --global user.name 'CI'
244285
245-
- name: Check if tag is the latest version and not a pre-release
246-
run: |
247-
set -xue
248-
# Fetch all tag information
249-
git fetch --prune --tags --force
250-
251-
LATEST_TAG=$(git -c 'versionsort.suffix=-rc' tag --list --sort=version:refname | tail -n1)
252-
253-
PRE_RELEASE=false
254-
# Check if latest tag is a pre-release
255-
if echo $LATEST_TAG | grep -E -- '-rc[0-9]+$';then
256-
PRE_RELEASE=true
257-
fi
258-
259-
# Ensure latest tag matches github.ref_name & not a pre-release
260-
if [[ $LATEST_TAG == ${{ github.ref_name }} ]] && [[ $PRE_RELEASE != 'true' ]];then
261-
echo "TAG_STABLE=true" >> $GITHUB_ENV
262-
else
263-
echo "TAG_STABLE=false" >> $GITHUB_ENV
264-
fi
265-
266286
- name: Update stable tag to latest version
267287
run: |
268288
git tag -f stable ${{ github.ref_name }}

.goreleaser.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,14 @@ archives:
4949
- argocd-cli
5050
name_template: |-
5151
{{ .ProjectName }}-{{ .Os }}-{{ .Arch }}
52-
formats: [ binary ]
52+
formats: [binary]
5353

5454
checksum:
5555
name_template: 'cli_checksums.txt'
5656
algorithm: sha256
5757

5858
release:
59+
make_latest: '{{ .Env.GORELEASER_MAKE_LATEST }}'
5960
prerelease: auto
6061
draft: false
6162
header: |

0 commit comments

Comments
 (0)