Files
llvm-project/.github/workflows/release-asset-audit.yml
Tom Stellard 8454fb47ac workflows/release-asset-audit: Use a GitHub app token (#194085)
This removes one user of the ISSUE_SUBSCRIBER_TOKEN secret, which we
want to eventually remove since secrets are more difficult to maintain.
This also allows use to scope the token with less permissions since it
isn't shared with other workflows.
2026-04-29 13:26:49 -07:00

92 lines
2.9 KiB
YAML

name: Release Asset Audit
on:
workflow_dispatch:
release:
schedule:
# * is a special character in YAML so you have to quote this string
# Run once an hour
- cron: '5 * * * *'
pull_request:
paths:
- ".github/workflows/release-asset-audit.py"
- ".github/workflows/release-asset-audit.yml"
permissions:
contents: read # Default everything to read-only
jobs:
audit:
name: "Release Asset Audit"
runs-on: ubuntu-24.04
if: github.repository == 'llvm/llvm-project'
steps:
- name: Checkout LLVM
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
sparse-checkout: |
.github/workflows/release-asset-audit.py
llvm/utils/git/requirements.txt
- name: "Run Audit Script"
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
pip install --require-hashes -r ./llvm/utils/git/requirements.txt
python3 ./.github/workflows/release-asset-audit.py $GITHUB_TOKEN
- name: Upload comment file
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: comment
path: |
comment
notify-audit-failed:
name: "Notify Audit Failed"
environment:
name: main-branch-only
deployment: false
runs-on: ubuntu-24.04
if: >-
github.repository == 'llvm/llvm-project' &&
github.event_name != 'pull_request' &&
failure()
needs:
- audit
steps:
- name: Download Comment
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: comment
- id: app-token
uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1
with:
client-id: ${{ secrets.LLVM_TOKEN_GENERATOR_CLIENT_ID }}
private-key: ${{ secrets.LLVM_TOKEN_GENERATOR_PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
permission-contents: read
permission-issues: write
- name: "File Issue"
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
var fs = require('fs');
var body = ''
if (fs.existsSync('./comment')) {
body = fs.readFileSync('./comment') + "\n\n";
}
body = body + `\n\nhttps://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`
const issue = await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: "Release Asset Audit Failed",
labels: ['infrastructure'],
body: body
});
console.log(issue);