mirror of
https://github.com/status-im/consul.git
synced 2025-02-02 00:46:43 +00:00
add github action to trigger load tests based on PR label
This commit is contained in:
parent
de98b4591c
commit
4efb3d44cf
63
.github/workflows/load-test.yml
vendored
Normal file
63
.github/workflows/load-test.yml
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
trigger-load-test:
|
||||
if: ${{ github.event.label.name == 'test/load' }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
- name: Trigger CircleCI Load Test Pipeline
|
||||
run: |
|
||||
# build json payload to trigger CircleCI Load Test Pipeline
|
||||
# This only runs the load test pipeline on the 'master' branch
|
||||
jsonData=$(jq --null-input -r --arg commit ${{ github.event.pull_request.head.sha }} \
|
||||
'{branch:"master", parameters: {"commit": $commit, "trigger-load-test": true}}')
|
||||
echo "Passing JSON data to CircleCI API: $jsonData"
|
||||
load_test_pipeline_id=$(curl -X POST \
|
||||
-H "Circle-Token: ${{ secrets.CIRCLE_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$jsonData" \
|
||||
"https://circleci.com/api/v2/project/gh/${GITHUB_REPOSITORY}/pipeline" | jq -r '.id')
|
||||
echo "LOAD_TEST_PIPELINE_ID=$load_test_pipeline_id" >> $GITHUB_ENV
|
||||
- name: Post Load Test URL to PR
|
||||
env:
|
||||
PR_COMMENT_URL: ${{ github.event.pull_request.comments_url }}
|
||||
run: |
|
||||
echo "LOAD_TEST_PIPELINE_ID is: $LOAD_TEST_PIPELINE_ID"
|
||||
# get load-test workflow
|
||||
workflow=
|
||||
# wait up to a minute for load-test workflow to start
|
||||
until [ $SECONDS -ge 60 ] && exit 1; do
|
||||
workflow=$(curl -s -X GET \
|
||||
-H "Circle-Token: ${{ secrets.CIRCLE_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"https://circleci.com/api/v2/pipeline/${LOAD_TEST_PIPELINE_ID}/workflow" | jq '.items[] | select(.name=="load-test")')
|
||||
# if we found a workflow we exit
|
||||
if [ -n "$workflow" ]; then
|
||||
break
|
||||
fi
|
||||
echo -n "."
|
||||
sleep 5
|
||||
done
|
||||
echo "$workflow"
|
||||
# get pipeline number
|
||||
pipeline_number=$(echo "$workflow" | jq -r '.pipeline_number')
|
||||
# get workflow id
|
||||
workflow_id=$(echo "$workflow" | jq -r '.id')
|
||||
# get project slug
|
||||
project_slug=$(echo "$workflow" | jq -r '.project_slug')
|
||||
# build load test URL
|
||||
load_test_url="https://app.circleci.com/pipelines/${project_slug}/${pipeline_number}/workflows/${workflow_id}"
|
||||
# comment URL to pull request
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${{ secrets.PR_COMMENT_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"body\": \"Load Test Pipeline Started at: $load_test_url\"}" \
|
||||
"$PR_COMMENT_URL"
|
Loading…
x
Reference in New Issue
Block a user