summaryrefslogtreecommitdiffstats
path: root/.github/workflows/comment.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/comment.yml')
-rw-r--r--.github/workflows/comment.yml46
1 files changed, 46 insertions, 0 deletions
diff --git a/.github/workflows/comment.yml b/.github/workflows/comment.yml
new file mode 100644
index 0000000000..4038ff8de1
--- /dev/null
+++ b/.github/workflows/comment.yml
@@ -0,0 +1,46 @@
+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<details><summary>Windows</summary>\n\n" +
+ (sort_by(.name) | map(select(.name | test("w64|msvc")) | entry) | join("\n")) +
+ "\n</details>\n<details><summary>macOS</summary>\n\n" +
+ (sort_by(.name) | map(select(.name | test("macos")) | entry) | join("\n")) +
+ "\n</details>"
+ ')
+
+ 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