Skip to content

Finish release [release/v.4.8.1] #202

Finish release [release/v.4.8.1]

Finish release [release/v.4.8.1] #202

name: Finish release
run-name: ${{ github.event.ref_type == 'branch' && contains(github.event.ref, 'feature/') && 'Delete feature' || 'Finish' }} release [${{ github.event.ref_type == 'branch' && (contains(github.event.ref, 'release/') || contains(github.event.ref, 'hotfix/') || contains(github.event.ref, 'feature/')) && github.event.ref || 'skipped intentionally - not triggered by deletion of release/hotfix branch' }}]
on: delete
jobs:
finish_release:
name: Finish release
runs-on: ubuntu-latest
if: ${{ github.event.ref_type == 'branch' && (contains(github.event.ref, 'release/') || contains(github.event.ref, 'hotfix/')) }}
steps:
- name: Get release type
id: get_release_type
run: |
if [[ "${{ contains(github.event.ref, 'release/') }}" == "true" ]]; then
echo "value=release" >> $GITHUB_OUTPUT
else
echo "value=hotfix" >> $GITHUB_OUTPUT
fi
- name: Get release tag name
id: get_release_tag_name
run: |
branchName="${{ github.event.ref }}"
tagName=${branchName##*/}
echo "value=$tagName" >> $GITHUB_OUTPUT
- uses: actions/checkout@v4
with:
token: ${{ secrets.CI_TOKEN }}
- name: Prepare git
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git fetch --all && git pull
- name: Find open pull requests
id: find_open_pull_requests
run: |
openPullRequests=$(gh pr list --head ${{ steps.get_release_type.outputs.value }}/${{ steps.get_release_tag_name.outputs.value }} --state open --json id -q '.[] | length')
if [[ -z "$openPullRequests" ]]; then openPullRequests="0"; fi
echo "value=$openPullRequests" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Get release title
id: get_release_title
run: |
if [[ '${{ steps.get_release_type.outputs.value }}' == 'release' ]]; then
echo "value=Release ${{ steps.get_release_tag_name.outputs.value }}" >> $GITHUB_OUTPUT
else
echo "value=Hotfix ${{ steps.get_release_tag_name.outputs.value }}" >> $GITHUB_OUTPUT
fi
- name: Finalize release if no open pull requests
id: finalize_release
if: ${{ steps.find_open_pull_requests.outputs.value == '0' }}
run: |
lastPullRequest=$(gh pr list -s closed --limit 1 --base main --head ${{ steps.get_release_type.outputs.value }}/${{ steps.get_release_tag_name.outputs.value }} --json number -q .[0].number)
pullRequestState=$(gh pr view $lastPullRequest --json state -q .state)
mergeCommit=$(gh pr view $lastPullRequest --json mergeCommit -q .mergeCommit.oid)
if [[ "$pullRequestState" == "MERGED" ]]; then
echo "::notice::Pull request has been merged. Finalizing release."
git tag ${{ steps.get_release_tag_name.outputs.value }} $mergeCommit -m "${{ steps.get_release_title.outputs.value }}" --force
git push --force origin ${{ steps.get_release_tag_name.outputs.value }}
# uncomment update flag variables and overwrite node-installer.sh in release
sed -i "s/^# \(VAR_.*_UPDATE=\)/\1/" node-installer.sh
shasum -a 256 ./node-installer.sh | cut -d ' ' -f 1 > ./checksum.txt
gh release upload ${{ steps.get_release_tag_name.outputs.value }} node-installer.sh --clobber
gh release upload ${{ steps.get_release_tag_name.outputs.value }} checksum.txt --clobber
gh release edit ${{ steps.get_release_tag_name.outputs.value }} --prerelease=false --draft=false --latest
elif [[ "$pullRequestState" == "CLOSED" ]]; then
echo "::notice::Pull request has been closed (unmerged). Deleting release."
gh release delete ${{ steps.get_release_tag_name.outputs.value }}
git push --delete origin ${{ steps.get_release_tag_name.outputs.value }}
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
delete_feature_release:
name: Delete feature release
runs-on: ubuntu-latest
if: ${{ github.event.ref_type == 'branch' && contains(github.event.ref, 'feature/') }}
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.CI_TOKEN }}
- name: Delete release
id: delete_release
run: |
branchName="${{ github.event.ref }}"
tagName=${branchName##*/}-latest
echo "::notice::Feature branch has been deleted. Deleting corresponding release."
gh release delete $tagName
git push --delete origin $tagName
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}