name: comment on: workflow_run: workflows: [build] types: [completed] jobs: pr_comment: if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - env: GH_REPO: ${{ github.repository }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | pr=$(gh pr list --state open --json headRefOid,number \ --jq '.[] | select(.headRefOid == "${{ github.event.workflow_run.head_sha }}") | .number') if [ -z "$pr" ]; then echo "No matching pull request found" exit 1 fi artifacts=$(gh api repos/{owner}/{repo}/actions/runs/${{ github.event.workflow_run.id }}/artifacts --jq '.artifacts') if [ "$(echo "$artifacts" | jq 'length')" -eq 0 ]; then echo "No artifacts found" exit 0 fi body=$(echo "$artifacts" | jq -r ' def link: "https://nightly.link/${{ github.repository }}/actions/artifacts/\(.id).zip"; def entry: "* [\(.name)](\(link))"; "Download the artifacts for this pull request:\n
Windows\n\n" + (sort_by(.name) | map(select(.name | test("w64|msvc")) | entry) | join("\n")) + "\n
\n
macOS\n\n" + (sort_by(.name) | map(select(.name | test("macos")) | entry) | join("\n")) + "\n
" ') comment_id=$(gh issue view $pr --json comments \ --jq '.comments[] | select(.author.login == "github-actions") | .id') if [ -n "$comment_id" ]; then edit=--edit-last fi gh pr comment $pr --body "$body" $edit