From 2c905074c22afffe8ac8e54ee968e4da587e0640 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Tue, 30 Jul 2024 13:39:13 +0300 Subject: [PATCH 1/8] chore: add prerelease flag to release.yaml and build.sh --- .github/workflows/release.yaml | 1 + scripts/build.sh | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index eb8c1e2..b43415d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -73,6 +73,7 @@ jobs: with: release_name: ${{ steps.version.outputs.version }} tag_name: ${{ github.ref }} + prerelease: ${{ contains(github.ref, 'rc') }} # Release candidates are marked as pre-releases - name: Upload Helm Release Asset uses: actions/upload-release-asset@v1 diff --git a/scripts/build.sh b/scripts/build.sh index 7f8b1a5..dee49a5 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -40,5 +40,10 @@ else VERSION=$(../scripts/version.sh) BASE=ghcr.io/coder/coder-logstream-kube IMAGE=$BASE:$VERSION - docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t "$IMAGE" -t $BASE:latest --push . + # if version contains "rc" skip pushing to latest + if [[ $VERSION == *"rc"* ]]; then + docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t "$IMAGE" --push . + else + docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t "$IMAGE" -t $BASE:latest --push . + fi fi From 181afd45b8fc9c05c9caf74c1ba57da80e63e15f Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Tue, 30 Jul 2024 13:48:40 +0300 Subject: [PATCH 2/8] replace deprecated actions --- .github/workflows/release.yaml | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index b43415d..98f9d80 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -65,22 +65,9 @@ jobs: gsutil -h "Cache-Control:no-cache,max-age=0" cp build/helm/${version}.tgz gs://helm.coder.com/logstream-kube gsutil -h "Cache-Control:no-cache,max-age=0" cp build/helm/index.yaml gs://helm.coder.com/logstream-kube - - name: Create Release - uses: actions/create-release@v1 - id: create_release - env: - GITHUB_TOKEN: ${{ github.token }} - with: - release_name: ${{ steps.version.outputs.version }} - tag_name: ${{ github.ref }} - prerelease: ${{ contains(github.ref, 'rc') }} # Release candidates are marked as pre-releases - - - name: Upload Helm Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} + - name: Create and upload release + uses: softprops/action-gh-release@v2 with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: build/${{ steps.version.outputs.version }}.tgz - asset_name: helm.tar.gz - asset_content_type: application/gzip + token: ${{ github.token }} + files: build/${{ steps.version.outputs.version }}.tgz + prerelease: ${{ contains(github.ref, 'rc') }} From 13c6cdc56046ce974acb28d4ab41fba3daf14068 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Tue, 30 Jul 2024 13:53:53 +0300 Subject: [PATCH 3/8] generate release notes --- .github/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 98f9d80..ba11061 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -71,3 +71,4 @@ jobs: token: ${{ github.token }} files: build/${{ steps.version.outputs.version }}.tgz prerelease: ${{ contains(github.ref, 'rc') }} + generate_release_notes: true From 20a8777cf1f3411458142ac043cf5932448bb4f4 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Tue, 30 Jul 2024 17:38:19 +0300 Subject: [PATCH 4/8] specify tag_name This should handle uploading asset to existing release when releases are created manually. --- .github/workflows/release.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ba11061..97f9021 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -69,6 +69,7 @@ jobs: uses: softprops/action-gh-release@v2 with: token: ${{ github.token }} + tag_name: ${{ github.ref_name }} files: build/${{ steps.version.outputs.version }}.tgz prerelease: ${{ contains(github.ref, 'rc') }} generate_release_notes: true From 2125e4a82de1d1c123cf5615ccb89645915ab92b Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 31 Jul 2024 12:32:51 +0300 Subject: [PATCH 5/8] refactor to use `gh release create` --- .github/workflows/release.yaml | 25 ++++++++++++++++++------- scripts/build.sh | 2 +- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 97f9021..525ffc7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -66,10 +66,21 @@ jobs: gsutil -h "Cache-Control:no-cache,max-age=0" cp build/helm/index.yaml gs://helm.coder.com/logstream-kube - name: Create and upload release - uses: softprops/action-gh-release@v2 - with: - token: ${{ github.token }} - tag_name: ${{ github.ref_name }} - files: build/${{ steps.version.outputs.version }}.tgz - prerelease: ${{ contains(github.ref, 'rc') }} - generate_release_notes: true + run: | + set -euo pipefail + version=${{ steps.version.outputs.version }} + + if gh release view $version; then + echo "Release $version already exists" + exit 0 + else + echo "Creating release $version" + # if version contains -rc, publish as a pre-release and not latest + if [[ $version == *-rc* ]]; then + gh release create $version -t $version --generate-notes --prerelease --latest=false --verify-tag build/${version}.tgz + else + gh release create $version -t $version --generate-notes --verify-tag build/${version}.tgz + fi + fi + env: + GITHUB_TOKEN: ${{ github.token }} diff --git a/scripts/build.sh b/scripts/build.sh index dee49a5..a17eb0b 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -33,7 +33,7 @@ fi # Ensure the builder is bootstrapped and ready to use docker buildx inspect --bootstrap &>/dev/null -# Build +# Build and push the image if [ "$CI" = "false" ]; then docker buildx build --platform linux/"$current" -t coder-logstream-kube --load . else From ff82a7bc73f8cd25e303efcfd949b03ad74c39e0 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 31 Jul 2024 12:43:50 +0300 Subject: [PATCH 6/8] use asset name to match existing behaviour. --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 525ffc7..c50788d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -77,9 +77,9 @@ jobs: echo "Creating release $version" # if version contains -rc, publish as a pre-release and not latest if [[ $version == *-rc* ]]; then - gh release create $version -t $version --generate-notes --prerelease --latest=false --verify-tag build/${version}.tgz + gh release create $version -t $version --generate-notes --prerelease --latest=false --verify-tag build/${version}.tgz#helm.tar.gz else - gh release create $version -t $version --generate-notes --verify-tag build/${version}.tgz + gh release create $version -t $version --generate-notes --verify-tag build/${version}.tgz#helm.tar.gz fi fi env: From 7ade03cfdcc64e448092f4cd9b89bd17ad5cda7d Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 31 Jul 2024 14:58:21 +0300 Subject: [PATCH 7/8] makes sure we can run non-interactively in CI --- .github/workflows/release.yaml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c50788d..af5bd1b 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -70,17 +70,18 @@ jobs: set -euo pipefail version=${{ steps.version.outputs.version }} - if gh release view $version; then + # check if release already exists and match the version + if [[ $(gh release view $version --json name -q '.name' | cat) == $version ]]; then echo "Release $version already exists" exit 0 + fi + + echo "Creating release $version" + # if version contains -rc, publish as a pre-release and don't set as latest + if [[ $version == *-rc* ]]; then + gh release create $version -t $version --generate-notes --prerelease --latest=false --verify-tag build/${version}.tgz#helm.tar.gz else - echo "Creating release $version" - # if version contains -rc, publish as a pre-release and not latest - if [[ $version == *-rc* ]]; then - gh release create $version -t $version --generate-notes --prerelease --latest=false --verify-tag build/${version}.tgz#helm.tar.gz - else - gh release create $version -t $version --generate-notes --verify-tag build/${version}.tgz#helm.tar.gz - fi + gh release create $version -t $version --generate-notes --verify-tag build/${version}.tgz#helm.tar.gz fi env: GITHUB_TOKEN: ${{ github.token }} From 8dede441baab8a2efde41498487ae5df0db35b75 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 31 Jul 2024 15:00:18 +0300 Subject: [PATCH 8/8] cleanup --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index af5bd1b..52e11b4 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -79,9 +79,9 @@ jobs: echo "Creating release $version" # if version contains -rc, publish as a pre-release and don't set as latest if [[ $version == *-rc* ]]; then - gh release create $version -t $version --generate-notes --prerelease --latest=false --verify-tag build/${version}.tgz#helm.tar.gz + gh release create $version -t $version --generate-notes --prerelease --latest=false --verify-tag build/${version}.tgz#helm.tar.gz else - gh release create $version -t $version --generate-notes --verify-tag build/${version}.tgz#helm.tar.gz + gh release create $version -t $version --generate-notes --verify-tag build/${version}.tgz#helm.tar.gz fi env: GITHUB_TOKEN: ${{ github.token }}