From 202aed56e5e321d8695f0b8ea9925e6bc5529265 Mon Sep 17 00:00:00 2001 From: Jon Holderman Date: Sun, 28 Jul 2024 10:07:01 -0400 Subject: [PATCH] [JH] Add new workflow --- .github/workflows/sync-upstream-pr.yml | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/sync-upstream-pr.yml diff --git a/.github/workflows/sync-upstream-pr.yml b/.github/workflows/sync-upstream-pr.yml new file mode 100644 index 00000000..cf201bf5 --- /dev/null +++ b/.github/workflows/sync-upstream-pr.yml @@ -0,0 +1,51 @@ +name: Create Upstream PRs + +on: + schedule: + - cron: '0 0 * * *' + workflow_dispatch: + +jobs: + create_prs: + runs-on: ubuntu-latest + + steps: + - name: Checkout Forked Repository + uses: actions/checkout@v2 + with: + repository: jonholdermanE/it-tools + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Add Upstream Remote + run: git remote add upstream https://github.com/CorentinTh/it-tools.git + + - name: Fetch All PRs from Upstream + run: git fetch upstream '+refs/pull/*/head:refs/remotes/upstream-pr/*' + + - name: Create PRs in Forked Repository + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Fetch the list of open PRs from the upstream repository + prs=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ + https://api.github.com/repos/CorentinTh/it-tools/pulls?state=open) + + for pr in $(echo "$prs" | jq -r '.[] | @base64'); do + _jq() { + echo ${pr} | base64 --decode | jq -r ${1} + } + + pr_number=$(_jq '.number') + pr_title=$(_jq '.title') + pr_body=$(_jq '.body') + pr_user_login=$(_jq '.user.login') + + branch_name="pr-$pr_number" + git checkout -b $branch_name upstream-pr/$pr_number + git push origin $branch_name + + # Create a PR in the forked repository with the same title and body + curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -d "{\"title\":\"$pr_title\",\"body\":\"$pr_body\",\"head\":\"$branch_name\",\"base\":\"main\"}" \ + https://api.github.com/repos/YOUR-USERNAME/it-tools/pulls + done