diff --git a/.github/workflows/back-merge-handler.yml b/.github/workflows/back-merge-handler.yml new file mode 100644 index 0000000..0346f03 --- /dev/null +++ b/.github/workflows/back-merge-handler.yml @@ -0,0 +1,84 @@ +name: Back Merge handler + +on: + push: + branches: + - master + - stable + +jobs: + pr_master_to_stable: + runs-on: ubuntu-latest + if: github.ref_name == 'master' + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check if PR exists + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + prs=$(gh pr list \ + --repo "$GITHUB_REPOSITORY" \ + --json baseRefName,headRefName \ + --jq ' + map(select(.baseRefName == "stable" and .headRefName == "master")) + | length + ') + if ((prs > 0)); then + echo "Pull Request already exists" + echo "SKIP=true" >> $GITHUB_ENV + fi + + - name: Check if stable is ahead + run: | + commits=$(git rev-list origin/stable..origin/master --count) + if ((commits == 0)); then + echo "No diffs was found between branches" + echo "SKIP=true" >> $GITHUB_ENV + fi + + - name: Create Pull Request + if: env.SKIP != 'true' + run: gh pr create -B stable -H master --title '[GitHub Actions] Merge master -> stable' --label back-merge --body 'Autogenerated Pull Request for `back-merge` triggered by Github Actions' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + pr_stable_to_develop: + runs-on: ubuntu-latest + if: github.ref_name == 'stable' + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Check if PR exists + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + prs=$(gh pr list \ + --repo "$GITHUB_REPOSITORY" \ + --json baseRefName,headRefName \ + --jq ' + map(select(.baseRefName == "develop" and .headRefName == "stable")) + | length + ') + if ((prs > 0)); then + echo "Pull Request already exists" + echo "SKIP=true" >> $GITHUB_ENV + fi + + - name: Check if stable is ahead + run: | + commits=$(git rev-list origin/develop..origin/stable --count) + if ((commits == 0)); then + echo "No diffs was found between branches" + echo "SKIP=true" >> $GITHUB_ENV + fi + + - name: Create Pull Request + if: env.SKIP != 'true' + run: gh pr create -B develop -H stable --title '[GitHub Actions] Merge stable -> develop' --label back-merge --body 'Autogenerated Pull Request for `back-merge` triggered by Github Actions' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}