diff --git a/package/ci/appveyor.yml b/package/ci/appveyor.yml index faaa37d..0469d8c 100644 --- a/package/ci/appveyor.yml +++ b/package/ci/appveyor.yml @@ -99,11 +99,15 @@ install: # Ninja. `cinst ninja` started 503ing in late November 2019 and wasn't really # reliable before either. So install by hand, as that's reliable always. - IF NOT EXIST %APPVEYOR_BUILD_FOLDER%\ninja-win.zip appveyor DownloadFile https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip -- 7z x ninja-win.zip -oC:/tools/ninja +- 7z x ninja-win.zip -oC:/tools +- set PATH=C:/tools;%PATH% + +# Codecov uploader +- appveyor DownloadFile https://uploader.codecov.io/latest/windows/codecov.exe -FileName C:/tools/codecov.exe # pip is in Scripts - set PATH=C:/tools/ninja;C:/Python%PYTHON%-x64;C:/Python%PYTHON%-x64/Scripts;%PATH% -- pip3 install coverage codecov +- pip3 install coverage - IF NOT "%BUILD_STATIC%" == "ON" set BUILD_STATIC=OFF # The fugly \=/ magic is to replace backward slashes with forward so CMake diff --git a/package/ci/circleci.yml b/package/ci/circleci.yml index fcc0a60..0ade968 100644 --- a/package/ci/circleci.yml +++ b/package/ci/circleci.yml @@ -1,6 +1,14 @@ version: 2.1 orbs: + # Version 3.2.4 is the "new" uploader, but it's a 50 MB Node.js *binary* and + # doesn't work on ARM64 Linux (or ARM Macs, or FreeBSD for that matter) and + # nobody seems to care. Issues opened since Septembe 2021: + # https://github.com/codecov/uploader/issues/347 + # https://github.com/codecov/uploader/issues/523 + # https://github.com/codecov/uploader/issues/849 + # The old 1.1.1 still seems to work even though codecov got removed from pip + # on 2023-04-14. codecov: codecov/codecov@1.1.1 executors: @@ -151,8 +159,8 @@ commands: type: string steps: - run: - name: Install coverage and codecov - command: pip3 install coverage codecov + name: Install coverage + command: pip3 install coverage - checkout - run: name: Build & test @@ -161,6 +169,33 @@ commands: if [ "$BUILD_DEPRECATED" != "OFF" ]; then export BUILD_DEPRECATED=ON; fi ./package/ci/<< parameters.script >> + # Official docs say "token not needed for public repos", in reality not using + # the token is "extremely flakey". What's best is that if the upload fails, + # the damn thing exits with a success error code, and nobody cares: + # https://github.com/codecov/codecov-circleci-orb/issues/139 + upload-codecov: + parameters: + file: + type: string + steps: + # Second best thing is that the codecov/upload helper takes a `token` + # parameter. But the token parameter is an ENVIRONMENT VARIABLE NAME!! So + # one just *can't* pass the token there. It got changed arbitrarily in + # https://github.com/codecov/codecov-circleci-orb/pull/93 "because + # CircleCI docs suggested so", yet all codecov docs suggest just + # commiting that token directly to the YML files because "it's fine". So + # if it's fine, why do I have to suffer like this?! + - run: + name: Set codecov upload token because everything is a dumpster fire + # An icing on the cake is that CircleCI commands don't allow setting + # `environment` for `commands`, only for `jobs`, so I have to do that + # via bash, and because the environment isn't passsed from a run to + # run, use the BASH_ENV hack. Mmm. Technology. + command: | + echo 'export CODECOV_TOKEN=ade9e2f1-d6d7-45cb-a292-c5bb1ad45be9' >> "$BASH_ENV" + - codecov/upload: + file: << parameters.file >> + lcov: steps: - run: @@ -170,7 +205,7 @@ commands: lcov $LCOV_EXTRA_OPTS --directory . --capture --output-file coverage.info > /dev/null lcov $LCOV_EXTRA_OPTS --extract coverage.info "*/src/python/*" "*/src/Corrade/*" "*/src/Magnum/*" --output-file coverage.info > /dev/null cd src/python && coverage combine - - codecov/upload: + - upload-codecov: file: coverage.info jobs: