diff --git a/.github/workflows/rebase-default-branch.yml b/.github/workflows/rebase-default-branch.yml new file mode 100644 index 0000000000..0270bc5f22 --- /dev/null +++ b/.github/workflows/rebase-default-branch.yml @@ -0,0 +1,59 @@ +# GitHub Actions Virtual Environments +# https://github.com/actions/virtual-environments/ + +# Rebases a pull request on the repo's default branch when the "rebase" label is added +# Note: you'll need to add a personal access token to your repo, `PERSONAL_ACCESS_TOKEN`. (`REBASE_PR_TOKEN`) +# Link: https://github.com/jessesquires/gh-workflows/blob/main/.github/workflows/rebase-default-branch.yml + +name: Rebase Pull Request + +on: + pull_request: + types: [ labeled ] + +env: + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + +jobs: + main: + if: ${{ contains(github.event.*.labels.*.name, 'rebase') }} + name: Rebase + runs-on: ubuntu-latest + steps: + - name: git checkout + uses: actions/checkout@v3 + with: + token: ${{ secrets.REBASE_PR_TOKEN }} + ref: ${{ github.event.pull_request.head.ref }} + fetch-depth: 0 + + # Link: https://httgp.com/signing-commits-in-github-actions/ + - name: Import bot's GPG key for signing commits + id: import-gpg + uses: crazy-max/ghaction-import-gpg@v4 + with: + gpg_private_key: ${{ secrets.BOT_GPG_PRIVATE_KEY }} + passphrase: ${{ secrets.BOT_GPG_PASSPHRASE }} + git_config_global: true + git_user_signingkey: true + git_commit_gpgsign: true + + - name: perform rebase + run: | + git config --global user.email "kevin.boulongne+bot@gmail.com" + git status + git pull + git checkout "$DEFAULT_BRANCH" + git status + git pull + git checkout "$GITHUB_HEAD_REF" + git rebase "$DEFAULT_BRANCH" + git push --force-with-lease + git status + + # Link: https://github.com/marketplace/actions/actions-ecosystem-remove-labels + - name: remove label + if: always() + uses: actions-ecosystem/action-remove-labels@v1 + with: + labels: rebase