Skip to content

Commit

Permalink
build.yml: Add PR status check handling
Browse files Browse the repository at this point in the history
  • Loading branch information
abraxa committed Aug 22, 2024
1 parent 308c65e commit 0346745
Showing 1 changed file with 120 additions and 2 deletions.
122 changes: 120 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,127 @@
name: sigrok-cli Artifact Builder Workflow

on:
push:
workflow_dispatch:
push: # When the repo itself has a new commit on the master branch
branches:
- master
tags: # When a new tag was created
workflow_dispatch: # When the workflow was started manually from github
pull_request:
types:
- labeled # When a pull request received a new label (e.g. "provide_binaries")
- synchronize # When a pull request's branch was updated with a new commit

jobs:
create-pending-status:
name: Create pending status
# Run this only for pull requests
if: (github.event == pull_request)

steps:
- name: Get PR hash
id: sha
uses: actions/github-script
with:
result-encoding: string
script: |
const { owner, repo, number } = context.issue;
const pr = await github.rest.pulls.get({
owner,
repo,
pull_number: number,
});
return pr.data.head.sha
- name: Create pending status check
uses: actions/github-script
with:
script: |
github.rest.repos.createCommitStatus({
owner: context.repo.owner,
repo: context.repo.repo,
sha: "${{ steps.sha.outputs.result }}",
state: "pending",
target_url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}",
description: "Running",
context: "pr build"
});
update-pending-status-success:
name: Update pending status as 'success'
needs: call-build-workflow
if: |
always() && # Workaround, see https://github.com/actions/runner/issues/491#issuecomment-850884422
(github.event == pull_request) &&
!contains(needs.*.result, 'cancelled') &&
!contains(needs.*.result, 'failure')
steps:
- name: Get PR hash
id: sha
uses: actions/github-script
with:
result-encoding: string
script: |
const { owner, repo, number } = context.issue;
const pr = await github.rest.pulls.get({
owner,
repo,
pull_number: number,
});
return pr.data.head.sha
- name: Update status
uses: actions/github-script
with:
script: |
github.rest.repos.createCommitStatus({
owner: context.repo.owner,
repo: context.repo.repo,
sha: "${{ steps.sha.outputs.result }}",
state: "success",
target_url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}",
description: "Success",
context: "pr build"
});
update-pending-status-failure:
name: Update pending status as 'failure'
needs: call-build-workflow
if: |
always() && # Workaround, see https://github.com/actions/runner/issues/491#issuecomment-850884422
(github.event == pull_request) &&
(contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'failure'))
steps:
- name: Get PR hash
id: sha
uses: actions/github-script
with:
result-encoding: string
script: |
const { owner, repo, number } = context.issue;
const pr = await github.rest.pulls.get({
owner,
repo,
pull_number: number,
});
return pr.data.head.sha
- name: Update status
uses: actions/github-script
with:
script: |
github.rest.repos.createCommitStatus({
owner: context.repo.owner,
repo: context.repo.repo,
sha: "${{ steps.sha.outputs.result }}",
state: "failure",
target_url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}",
description: "Failure",
context: "pr build"
});
call-build-workflow:
name: Sigrok artifact builder
id: build
uses: sigrokproject/sigrok-build/.github/workflows/build.yml@master

0 comments on commit 0346745

Please sign in to comment.