From 2d36249dbbec3726cc772a044c8b68895b27973a Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 25 Apr 2023 16:51:21 -0400 Subject: [PATCH] Fix split up actions (#141) --- .github/workflows/automerge_dependabot.yml | 35 ++++++++++++++++++++-- .github/workflows/ci.yml | 7 ++++- .github/workflows/draft_release.yml | 22 ++++++-------- .github/workflows/pull_request.yml | 23 ++++++++++++++ 4 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/pull_request.yml diff --git a/.github/workflows/automerge_dependabot.yml b/.github/workflows/automerge_dependabot.yml index e54eabc..a79866c 100644 --- a/.github/workflows/automerge_dependabot.yml +++ b/.github/workflows/automerge_dependabot.yml @@ -2,7 +2,7 @@ name: Auto-merge Dependabot PRs on: workflow_run: - workflows: [ "OpenInv CI" ] + workflows: [ "Pull Request" ] types: [ completed ] jobs: @@ -12,15 +12,44 @@ jobs: && github.event.workflow_run.conclusion == 'success'" runs-on: ubuntu-latest steps: + # Note: this is directly from GitHub's example for using data from a triggering workflow: + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow + - name: 'Download artifact' + uses: actions/github-script@v6 + with: + script: | + let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => { + return artifact.name == "pr_number" + })[0]; + let download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + let fs = require('fs'); + fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr_number.zip`, Buffer.from(download.data)); + + # This might be a useless use of cat, but I'm not sure what shell Actions is going to be running. + - name: Add Pull Number Variable + run: |- + unzip pr_number.zip + echo "PR_NUMBER=$(cat pr_number)" >> "$GITHUB_ENV" + - name: Approve uses: hmarr/auto-approve-action@v3.2.1 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - pull-request-number: "${{ github.event.workflow_run.event.pull_request.id }}" + pull-request-number: "${{ env.PR_NUMBER }}" - name: Merge uses: pascalgn/automerge-action@v0.15.6 env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" MERGE_LABELS: "dependencies,java" MERGE_METHOD: "squash" - PULL_REQUEST: "${{ github.event.workflow_run.event.pull_request.id }}" + PULL_REQUEST: "${{ env.PR_NUMBER }}" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62cbfa2..e961911 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,12 @@ name: OpenInv CI on: push: - pull_request: + branches: + - '**' + tags-ignore: + - '**' + # Enable running CI via other Actions, i.e. for drafting releases and handling PRs. + workflow_call: jobs: build: diff --git a/.github/workflows/draft_release.yml b/.github/workflows/draft_release.yml index a3ffdcd..bfce677 100644 --- a/.github/workflows/draft_release.yml +++ b/.github/workflows/draft_release.yml @@ -1,15 +1,16 @@ name: Draft Github Release on: - workflow_run: - workflows: [ "OpenInv CI" ] - types: [ completed ] + push: + tags: + - '**' jobs: - draft_release: - if: "github.event.workflow_run.event == 'push' - && github.event.workflow_run.conclusion == 'success' - && startsWith(github.event.workflow_run.event.push.ref, 'refs/tags/')" + run-ci: + runs-on: ubuntu-latest + uses: Jikoo/OpenInv/.github/workflows/ci.yml@master + draft-release: + needs: [ run-ci ] runs-on: ubuntu-latest steps: # Fetch all history - used to assemble changelog. @@ -21,15 +22,10 @@ jobs: run: bash ./scripts/set_release_env.sh - name: Download Artifact - # Unfortunately actions/download-artifact cannot fetch from other workflow runs. - uses: dawidd6/action-download-artifact@v2.26.0 + uses: actions/download-artifact@v3 with: name: dist path: dist - run_id: "${{ github.event.workflow_run.id }}" - run_number: "${{ github.event.workflow_run.run_number }}" - # Searching for a specific run ID that we know was successful, unset 'success' default. - workflow_conclusion: "" - name: Create Release id: create-release diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000..7ec852e --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,23 @@ +name: Pull Request + +on: + pull_request: + +jobs: + run-ci: + runs-on: ubuntu-latest + uses: Jikoo/OpenInv/.github/workflows/ci.yml@master + store-dependabot-pr-data: + if: "github.actor == 'dependabot[bot]' && github.event_name == 'pull_request'" + runs-on: ubuntu-latest + steps: + # Note: this is directly from GitHub's example for using data from a triggering workflow: + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#using-data-from-the-triggering-workflow + - name: Store Pull Number + run: | + mkdir -p ./pr + echo ${{ github.event.number }} > ./pr/pr_number + - uses: actions/upload-artifact@v3 + with: + name: pr_number + path: pr/