1717set -x
1818echo " Publishing the coverage results"
1919
20- # GitHub Actions vars:
21- # $GITHUB_WORKSPACE -> root of repo
20+ # GitHub Actions env vars:
21+ # $GITHUB_WORKSPACE -> repo root on runner
2222# $GITHUB_REPOSITORY -> owner/repo
23- # $GITHUB_REF_NAME -> branch or tag name
24- # $GITHUB_SHA -> current commit SHA
25- # $GITHUB_RUN_NUMBER -> CI run number
23+ # $GITHUB_REF_NAME -> branch or tag name (e.g. master)
24+ # $GITHUB_SHA -> commit SHA
25+ # $GITHUB_RUN_NUMBER -> workflow run number
2626# $GITHUB_EVENT_NAME -> event type (push, pull_request, etc)
27- # $GITHUB_EVENT_PATH -> path to the full webhook event JSON
27+ # $GITHUB_EVENT_PATH -> webhook event JSON
2828
29- mkdir -p " $GITHUB_WORKSPACE /gh-pages"
30- cd " $GITHUB_WORKSPACE /gh-pages" || exit 1
29+ WORKDIR=" $GITHUB_WORKSPACE /gh-pages"
30+ COVERAGE_DIR=" $WORKDIR /coverage/$GITHUB_REF_NAME "
31+
32+ mkdir -p " $WORKDIR "
33+ cd " $WORKDIR " || exit 1
3134
3235OLD_COVERAGE=0
3336NEW_COVERAGE=0
@@ -37,68 +40,65 @@ BADGE_COLOR=red
3740GREEN_THRESHOLD=85
3841YELLOW_THRESHOLD=50
3942
40- # clone and prepare gh-pages branch
41- git clone -b gh-pages https://" $GHE_USER " :" $GHE_TOKEN " @github.com/" $GITHUB_REPOSITORY " .git .
42- git config user.name " travis"
43- git config user.email " travis"
44-
45- mkdir -p " $GITHUB_WORKSPACE /gh-pages/coverage/$GITHUB_REF_NAME "
46- mkdir -p " $GITHUB_WORKSPACE /gh-pages/coverage/$GITHUB_SHA "
43+ # clone gh-pages branch
44+ git clone -b gh-pages " https://$GHE_USER :$GHE_TOKEN @github.com/$GITHUB_REPOSITORY .git" .
45+ git config user.name " github-actions"
46+ git config user.email
" [email protected] " 4747
48- # calculate overall coverage percentage
49- echo " Computing the coverages"
48+ mkdir -p " $COVERAGE_DIR " " $WORKDIR /coverage/$GITHUB_SHA "
5049
51- if [ -f " $GITHUB_WORKSPACE /gh-pages/ coverage/ ${GITHUB_REF_NAME} /cover.html " ] ; then
52- OLD_COVERAGE= $( grep " %) " " $GITHUB_WORKSPACE /gh-pages/coverage/ ${GITHUB_REF_NAME} / cover.html" \
53- | sed ' s/[][()><%]/ /g ' | awk ' { print $4 } ' \
54- | awk ' {s+=$1}END{if(NR>0)print s/NR; else print 0} ' )
55- fi
50+ # compute old coverage if present
51+ COVER_HTML= " $COVERAGE_DIR / cover.html"
52+ OLD_COVERAGE= $( grep " %) " " $COVER_HTML " 2> /dev/null \
53+ | sed ' s/[][()><%]/ /g ' \
54+ | awk ' {s+=$4}END{if(NR>0)print s/NR; else print 0} ' )
5655
57- cp " $GITHUB_WORKSPACE /cover.html" " $GITHUB_WORKSPACE /gh-pages/coverage/${GITHUB_REF_NAME} "
58- cp " $GITHUB_WORKSPACE /cover.html" " $GITHUB_WORKSPACE /gh-pages/coverage/$GITHUB_SHA "
56+ # copy new report
57+ cp " $GITHUB_WORKSPACE /cover.html" " $COVERAGE_DIR "
58+ cp " $GITHUB_WORKSPACE /cover.html" " $WORKDIR /coverage/$GITHUB_SHA "
5959
60- if [ -f " $GITHUB_WORKSPACE /Passing" ]; then
61- curl -s https://img.shields.io/badge/e2e-passing-yellow.svg > " $GITHUB_WORKSPACE /gh-pages/coverage/${GITHUB_REF_NAME} /e2e.svg"
62- elif [ -f " $GITHUB_WORKSPACE /Failed" ]; then
63- curl -s https://img.shields.io/badge/e2e-failed-red.svg > " $GITHUB_WORKSPACE /gh-pages/coverage/${GITHUB_REF_NAME} /e2e.svg"
60+ # add e2e badge if test markers exist
61+ if [[ -f " $GITHUB_WORKSPACE /Passing" ]]; then
62+ curl -s https://img.shields.io/badge/e2e-passing-green.svg > " $COVERAGE_DIR /e2e.svg"
63+ elif [[ -f " $GITHUB_WORKSPACE /Failed" ]]; then
64+ curl -s https://img.shields.io/badge/e2e-failed-red.svg > " $COVERAGE_DIR /e2e.svg"
6465fi
6566
66- NEW_COVERAGE=$( grep " %)" " $GITHUB_WORKSPACE /gh-pages/coverage/${GITHUB_REF_NAME} /cover.html" | sed ' s/[][()><%]/ /g' | awk ' { print $4 }' \
67- | awk ' {s+=$1}END{if(NR>0)print s/NR; else print 0}' )
67+ # compute new coverage
68+ NEW_COVERAGE=$( grep " %)" " $COVER_HTML " \
69+ | sed ' s/[][()><%]/ /g' \
70+ | awk ' {s+=$4}END{if(NR>0)print s/NR; else print 0}' )
6871
69- # pick badge color
72+ # select badge color
7073if (( $(echo "$NEW_COVERAGE > $GREEN_THRESHOLD " | bc - l) )) ; then
71- BADGE_COLOR=" green"
74+ BADGE_COLOR=" green"
7275elif (( $(echo "$NEW_COVERAGE > $YELLOW_THRESHOLD " | bc - l) )) ; then
73- BADGE_COLOR=" yellow"
76+ BADGE_COLOR=" yellow"
7477fi
7578
76- # generate badge
77- curl -s https://img.shields.io/badge/coverage-" $ NEW_COVERAGE" - $ BADGE_COLOR .svg > " $GITHUB_WORKSPACE /gh-pages/coverage/ ${GITHUB_REF_NAME} /badge.svg"
79+ # generate coverage badge
80+ curl -s " https://img.shields.io/badge/coverage-${ NEW_COVERAGE} - ${ BADGE_COLOR} .svg" > " $COVERAGE_DIR /badge.svg"
7881
79- # generate result message
82+ # build result message
8083if (( $(echo "$OLD_COVERAGE > $NEW_COVERAGE " | bc - l) )) ; then
81- RESULT_MESSAGE=" :red_circle: Coverage decreased from [$OLD_COVERAGE %] to [$NEW_COVERAGE %]"
84+ RESULT_MESSAGE=" :red_circle: Coverage decreased from [$OLD_COVERAGE %] to [$NEW_COVERAGE %]"
8285elif (( $(echo "$OLD_COVERAGE == $NEW_COVERAGE " | bc - l) )) ; then
83- RESULT_MESSAGE=" :thumbsup: Coverage remained same at [$NEW_COVERAGE %]"
86+ RESULT_MESSAGE=" :thumbsup: Coverage remained the same at [$NEW_COVERAGE %]"
8487else
85- RESULT_MESSAGE=" :thumbsup: Coverage increased from [$OLD_COVERAGE %] to [$NEW_COVERAGE %]"
88+ RESULT_MESSAGE=" :thumbsup: Coverage increased from [$OLD_COVERAGE %] to [$NEW_COVERAGE %]"
8689fi
8790
88- # update gh-pages or PR
89- echo " Updating gh-pages"
90- if [ " $GITHUB_EVENT_NAME " == " push" ]; then
91- git status
92- git add .
93- git commit -m " Coverage result for commit $GITHUB_SHA from run $GITHUB_RUN_NUMBER " || echo " No changes to commit"
94- git push origin gh-pages
95- elif [ " $GITHUB_EVENT_NAME " == " pull_request" ]; then
96- # extract PR number from JSON
97- PR_NUMBER=$( jq -r .pull_request.number " $GITHUB_EVENT_PATH " )
98-
99- curl -s -X POST \
100- -H " Authorization: token $GHE_TOKEN " \
101- -H " Content-Type: application/json" \
102- -d " {\" body\" : \" $RESULT_MESSAGE \" }" \
103- " https://api.github.com/repos/$GITHUB_REPOSITORY /issues/$PR_NUMBER /comments"
91+ # updating comment on PR
92+ echo " Updating gh-pages/PR comment"
93+ if [[ " $GITHUB_EVENT_NAME " == " push" ]]; then
94+ git add .
95+ git commit -m " Coverage: commit $GITHUB_SHA (run $GITHUB_RUN_NUMBER )" || echo " No changes to commit"
96+ git push origin gh-pages
97+ elif [[ " $GITHUB_EVENT_NAME " == " pull_request" ]]; then
98+ PR_NUMBER=$( jq -r .pull_request.number " $GITHUB_EVENT_PATH " )
99+ curl -s -X POST \
100+ -H " Authorization: token $GHE_TOKEN " \
101+ -H " Content-Type: application/json" \
102+ -d " {\" body\" : \" $RESULT_MESSAGE \" }" \
103+ " https://api.github.com/repos/$GITHUB_REPOSITORY /issues/$PR_NUMBER /comments"
104104fi
0 commit comments