Skip to content

Commit

Permalink
Merge pull request #13175 from karuppiah7890/issue-13167-measure-flak…
Browse files Browse the repository at this point in the history
…yness

scripts: add script to measure percentage of commits with failed status
  • Loading branch information
serathius authored Apr 5, 2022
2 parents a08d479 + 3317716 commit 8d8271f
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/measure-test-flakiness.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Measure Test Flakiness

on:
schedule:
- cron: "0 0 * * 0"

jobs:
measure-test-flakiness:
name: Measure Test Flakiness
runs-on: ubuntu-latest
steps:
- name: Run script to measure test flakiness
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: "./scripts/measure-test-flakiness.sh"
27 changes: 27 additions & 0 deletions scripts/measure-test-flakiness.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/bash

set -e
set -o pipefail

if [[ -z ${GITHUB_TOKEN} ]]
then
echo "Please set the \$GITHUB_TOKEN environment variable for the script to work"
exit 1
fi

temp_dir=$(mktemp -d)

trap '{ rm -rf -- "${temp_dir}"; }' EXIT

json_file="${temp_dir}/commit-and-check-data.json"

curl --fail --show-error --silent -H "Authorization: token ${GITHUB_TOKEN}" \
-X POST \
-d '{
"query": "query { repository(owner: \"etcd-io\", name: \"etcd\") { defaultBranchRef { target { ... on Commit { history(first: 100) { edges { node { ... on Commit { commitUrl statusCheckRollup { state } } } } } } } } } }"
}' \
https://api.github.com/graphql | jq . > "${json_file}"

failure_percentage=$(jq '.data.repository.defaultBranchRef.target.history.edges | reduce .[] as $item (0; if $item.node.statusCheckRollup.state == "FAILURE" then (. + 1) else . end)' "${json_file}")

echo "Commit status failure percentage is - ${failure_percentage} %"

0 comments on commit 8d8271f

Please sign in to comment.