Draft new release #55
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Draft new release | |
on: | |
workflow_dispatch | |
jobs: | |
draft-new-release: | |
name: Draft a new release | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/heads/develop') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/develop-mpx') || startsWith(github.ref, 'refs/heads/hotfix-mpx') | |
steps: | |
- name: Checkout source branch | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set Node 16 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
# In order to make a commit, we need to initialize a user. | |
# You may choose to write something less generic here if you want, it doesn't matter functionality wise. | |
- name: Initialize mandatory git config | |
run: | | |
git config user.name "GitHub actions" | |
git config user.email [email protected] | |
# Calculate the next release version based on conventional semantic release | |
- name: Create release branch | |
id: create-release | |
run: | | |
source_branch_name=${GITHUB_REF##*/} | |
release_type=release | |
main_branch=master | |
branch_type='' | |
grep -q "hotfix/" <<< "${GITHUB_REF}" && release_type=hotfix-release | |
grep -q "mpx" <<< "${GITHUB_REF}" && branch_type=-mpx && main_branch=master-mpx | |
git fetch origin "$main_branch" | |
git fetch --tags origin | |
git merge "origin/$main_branch" | |
current_version=$(cat gradle.properties | grep "VERSION_NAME" | cut -d'=' -f2) | |
npm ci | |
npx standard-version --skip.commit --skip.tag --skip.changelog | |
new_version=$(cat gradle.properties | grep "VERSION_NAME" | cut -d'=' -f2) | |
git reset --hard | |
branch_name="${release_type}${branch_type}/${new_version}" | |
echo "Source branch for new release is $source_branch_name" | |
echo "Current version is $current_version" | |
echo "Release type is $release_type" | |
echo "New version is $new_version" | |
echo "New release branch name is $branch_name" | |
git checkout -b "$branch_name" | |
git push --set-upstream origin "$branch_name" | |
echo "::set-output name=source_branch_name::$source_branch_name" | |
echo "::set-output name=branch_name::$branch_name" | |
echo "::set-output name=new_version::$new_version" | |
echo "::set-output name=main_branch::$main_branch" | |
- name: Update changelog & bump version | |
id: finish-release | |
run: | | |
npm ci | |
npx standard-version | |
git add . && git commit --amend --no-edit | |
- name: Push new version in release branch & tag | |
run: | | |
git push --follow-tags | |
- name: Create pull request into main | |
uses: repo-sync/pull-request@v2 | |
with: | |
source_branch: ${{ steps.create-release.outputs.branch_name }} | |
destination_branch: ${{ steps.create-release.outputs.main_branch }} | |
github_token: ${{ secrets.PAT }} | |
pr_title: "chore(release): pulling ${{ steps.create-release.outputs.branch_name }} into ${{ steps.create-release.outputs.main_branch }}" | |
pr_body: ":crown: *An automated PR*" | |
pr_reviewer: 'itsdebs' |