diff --git a/.github/workflows/back-merge-handler.yml b/.github/workflows/back-merge-handler.yml new file mode 100644 index 00000000..0346f030 --- /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 }} diff --git a/.github/workflows/make-prs-for-client-repos.yml b/.github/workflows/make-prs-for-client-repos.yml new file mode 100644 index 00000000..cc71bd5a --- /dev/null +++ b/.github/workflows/make-prs-for-client-repos.yml @@ -0,0 +1,60 @@ +name: Make PRs for OpenAPI and client repositories + +on: + workflow_dispatch: + inputs: + source_branch: + description: "Source branch" + default: "develop" + type: choice + required: true + options: + - develop + - master + - stable + target_branch: + description: "Target branch" + default: "master" + type: choice + required: true + options: + - develop + - master + - stable + +jobs: + python-webclient-pr: + runs-on: ubuntu-latest + steps: + - name: Create PR for Python WebClient Repo + run: gh pr create --base ${{ inputs.target_branch }} --head ${{ inputs.source_branch }} --title '[GitHub Actions] Merge ${{ inputs.source_branch }} -> ${{ inputs.target_branch }}' --label OpenAPI --body 'Autogenerated Pull Request triggered by Github Actions in OpenAPI repository' --repo regulaforensics/DocumentReader-web-python-client + env: + GITHUB_TOKEN: ${{ secrets.REGULA_GITHUB_PUSH_TOKEN }} + java-webclient-pr: + runs-on: ubuntu-latest + steps: + - name: Create PR for Java WebClient Repo + run: gh pr create --base ${{ inputs.target_branch }} --head ${{ inputs.source_branch }} --title '[GitHub Actions] Merge ${{ inputs.source_branch }} -> ${{ inputs.target_branch }}' --label OpenAPI --body 'Autogenerated Pull Request triggered by Github Actions in OpenAPI repository' --repo regulaforensics/DocumentReader-web-java-client + env: + GITHUB_TOKEN: ${{ secrets.REGULA_GITHUB_PUSH_TOKEN }} + js-webclient-pr: + runs-on: ubuntu-latest + steps: + - name: Create PR for JS WebClient Repo + run: gh pr create --base ${{ inputs.target_branch }} --head ${{ inputs.source_branch }} --title '[GitHub Actions] Merge ${{ inputs.source_branch }} -> ${{ inputs.target_branch }}' --label OpenAPI --body 'Autogenerated Pull Request triggered by Github Actions in OpenAPI repository' --repo regulaforensics/DocumentReader-web-js-client + env: + GITHUB_TOKEN: ${{ secrets.REGULA_GITHUB_PUSH_TOKEN }} + csharp-webclient-pr: + runs-on: ubuntu-latest + steps: + - name: Create PR for CSharp WebClient Repo + run: gh pr create --base ${{ inputs.target_branch }} --head ${{ inputs.source_branch }} --title '[GitHub Actions] Merge ${{ inputs.source_branch }} -> ${{ inputs.target_branch }}' --label OpenAPI --body 'Autogenerated Pull Request triggered by Github Actions in OpenAPI repository' --repo regulaforensics/DocumentReader-web-csharp-client + env: + GITHUB_TOKEN: ${{ secrets.REGULA_GITHUB_PUSH_TOKEN }} + openapi-pr: + runs-on: ubuntu-latest + steps: + - name: Create PR for OpenAPI Repo + run: gh pr create --base ${{ inputs.target_branch }} --head ${{ inputs.source_branch }} --title '[GitHub Actions] Merge ${{ inputs.source_branch }} -> ${{ inputs.target_branch }}' --label OpenAPI --body 'Autogenerated Pull Request triggered by Github Actions in OpenAPI repository' --repo regulaforensics/DocumentReader-web-openapi + env: + GITHUB_TOKEN: ${{ secrets.REGULA_GITHUB_PUSH_TOKEN }}