Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: make dcou partitioned steps not-skewed and cached #4452

Merged
merged 16 commits into from
Jan 30, 2025
6 changes: 6 additions & 0 deletions ci/docker-run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ if [[ -n $CI ]]; then
ARGS+=(
--env "RUSTC_WRAPPER=/usr/local/cargo/bin/sccache"
)
# local disk storage for sccache (experimental; only used by dcou for now)
mkdir -p "$HOME/.cache/sccache-for-docker"
CONTAINER_HOME="/"
ARGS+=(
--volume "$HOME/.cache/sccache-for-docker:$CONTAINER_HOME/.cache/sccache"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fyi, /var/lib/buildkite/... didn't work well due to permission issue...

Copy link
Member

@yihau yihau Jan 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could you dm me the failed build link?

oh, if this one works, then let's use it

)

# s3
if [ -n "$AWS_ACCESS_KEY_ID" ]; then
Expand Down
6 changes: 4 additions & 2 deletions ci/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ARG \
RUST_NIGHTLY_VERSION= \
GOLANG_VERSION=1.21.3 \
NODE_MAJOR=18 \
SCCACHE_VERSION=v0.8.1 \
SCCACHE_VERSION=v0.9.1 \
Copy link
Collaborator Author

@ryoqun ryoqun Jan 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this newer version starts to show cache hit rates by --show-stats, which is handy to some extent.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bumped the version here: #4655

GRCOV_VERSION=v0.8.18

SHELL ["/bin/bash", "-o", "pipefail", "-c"]
Expand Down Expand Up @@ -78,7 +78,9 @@ RUN \
rustup component add llvm-tools-preview --toolchain=$RUST_NIGHTLY_VERSION && \
rustup target add wasm32-unknown-unknown && \
cargo install cargo-audit && \
cargo install cargo-hack && \
# uncomment once the dcou-parition related patch is upstreamed...
# cargo install cargo-hack && \
cargo install --git https://github.com/anza-xyz/cargo-hack.git --rev 5e59c3ec6c661c02601487c0d4b2a2649fe06c9f cargo-hack && \
cargo install cargo-sort && \
cargo install mdbook && \
cargo install mdbook-linkcheck && \
Expand Down
2 changes: 1 addition & 1 deletion ci/docker/env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export CI_DOCKER_ARG_RUST_VERSION="${rust_stable}"
export CI_DOCKER_ARG_RUST_NIGHTLY_VERSION="${rust_nightly}"
export CI_DOCKER_ARG_GOLANG_VERSION=1.21.3
export CI_DOCKER_ARG_NODE_MAJOR=18
export CI_DOCKER_ARG_SCCACHE_VERSION=v0.8.1
export CI_DOCKER_ARG_SCCACHE_VERSION=v0.9.1
export CI_DOCKER_ARG_GRCOV_VERSION=v0.8.18

hash_vars=(
Expand Down
23 changes: 23 additions & 0 deletions ci/test-dev-context-only-utils.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
#!/usr/bin/env bash

set -eo pipefail
source ./ci/_

(unset RUSTC_WRAPPER; cargo install --force --git https://github.com/anza-xyz/cargo-hack.git --rev 5e59c3ec6c661c02601487c0d4b2a2649fe06c9f cargo-hack)

# Here, experimentally switch the sccache storage from GCS to local disk by
# `unset`-ing gcs credentials so that sccache automatically falls back to the
# local disk storage.
unset SCCACHE_GCS_KEY_PATH SCCACHE_GCS_BUCKET SCCACHE_GCS_RW_MODE SCCACHE_GCS_KEY_PREFIX

# sccache's default is 10G, but our boxes have far more storage. :)
export SCCACHE_CACHE_SIZE="200G"

# Disable incremental compilation as this is documented as not-compatible with
# sccache at https://github.com/mozilla/sccache/blob/v0.9.1/README.md#rust
# > Incrementally compiled crates cannot be cached.
export CARGO_INCREMENTAL=0

_ sccache --show-stats

scripts/check-dev-context-only-utils.sh check-all-targets "$@"
scripts/check-dev-context-only-utils.sh check-bins-and-lib "$@"

# This shows final stats while stopping the sccache background server as well
# for later normal sccache use (if any). Remember that sccache is now
# temporarily and experimtally running with the local disk storage.
_ sccache --stop-server
9 changes: 9 additions & 0 deletions scripts/check-dev-context-only-utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,15 @@ fi
# consistency with other CI steps and for the possibility of new similar lints.
export RUSTFLAGS="-D warnings -Z threads=8 $RUSTFLAGS"

# As this environment value is used by the rather deep crate of our dep graph
# (solana-varsion), this could invalidate significant portion of caches when
# this changes just with a new tiny commit. Technically, it's possible for
# CI_COMMIT to affect the outcome of compilation via build.rs, but it's
# extremely unrealistic for such diverting compilation behaviors to be desired
# as a sane use-case. So, just unset CI_COMMIT unconditionally to increase
# cache efficiency.
unset CI_COMMIT
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fyi, I put this unset CI_COMMIT here rather than ./ci/test-dev-context-only-utils.sh, because this is beneficial, regardless use of sccache.


if [[ $mode = "check-bins-and-lib" || $mode = "full" ]]; then
_ cargo "+${rust_nightly}" hack "$@" check
fi
Expand Down