github.com/cockroachdb/pebble@v1.1.1-0.20240513155919-3622ade60459/scripts/code-coverage-publish.sh (about) 1 #!/bin/bash 2 3 # This script runs genhtml (part of lcov) on lcov artifacts generated by the 4 # code-coverage.sh script and uploads the result to a GCS bucket. 5 6 BUCKET="${BUCKET:-crl-codecover-public}" 7 8 set -euxo pipefail 9 10 publish() { 11 PROFILE="$1" 12 TITLE="$2" 13 14 if [ ! -f "$PROFILE" ]; then 15 echo "$PROFILE does not exist" 16 exit 1 17 fi 18 19 DIR="$(date -r "$PROFILE" -u '+%Y-%m-%d %H:%MZ') $(git rev-parse --short=8 HEAD) - $TITLE" 20 21 mkdir -p "artifacts/$DIR" 22 # The filename shows up on the generated page, let's make it useful. 23 cp "$PROFILE" "artifacts/$DIR.lcov" 24 genhtml "artifacts/$DIR.lcov" -o "artifacts/$DIR" 25 26 gsutil -m cp -Z -r "artifacts/$DIR" "gs://$BUCKET/pebble/$DIR" 27 } 28 29 publish "artifacts/profile-tests.lcov" "tests only" 30 publish "artifacts/profile-meta.lcov" "meta test only" 31 publish "artifacts/profile-tests-and-meta.lcov" "tests + meta" 32 33 # Regenerate index.html. 34 echo '<title>Pebble coverage</title><body><h2>Pebble coverage runs:</h2><ul>' > artifacts/index.html 35 gsutil ls "gs://$BUCKET/pebble" | 36 sed "s#gs://$BUCKET/pebble/##" | 37 sed 's#/$##' | 38 grep -v index.html | 39 sort -r | 40 while read -r d; do 41 echo "<li><a href=\"$d/index.html\">$d</a>" >> artifacts/index.html 42 done 43 44 echo '</ul></body>' >> artifacts/index.html 45 46 gsutil cp artifacts/index.html "gs://$BUCKET/pebble/index.html" 47 gsutil setmeta -h "Cache-Control: public, max-age=300, no-transform" "gs://$BUCKET/pebble/index.html"