Comment on an issue #66
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Comment on an issue | |
on: | |
workflow_run: | |
workflows: ["Check code formatting"] | |
types: | |
- completed | |
permissions: | |
contents: read | |
jobs: | |
pr-comment: | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read # This is needed to download artifacts from another workflow. | |
pull-requests: write | |
if: > | |
github.event.workflow_run.event == 'pull_request' | |
steps: | |
- name: 'Download artifact' | |
# v7.0.1 | |
uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1 | |
with: | |
run-id: ${{ github.event.workflow_run.id }} | |
name: workflow-args | |
- run: unzip workflow-args.zip | |
- name: 'Comment on PR' | |
uses: actions/github-script@v3 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
var fs = require('fs'); | |
const comments = JSON.parse(fs.readFileSync('./comments')); | |
if (!comments) { | |
return; | |
} | |
let runInfo = await github.actions.getWorkflowRun({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
run_id: context.payload.workflow_run.id | |
}); | |
console.log(runInfo); | |
const head_sha = runInfo.data.head_sha | |
const search_query = "type:pr repo:llvm/llvm-project commit:" + head_sha | |
const gql_query = ` | |
query($repo_owner : String!, $repo_name : String!, $branch: String!) { | |
repository(owner: $repo_owner, name: $repo_name) { | |
ref (qualifiedName: $branch) { | |
associatedPullRequests(first: 100) { | |
nodes { | |
baseRepository { | |
owner { | |
login | |
} | |
} | |
number | |
state | |
} | |
} | |
} | |
} | |
} | |
` | |
const gql_variables = { | |
repo_owner: runInfo.data.head_repository.owner.login, | |
repo_name: runInfo.data.head_repository.name, | |
branch: runInfo.data.head_branch | |
} | |
const gql_result = await github.graphql(gql_query, gql_variables); | |
console.log(gql_result); | |
console.log(gql_result.repository.ref.associatedPullRequests.nodes); | |
var pr_number = 0; | |
gql_result.repository.ref.associatedPullRequests.nodes.forEach((pr) => { | |
if (pr.baseRepository.owner.login = context.repo.owner && pr.state == 'OPEN') { | |
pr_number = pr.number; | |
} | |
}); | |
if (pr_number == 0) { | |
console.log("Error retrieving pull request number"); | |
return; | |
} | |
await comments.forEach(function (comment) { | |
if (comment.id) { | |
github.issues.updateComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: pr_number, | |
comment_id: comment.id, | |
body: comment.body | |
}); | |
} else { | |
github.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: pr_number, | |
body: comment.body | |
}); | |
} | |
}); | |
- name: Dump comments file | |
if: always() | |
run: cat comments |