From 13a07b8fb2887748bbbddbe2a760eb47cf1a2109 Mon Sep 17 00:00:00 2001 From: kjeld Schouten-Lebbing Date: Thu, 31 Mar 2022 20:56:52 +0200 Subject: [PATCH] more ci rework --- .../workflows/meta-label-pr-ci-status.yaml | 105 ++++++++++++++++++ .github/workflows/schedule-sync-labels.yaml | 1 - 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/meta-label-pr-ci-status.yaml diff --git a/.github/workflows/meta-label-pr-ci-status.yaml b/.github/workflows/meta-label-pr-ci-status.yaml new file mode 100644 index 00000000000..a967ab3e89a --- /dev/null +++ b/.github/workflows/meta-label-pr-ci-status.yaml @@ -0,0 +1,105 @@ +--- +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@v3 + with: + token: ${{ secrets.BOT_TOKEN }} + + - name: Download workflow artifact + uses: dawidd6/action-download-artifact@v2.17.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@v1.1.4 + with: + path: ./pr_metadata/pr_number.txt + + - name: "Get workflow job status" + uses: actions/github-script@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 diff --git a/.github/workflows/schedule-sync-labels.yaml b/.github/workflows/schedule-sync-labels.yaml index eabf4d034fd..001877c309d 100644 --- a/.github/workflows/schedule-sync-labels.yaml +++ b/.github/workflows/schedule-sync-labels.yaml @@ -21,6 +21,5 @@ jobs: with: config-file: | https://raw.githubusercontent.com/truecharts/.github/main/.github/labels.yaml - .github/labels.yaml token: "${{ secrets.BOT_TOKEN }}" delete-other-labels: true