From 3dce39419794627f0502450dc6e5df7dd282031b Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Tue, 19 Jul 2022 15:29:51 +0300 Subject: [PATCH] Use the same cargo options for every cargo call. The "cargo metadata" and "cargo test --no-run" are used in the workflow to just list names of the final binaries, but unless the same cargo options like --release or --debug are used in those calls, they will in fact recompile everything. --- .github/workflows/build_and_test.yml | 56 ++++++++++++++-------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 0186232e3e..99d483ea4a 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -84,6 +84,29 @@ jobs: submodules: true fetch-depth: 1 + # Set some environment variables used by all the steps. + # + # CARGO_FLAGS is extra options to pass to "cargo build", "cargo test" etc. + # It also includes --features, if any + # + # CARGO_FEATURES is passed to "cargo metadata". It is separate from CARGO_FLAGS, + # because "cargo metadata" doesn't accept --release or --debug options + # + - name: Set env variables + run: | + if [[ $BUILD_TYPE == "debug" ]]; then + cov_prefix="scripts/coverage --profraw-prefix=$GITHUB_JOB --dir=/tmp/coverage run" + CARGO_FEATURES="" + CARGO_FLAGS="" + elif [[ $BUILD_TYPE == "release" ]]; then + cov_prefix="" + CARGO_FEATURES="--features profiling" + CARGO_FLAGS="--release $CARGO_FEATURES" + fi + echo "cov_prefix=${cov_prefix}" >> $GITHUB_ENV + echo "CARGO_FEATURES=${CARGO_FEATURES}" >> $GITHUB_ENV + echo "CARGO_FLAGS=${CARGO_FLAGS}" >> $GITHUB_ENV + - name: Get postgres artifact for restoration uses: actions/download-artifact@v3 with: @@ -115,43 +138,18 @@ jobs: - name: Run cargo build run: | - if [[ $BUILD_TYPE == "debug" ]]; then - cov_prefix=(scripts/coverage "--profraw-prefix=$GITHUB_JOB" --dir=/tmp/coverage run) - CARGO_FLAGS= - elif [[ $BUILD_TYPE == "release" ]]; then - cov_prefix=() - CARGO_FLAGS="--release --features profiling" - fi - - "${cov_prefix[@]}" mold -run cargo build $CARGO_FLAGS --features failpoints --bins --tests + ${cov_prefix} mold -run cargo build $CARGO_FLAGS --features failpoints --bins --tests - name: Run cargo test run: | - if [[ $BUILD_TYPE == "debug" ]]; then - cov_prefix=(scripts/coverage "--profraw-prefix=$GITHUB_JOB" --dir=/tmp/coverage run) - CARGO_FLAGS= - elif [[ $BUILD_TYPE == "release" ]]; then - cov_prefix=() - CARGO_FLAGS=--release - fi - - "${cov_prefix[@]}" cargo test $CARGO_FLAGS + ${cov_prefix} cargo test $CARGO_FLAGS - name: Install rust binaries run: | - if [[ $BUILD_TYPE == "debug" ]]; then - cov_prefix=(scripts/coverage "--profraw-prefix=$GITHUB_JOB" --dir=/tmp/coverage run) - elif [[ $BUILD_TYPE == "release" ]]; then - cov_prefix=() - fi - - # FIXME: What's this for? - mkdir -p /tmp/neon/etc/ - # Install target binaries mkdir -p /tmp/neon/bin/ binaries=$( - "${cov_prefix[@]}" cargo metadata --format-version=1 --no-deps | + ${cov_prefix} cargo metadata $CARGO_FEATURES --format-version=1 --no-deps | jq -r '.packages[].targets[] | select(.kind | index("bin")) | .name' ) for bin in $binaries; do @@ -167,7 +165,7 @@ jobs: mkdir -p /tmp/neon/test_bin/ test_exe_paths=$( - "${cov_prefix[@]}" cargo test --message-format=json --no-run | + ${cov_prefix} cargo test $CARGO_FLAGS --message-format=json --no-run | jq -r '.executable | select(. != null)' ) for bin in $test_exe_paths; do