Skip to content

Commit

Permalink
Fix sccache reporting in CI summaries.
Browse files Browse the repository at this point in the history
The build directory in CI became a docker volume at some point.
This meant we could no longer copy artifacts out of the build directory after the build completed.
This PR binds a new artifacts directory to the container and copies the sccache summary out through this new binding.
  • Loading branch information
alliepiper committed Jan 31, 2025
1 parent 73db01e commit 25c14eb
Showing 1 changed file with 28 additions and 16 deletions.
44 changes: 28 additions & 16 deletions .github/actions/workflow-run-job-linux/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,16 @@ runs:
ln -s "$(pwd)" "${{github.workspace}}"
cd "${{github.workspace}}"
cat <<"EOF" > ci.sh
mkdir artifacts
cat <<'EOF' > ci.sh
#! /usr/bin/env bash
set -eo pipefail
set -euo pipefail
echo -e "\e[1;34mRunning as '$(whoami)' user in $(pwd):\e[0m"
echo -e "\e[1;34m${COMMAND}\e[0m"
eval "${COMMAND}" || exit_code=$?
if [ ! -z "$exit_code" ]; then
eval "${COMMAND}"
exit_code=$?
if [[ "$exit_code" -ne 0 ]]; then
echo -e "::group::️❗ \e[1;31mInstructions to Reproduce CI Failure Locally\e[0m"
echo "::error:: To replicate this failure locally, follow the steps below:"
echo "1. Clone the repository, and navigate to the correct branch and commit:"
Expand All @@ -107,6 +110,22 @@ runs:
echo " - Continuous Integration (CI) Overview: https://github.com/NVIDIA/cccl/blob/main/ci-overview.md"
exit $exit_code
fi
# Copy any artifacts we want to preserve out of the container:
results_dir=/artifacts
# Finds a matching file in the repo directory and copies it to the results directory.
find_and_copy() {
filename="$1"
filepath="$(find . -name "${filename}" -print -quit)"
if [[ -z "$filepath" ]]; then
echo "${filename} does not exist in repo directory."
return 1
fi
cp -v "$filepath" "$results_dir"
}
find_and_copy "sccache_stats.json" || :
EOF
chmod +x ci.sh
Expand Down Expand Up @@ -167,6 +186,7 @@ runs:
--env "GITHUB_REPOSITORY=$GITHUB_REPOSITORY" \
--env "GITHUB_STEP_SUMMARY=$GITHUB_STEP_SUMMARY" \
--volume "${{github.workspace}}/ci.sh:/ci.sh" \
--volume "${{github.workspace}}/artifacts:/artifacts" \
--volume "$(host_path "$RUNNER_TEMP")/.aws:/root/.aws" \
--volume "$(dirname "$(dirname "${{github.workspace}}")"):/__w" \
-- /ci.sh
Expand All @@ -180,18 +200,10 @@ runs:
touch "$result_dir/success"
# Finds a matching file in the repo directory and copies it to the results directory.
find_and_copy() {
filename="$1"
filepath="$(find ${{github.event.repository.name}} -name "${filename}" -print -quit)"
if [[ -z "$filepath" ]]; then
echo "${filename} does not exist in repo directory."
return 1
fi
cp -v "$filepath" "$result_dir"
}
find_and_copy "sccache_stats.json" || true # Ignore failures
artifacts_exist="$(ls -A artifacts)"
if [ "$artifacts_exist" ]; then
cp -rv artifacts/* "$result_dir"
fi
echo "::group::Job artifacts"
tree "$result_dir"
Expand Down

0 comments on commit 25c14eb

Please sign in to comment.