Skip to content

Commit

Permalink
feat: added workflow file for commenting on a pull-request to dispatc…
Browse files Browse the repository at this point in the history
…h trigger benchmark suite
Michael Perrotte committed Jan 28, 2020

Verified

This commit was signed with the committer’s verified signature.
Lord-Kamina Gregorio Litenstein
1 parent 3590e40 commit 5967fa4
Showing 1 changed file with 92 additions and 0 deletions.
92 changes: 92 additions & 0 deletions .github/workflows/benchmark-comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
name: Benchmark CLI - Comment

on:
issue_comment:
types: [created, edited]

jobs:
comment-handler:
name: Trigger Benchmarks

runs-on: ubuntu-latest

steps:
- name: Handle Incoming Comment
env:
DISPATCH_REPO: "benchmarks"
DISPATCH_OWNER: "npm"
EVENT_NAME: ${{ github.event_name }}
EVENT_ACTION: ${{ github.event.action }}
OWNER: ${{ github.event.repository.owner.login }}
REPO: ${{ github.event.repository.name }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
COMMENT_BODY: ${{ github.event.comment.body }}
COMMENT_ID: ${{ github.event.comment.id }}
COMMENT_NODE_ID: ${{ github.event.comment.node_id }}
COMMENT_ACTIONABLE: ${{ startsWith(github.event.comment.body, 'test this please ✅') }}
AUTH_TOKEN: ${{ secrets.NPM_DEPLOY_USER_PAT }}
run: |
# Comment Handler
# Creates an exit early condition if there are errors
# Exit early if `jq` is not present
set -e
jq --version
# Figure out if comment came from pull-request or issue
IS_PR=$(curl -s https://api.github.com/repos/${OWNER}/${REPO}/issues/${ISSUE_NUMBER} | jq -cr '.pull_request.url')
if [ "${IS_PR}" != "null" ]; then
echo "Comment from pull/${ISSUE_NUMBER}."
# It is a pull-request; check comment body for correct phrase
if [ "${COMMENT_ACTIONABLE}" == "true" ]; then
# Fetch pull-request information
PR_DATA=$(curl -s "${IS_PR}")
PR_OWNER=$(echo "${PR_DATA}" | jq '.head.repo.owner.login')
PR_REPO=$(echo "${PR_DATA}" | jq '.head.repo.name')
PR_COMMIT_SHA=$(curl -s "${IS_PR}/commits" | jq -r '.[0].sha')
# dispatch request for benchmarks
echo "Dispatching request..."
curl \
-s \
-X POST https://api.github.com/repos/${DISPATCH_OWNER}/${DISPATCH_REPO}/dispatches \
-H "Accept: application/vnd.github.everest-preview+json" \
-H "Authorization: token ${AUTH_TOKEN}" \
-d \
'
{
"event_type": "'"${EVENT_NAME}"'",
"client_payload": {
"pr_id": "'"${ISSUE_NUMBER}"'",
"repo": "'"${PR_REPO}"'",
"owner": "'"${PR_OWNER}"'",
"commit_sha": "'"${PR_COMMIT_SHA}"'"
}
}'
# Create reaction on comment to confirm dispatch was sent
curl \
-s \
-X POST https://api.github.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: token ${AUTH_TOKEN}" \
-d \
'
{
"query": "mutation($inputData:AddReactionInput!) { addReaction(input:$inputData) { reaction { content } } }",
"variables": {
"inputData": {
"subjectId": "'"${COMMENT_NODE_ID}"'",
"content": "ROCKET"
}
}
}'
else
echo "Comment not actionable."
fi
else
echo "Comment not from pull-request."
fi

0 comments on commit 5967fa4

Please sign in to comment.