[ci skip] Clean up paperclip build-pr workflow

Gracefully handle paperclip uploads to pull requests in case of build
workflow issues.
This commit is contained in:
Bjarne Koll 2024-05-28 14:02:20 +02:00
parent 483368e480
commit 3e933fe49d
2 changed files with 26 additions and 13 deletions

View file

@ -34,15 +34,20 @@ jobs:
uses: gradle/gradle-build-action@v2 uses: gradle/gradle-build-action@v2
- name: Configure Build - name: Configure Build
uses: actions/github-script@v6 uses: actions/github-script@v7
id: determine id: determine
env:
REF_NAME: "${{ github.ref_name }}"
REF_TYPE: "${{ github.ref_type }}"
EVENT: "${{ toJSON(github.event) }}"
EVENT_TYPE: "${{ github.event_name }}"
with: with:
script: | script: |
const {owner, repo} = context.repo; const {owner, repo} = context.repo;
const event_name = "${{ github.event_name }}"; const event_name = `${process.env.EVENT_TYPE}`;
const event = ${{ toJSON(github.event) }}; const event = JSON.parse(`${process.env.EVENT}`);
const ref_type = "${{ github.ref_type }}"; const ref_type = `${process.env.REF_TYPE}`;
const ref_name = "${{ github.ref_name }}"; const ref_name = `${process.env.REF_NAME}`;
const result = { const result = {
action: "build" action: "build"
}; };

View file

@ -17,7 +17,15 @@ jobs:
if: github.event.workflow_run.conclusion == 'success' if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/github-script@v6 - uses: actions/github-script@v7
env:
BRANCH_NAME: "${{ github.event.workflow_run.head_branch }}"
PR_OWNER: "${{ github.event.workflow_run.head_repository.owner.login }}"
PR_SHA: "${{ github.event.workflow_run.head_sha }}"
RUN_ID: "${{ github.event.workflow_run.id }}"
REPO_ID: "${{ github.event.repository.id }}"
EVENT_TYPE: "${{ github.event.workflow_run.event}}"
PULL_REQUESTS: "${{ toJSON(github.event.workflow_run.pull_requests) }}"
with: with:
# This snippet is public-domain, taken from # This snippet is public-domain, taken from
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml # https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml
@ -37,17 +45,17 @@ jobs:
} }
const { owner, repo } = context.repo; const { owner, repo } = context.repo;
const run_id = ${{ github.event.workflow_run.id }}; const run_id = `${process.env.RUN_ID}`;
const repo_id = ${{ github.event.repository.id }}; const repo_id = `${process.env.REPO_ID}`;
let pulls = []; let pulls = [];
const event_type = "${{ github.event.workflow_run.event}}"; const event_type = `${process.env.EVENT_TYPE}`;
if (event_type === "push") { // if push, it's from the same repo which means `pull_requests` is populated if (event_type === "push") { // if push, it's from the same repo which means `pull_requests` is populated
pulls = ${{ toJSON(github.event.workflow_run.pull_requests) }}; pulls = JSON.parse(`${process.env.PULL_REQUESTS}`);
} else { } else {
const pr_branch = "${{ github.event.workflow_run.head_branch }}"; const pr_branch = `${process.env.BRANCH_NAME}`;
const pr_sha = "${{ github.event.workflow_run.head_sha }}"; const pr_sha = `${process.env.PR_SHA}`;
const pr_owner = "${{ github.event.workflow_run.head_repository.owner.login }}"; const pr_owner = `${process.env.PR_OWNER}`;
const { data } = await github.rest.pulls.list({ owner, repo, head: `${pr_owner}:${pr_branch}`, state: "open" }); const { data } = await github.rest.pulls.list({ owner, repo, head: `${pr_owner}:${pr_branch}`, state: "open" });
core.debug(JSON.stringify(data, null, 2)); core.debug(JSON.stringify(data, null, 2));
pulls = data.filter((pr) => pr.head.sha === pr_sha && pr.labels.find((l) => l.name === "build-pr-jar")); pulls = data.filter((pr) => pr.head.sha === pr_sha && pr.labels.find((l) => l.name === "build-pr-jar"));