Switch to new CodeCov uploader

The currently used bash uploader is deprecated and will be removed in
the future[1]. This commit replaces the existing setup with the new
uploader for all currently supported platforms as proposed in [2].

Additional notes:
- FreeBSD support isn't supported yet and keeps using the old uploader
- Moved the new implementation into a dedicated file `source`d by
  all coverage CI's (instead of changing each individual configuration)

[1] https://about.codecov.io/blog/codecov-uploader-deprecation-plan
[2] https://about.codecov.io/blog/introducing-codecovs-new-uploader
This commit is contained in:
MoonlightSentinel 2021-10-07 22:36:59 +02:00 committed by The Dlang Bot
parent 469890bac1
commit 9ff5805c1d
6 changed files with 69 additions and 18 deletions

64
ci/codecov.sh Normal file
View file

@ -0,0 +1,64 @@
#!/usr/bin/env bash
# Uploads coverage reports to CodeCov
# CodeCov gets confused by lst files which it can't match
rm -rf test/runnable/extra-files test/*.lst
# Save the file from URL passed as $1 to the location in $2
doCurl()
{
curl -fsSL -A "$CURL_USER_AGENT" --connect-timeout 5 --speed-time 30 --speed-limit 1024 --retry 5 --retry-delay 5 "$1" -o "$2"
}
# Determine the correct uploader + url + arguments
UPLOADER="codecov"
UPLOADER_OS="$OS_NAME"
UPLOADER_ARGS=""
case "$UPLOADER_OS" in
windows)
# -C workaround proposed in https://github.com/codecov/codecov-bash/issues/287
UPLOADER_ARGS="-C \"$BUILD_SOURCEVERSION\""
UPLOADER="$UPLOADER.exe"
;;
darwin | osx)
UPLOADER_OS="macos"
;;
# No FreeBSD support for the new uploader (yet?)
freebsd)
doCurl "https://codecov.io/bash" "codecov.sh"
bash ./codecov.sh -p . -Z
rm codecov.sh
return 0
;;
esac
# Determine the host name
for file in "$UPLOADER" "$UPLOADER.SHA256SUM" "$UPLOADER.SHA256SUM.sig"
do
doCurl "https://uploader.codecov.io/latest/$UPLOADER_OS/$file" "$file"
done
# Obtain the key if missing
if ! gpg --list-keys ED779869
then
echo "Importing CodeCov key..."
doCurl "https://keybase.io/codecovsecurity/pgp_keys.asc" "pgp_keys.asc"
gpg --import pgp_keys.asc
rm pgp_keys.asc
fi
# Verify the uploader
gpg --verify "$UPLOADER.SHA256SUM.sig" "$UPLOADER.SHA256SUM"
shasum -a 256 -c "$UPLOADER.SHA256SUM"
# Upload the sources
chmod +x "$UPLOADER"
"./$UPLOADER" -p . -Z $UPLOADER_ARGS
rm codecov*