From 031475ad3ade21628bd3e094583848408949c1a1 Mon Sep 17 00:00:00 2001 From: Luong Vo Date: Mon, 6 Nov 2023 10:44:32 +0700 Subject: [PATCH] [#525] Define create_release_pr workflow to automate Release PR creating --- .../workflows/config/changelog-release.json | 35 ++++++++++ .github/workflows/create_release_pr.yml | 66 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 .github/workflows/config/changelog-release.json create mode 100644 .github/workflows/create_release_pr.yml diff --git a/.github/workflows/config/changelog-release.json b/.github/workflows/config/changelog-release.json new file mode 100644 index 000000000..34c629417 --- /dev/null +++ b/.github/workflows/config/changelog-release.json @@ -0,0 +1,35 @@ +{ + "categories": [ + { + "title": "## โœจ Features", + "labels": [ + "type : feature" + ], + "empty_content": "N/A" + }, + { + "title": "## ๐Ÿ› Bug fixes", + "labels": [ + "type : bug" + ], + "empty_content": "N/A" + }, + { + "title": "## ๐Ÿงน Chores", + "labels": [ + "type : chore" + ], + "empty_content": "N/A" + }, + { + "title": "## Others", + "exclude_labels": [ + "type : feature", + "type : bug", + "type : chore", + "type : release" + ] + } + ], + "max_pull_requests": 200 +} diff --git a/.github/workflows/create_release_pr.yml b/.github/workflows/create_release_pr.yml new file mode 100644 index 000000000..3e53718d8 --- /dev/null +++ b/.github/workflows/create_release_pr.yml @@ -0,0 +1,66 @@ +name: Create the Release pull request + +on: + workflow_dispatch: + +jobs: + create_release_pr: + name: Create the Release pull request + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout the latest code + uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Read the current version + id: version + uses: christian-draeger/read-properties@1.1.1 + with: + path: "version.properties" + properties: "templateScriptVersion" + + - name: Find HEAD commit + id: head + run: echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT + + - name: Build changelog + id: changelog + uses: mikepenz/release-changelog-builder-action@v4 + with: + configuration: ".github/workflows/config/changelog-release.json" + # Listing PRs from the last tag to the HEAD commit + toTag: ${{ steps.head.outputs.sha }} + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Create the Release pull request + env: + GH_TOKEN: ${{ github.token }} + run: | + VERSION=${{ steps.version.outputs.templateScriptVersion }} + BASE_BRANCH=main + HEAD_BRANCH=release/$VERSION + + # Fetch milestone info + gh extension install valeriobelli/gh-milestone + MILESTONE=$VERSION + MILESTONE_URL=$(gh milestone list --query $MILESTONE --json url --jq ".[0].url") + + # Create the release branch + git checkout -b $HEAD_BRANCH + git push origin $HEAD_BRANCH + + # Create the pull request + gh pr create \ + --base $BASE_BRANCH \ + --head $HEAD_BRANCH \ + --assignee "bot-nimble" \ + --title "Release - $VERSION" \ + --label 'type : release' \ + --milestone $MILESTONE \ + --body "$MILESTONE_URL + + ${{ steps.changelog.outputs.changelog }}" \