TrueChartsClone/.github/workflows/meta-label-pr-ci-status.yaml

106 lines
4.3 KiB
YAML

---
name: "Metadata: Label pull requests CI status"
on:
workflow_run:
workflows:
- "Pull Request: Validate"
types:
- completed
jobs:
label-ci-status:
name: Label CI status
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3
with:
token: ${{ secrets.BOT_TOKEN }}
- name: Download workflow artifact
uses: dawidd6/action-download-artifact@7847792dd435a50521b8e3bd3576dae7459d1fa8 # tag=v2.23.0
with:
github_token: ${{ secrets.BOT_TOKEN }}
workflow: pr-validate.yaml
run_id: ${{ github.event.workflow_run.id }}
name: pr_metadata
path: ./pr_metadata
- name: Read the pr_number file
id: pr_num_reader
uses: juliangruber/read-file-action@02bbba9876a8f870efd4ad64e3b9088d3fb94d4b # tag=v1.1.6
with:
path: ./pr_metadata/pr_number.txt
- name: "Get workflow job status"
uses: actions/github-script@d556feaca394842dc55e4734bf3bb9f685482fa0 # tag=v6
id: get-workflow-jobs
with:
github-token: ${{ secrets.BOT_TOKEN }}
# https://mhagemann.medium.com/the-ultimate-way-to-slugify-a-url-string-in-javascript-b8e4a0d849e1
script: |
function slugify(string) {
const a = 'àáâäæãåāăąçćčđďèéêëēėęěğǵḧîïíīįìıİłḿñńǹňôöòóœøōõőṕŕřßśšşșťțûüùúūǘůűųẃẍÿýžźż·/_,:;'
const b = 'aaaaaaaaaacccddeeeeeeeegghiiiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------'
const p = new RegExp(a.split('').join('|'), 'g')
return string.toString().toLowerCase()
.replace(/\s+/g, '-') // Replace spaces with -
.replace(p, c => b.charAt(a.indexOf(c))) // Replace special characters
.replace(/&/g, '-and-') // Replace & with 'and'
.replace(/[^\w\-]+/g, '') // Remove all non-word characters
.replace(/\-\-+/g, '-') // Replace multiple - with single -
.replace(/^-+/, '') // Trim - from start of text
.replace(/-+$/, '') // Trim - from end of text
}
let result = new Object
const wfJobs = await github.rest.actions.listJobsForWorkflowRun({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
})
for (const job of wfJobs.data.jobs) {
result[slugify(job.name)] = job.conclusion
}
console.log(result)
return result
- name: Label pre-commit status
uses: ./.github/actions/label-from-status
with:
token: ${{ secrets.BOT_TOKEN }}
issue-number: ${{ steps.pr_num_reader.outputs.content }}
prefix: precommit
job-status: |-
${{ fromJSON(steps.get-workflow-jobs.outputs.result).pre-commit-check-run-pre-commit-checks || 'skipped' }}
remove-on-skipped: true
#- name: Label changelog status
# uses: ./.github/actions/label-from-status
# with:
# token: ${{ secrets.BOT_TOKEN }}
# issue-number: ${{ steps.pr_num_reader.outputs.content }}
# prefix: changelog
# job-status: |-
# ${{ fromJSON(steps.get-workflow-jobs.outputs.result).charts-changelog-validate-changelog || 'skipped' }}
# remove-on-skipped: true
- name: Label chart lint status
uses: ./.github/actions/label-from-status
with:
token: ${{ secrets.BOT_TOKEN }}
issue-number: ${{ steps.pr_num_reader.outputs.content }}
prefix: lint
job-status: |-
${{ fromJSON(steps.get-workflow-jobs.outputs.result).charts-lint-lint-successful || 'skipped' }}
remove-on-skipped: true
- name: Label chart install status
uses: ./.github/actions/label-from-status
with:
token: ${{ secrets.BOT_TOKEN }}
issue-number: ${{ steps.pr_num_reader.outputs.content }}
prefix: install
job-status: |-
${{ fromJSON(steps.get-workflow-jobs.outputs.result).charts-test-install-successful || 'skipped' }}
remove-on-skipped: true