From 249379ef0f5d996172cf0bfdeb457251cae93cd5 Mon Sep 17 00:00:00 2001 From: Arystan Date: Fri, 11 Oct 2024 20:19:19 +0500 Subject: [PATCH] tagpr --- .github/workflows/tagpr-on-label.yml | 30 +++++++++++++++++++ .github/workflows/tagpr.yml | 45 ++++++++++++++++++++++++++-- 2 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/tagpr-on-label.yml diff --git a/.github/workflows/tagpr-on-label.yml b/.github/workflows/tagpr-on-label.yml new file mode 100644 index 0000000..bb60e31 --- /dev/null +++ b/.github/workflows/tagpr-on-label.yml @@ -0,0 +1,30 @@ +name: tagpr-on-label +on: + pull_request: + types: [labeled, unlabeled] + paths: + - 'CHANGELOG.md' + branches: + - main + +jobs: + tagpr-on-label: + if: startsWith(github.head_ref, 'tagpr-from-') && (github.event.label.name == 'tagpr:minor' || github.event.label.name == 'tagpr:major') + runs-on: ubuntu-latest + steps: + - uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ vars.AMEGO_RELEASES_APP_ID }} + private-key: ${{ secrets.AMEGO_RELEASES_PRIVATE_KEY }} + - uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + ref: main + - name: Setup Git credentials + run: | + git config --global user.name 'amego-releases[bot]' + git config --global user.email '183133136+amego-releases[bot]@users.noreply.github.com>' + - uses: Songmu/tagpr@v1 + env: + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} diff --git a/.github/workflows/tagpr.yml b/.github/workflows/tagpr.yml index 77de98e..7fa01f6 100644 --- a/.github/workflows/tagpr.yml +++ b/.github/workflows/tagpr.yml @@ -4,10 +4,51 @@ on: branches: ["main"] jobs: tagpr: - permissions: write-all runs-on: ubuntu-latest steps: + - uses: actions/create-github-app-token@v1 + id: app-token + with: + app-id: ${{ vars.AMEGO_RELEASES_APP_ID }} + private-key: ${{ secrets.AMEGO_RELEASES_PRIVATE_KEY }} - uses: actions/checkout@v4 + with: + token: ${{ steps.app-token.outputs.token }} + - name: Setup Git credentials + run: | + git config --global user.name 'amego-releases[bot]' + git config --global user.email '183133136+amego-releases[bot]@users.noreply.github.com>' - uses: Songmu/tagpr@v1 + id: tagpr env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ steps.app-token.outputs.token }} + - name: Check native file changes and set ota minor label + run: | + if ! git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep -qE 'ios|android'; then + echo "No relevant files changed. Exiting job." + exit 0 + fi + + if [ ! -z "${{ steps.tagpr.outputs.pull_request.number }}" ]; then + PR_NUMBER="${{ steps.tagpr.outputs.pull_request.number }}" + else + PR_NUMBER=$(gh pr list --base main --label tagpr --state open --json number | jq -r '.[0].number') + fi + + if [ -z "$PR_NUMBER" ]; then + echo "No PR number found. Exiting job." + exit 0 + fi + + gh pr edit $PR_NUMBER --add-label "tagpr:minor" + + changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep -E 'ios|android' | sed 's/^/`\//' | sed 's/$/`/' | tr '\n' ', ' | sed 's/,$//') + comment_body="**tagpr:minor** tag is added, because the following native files are changed: $changed_files" + gh pr comment $PR_NUMBER --body "$comment_body" + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }}