From 0eabd3ff4c09567de54416ebe0287588a4359671 Mon Sep 17 00:00:00 2001 From: Osama Salman Date: Wed, 7 Feb 2024 15:01:17 +0300 Subject: [PATCH] fix: clean release tags and release notes --- .../workflows/generator-draft-release.yaml | 24 +++++++++++++++++++ .github/workflows/generator-main.yaml | 1 + .releaserc.json | 12 ++-------- clean-release-tags.sh | 10 ++++++++ create-github-release.sh | 14 +++++++++++ get-latest-tag.sh | 7 ++++++ update-github-release.sh | 7 ------ 7 files changed, 58 insertions(+), 17 deletions(-) create mode 100755 clean-release-tags.sh create mode 100755 create-github-release.sh create mode 100755 get-latest-tag.sh delete mode 100755 update-github-release.sh diff --git a/.github/workflows/generator-draft-release.yaml b/.github/workflows/generator-draft-release.yaml index d92747e8..d9a67be8 100644 --- a/.github/workflows/generator-draft-release.yaml +++ b/.github/workflows/generator-draft-release.yaml @@ -7,6 +7,25 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + fetch-tags: true + - name: Clean release tags + run: ./clean-release-tags.sh + - name: Get latest tag + run: | + latest_tag=$(git show-ref -s "$(./get-latest-tag.sh)") + echo "LATEST_TAG=$latest_tag" >> $GITHUB_ENV + - name: Create tag + uses: actions/github-script@v5 + with: + github-token: ${{ secrets.GH_PAT }} + script: | + github.rest.git.createRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'refs/tags/v1.0.0', + sha: '${{ env.LATEST_TAG}}' + }) - name: Setup Node.js uses: actions/setup-node@v4 with: @@ -15,3 +34,8 @@ jobs: run: npm install - name: Create draft release run: npx semantic-release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Clean release tags + if: always() + run: ./clean-release-tags.sh diff --git a/.github/workflows/generator-main.yaml b/.github/workflows/generator-main.yaml index 11e6d071..10427a19 100644 --- a/.github/workflows/generator-main.yaml +++ b/.github/workflows/generator-main.yaml @@ -73,4 +73,5 @@ jobs: draft_release: if: ${{ github.event.inputs.production_release == 'true' }} needs: [ generate_sdk ] + secrets: inherit uses: ./.github/workflows/generator-draft-release.yaml diff --git a/.releaserc.json b/.releaserc.json index 1d3aba4b..24fbb786 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -39,6 +39,7 @@ [ "@semantic-release/release-notes-generator", { + "linkCompare": false, "preset": "conventionalcommits", "parserOpts": { "noteKeywords": [ @@ -61,19 +62,10 @@ "changelogFile": "CHANGELOG.md" } ], - [ - "@semantic-release/github", - { - "successComment": false, - "failComment": false, - "failTitle": false, - "draftRelease": true - } - ], [ "@semantic-release/exec", { - "successCmd": "./update-github-release.sh v${nextRelease.version}" + "successCmd": "./create-github-release.sh '${nextRelease.notes}'" } ] ] diff --git a/clean-release-tags.sh b/clean-release-tags.sh new file mode 100755 index 00000000..65e42f7b --- /dev/null +++ b/clean-release-tags.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +tags=("v1.0.0" "v1.0.1" "v1.1.0" "v2.0.0") + +for tag in "${tags[@]}"; do + if [ $(git tag -l "$tag") ]; then + git push origin --delete "$tag" + echo "Deleted $tag" + fi +done diff --git a/create-github-release.sh b/create-github-release.sh new file mode 100755 index 00000000..0f69c3b1 --- /dev/null +++ b/create-github-release.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +release_notes=$1 +echo "$release_notes" &> release-notes.txt +sed -i '1d' release-notes.txt + +previous_tag=$(./get-latest-tag.sh) +today="v$(date "+%Y%m%d")" + +echo "today: $today" + +git tag "$today" +git push --tags +gh release create "$today" --draft --generate-notes --latest --notes-file release-notes.txt --notes-start-tag "$previous_tag" --title "$today" diff --git a/get-latest-tag.sh b/get-latest-tag.sh new file mode 100755 index 00000000..97057afd --- /dev/null +++ b/get-latest-tag.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +git fetch --tags +tags=$(git tag -l "v*") +latest_tag=$(echo "$tags" | grep -E '^v[0-9]+$' | sort -Vr | head -n 1) + +echo "$latest_tag" diff --git a/update-github-release.sh b/update-github-release.sh deleted file mode 100755 index c5ae5c30..00000000 --- a/update-github-release.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -nextVersion=$1 -today=$(date "+%Y%m%d") -git tag v"$today" "$nextVersion" -git push --tags -gh release edit "$nextVersion" --title v"$today" --tag v"$today"