Skip to content

Commit e3bf8d3

Browse files
committed
ci: Improve build time by caching with sccache
1 parent cdcac43 commit e3bf8d3

File tree

2 files changed

+30
-14
lines changed

2 files changed

+30
-14
lines changed

.travis.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ git:
77
depth: false
88
quiet: true
99

10+
cache:
11+
directories:
12+
- "$HOME/.cargo"
13+
- "$HOME/.cache/sccache"
14+
before_cache:
15+
- rm -rf "$HOME/.cargo/registry"
16+
1017
matrix:
1118
fast_finish: true
1219
include:

ci/build-run-docker.sh

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,32 @@
11
#!/bin/bash
22

33
script_dir=$(cd "$(dirname "$0")" && pwd)
4-
. "$script_dir/shared.sh"
4+
root_dir="${script_dir}/.."
5+
6+
. "${script_dir}/shared.sh"
57

68
set -e
79
# Disable cause it makes shared script not to work properly
810
#set -x
911

1012
mkdir -p target
13+
mkdir -p "${HOME}"/.cargo
14+
mkdir -p "${HOME}"/.cache/sccache
1115

1216
DOCKER="$1"
1317
TARGET="$2"
1418
SKIP_TESTS="$3"
1519

1620
travis_fold start "fetch.image.${TARGET}"
1721
travis_time_start
18-
travis_do_cmd sh ci/fetch-rust-docker.sh "$TARGET"
22+
travis_do_cmd sh ci/fetch-rust-docker.sh "${TARGET}"
1923
travis_time_finish
2024
travis_fold end "fetch.image.${TARGET}"
2125

2226
if [ -f "ci/docker/$DOCKER/Dockerfile" ]; then
2327
travis_fold start "build.Dockerfile.${DOCKER}"
2428
travis_time_start
25-
travis_do_cmd docker build -t "$DOCKER" "ci/docker/$DOCKER/"
29+
travis_do_cmd docker build -t "$DOCKER" "ci/docker/${DOCKER}/"
2630
travis_time_finish
2731
travis_fold end "build.Dockerfile.${DOCKER}"
2832
fi
@@ -31,23 +35,28 @@ fi
3135
docker run \
3236
--entrypoint sh \
3337
--user "$(id -u)":"$(id -g)" \
34-
--volume "$(rustc --print sysroot)":/travis-rust:ro \
35-
--volume "$(pwd)":/src:ro \
36-
--volume "$(pwd)"/target:/src/target \
37-
--workdir /src \
38-
--env TARGET="$TARGET" \
39-
--env SKIP_TESTS="$SKIP_TESTS" \
40-
--env CARGO_HOME=/src/target/cargo-home \
41-
--env CARGO_TARGET_DIR=/src/target \
38+
--volume "$(rustc --print sysroot)":/rustc-sysroot:ro \
39+
--volume "${root_dir}":/checkout:ro \
40+
--volume "${root_dir}"/target:/checkout/target \
41+
--workdir /checkout \
42+
--env TARGET="${TARGET}" \
43+
--env SKIP_TESTS="${SKIP_TESTS}" \
44+
--volume "${HOME}/.cargo:/cargo" \
45+
--env CARGO_HOME=/cargo \
46+
--env CARGO_TARGET_DIR=/checkout/target \
4247
--env LIBZ_SYS_STATIC=1 \
48+
--volume "${HOME}"/.cache/sccache:/sccache \
49+
--env SCCACHE_DIR=/sccache \
50+
--env RUSTC_WRAPPER=sccache \
4351
--tty \
4452
--init \
45-
"$DOCKER" \
46-
-c 'PATH="$PATH":/travis-rust/bin exec sh ci/run.sh'
53+
--rm \
54+
"${DOCKER}" \
55+
-c 'PATH="${PATH}":/rustc-sysroot/bin sh ci/run.sh'
4756

4857
# check that rustup-init was built with ssl support
4958
# see https://github.com/rust-lang/rustup.rs/issues/1051
50-
if ! (nm target/"$TARGET"/release/rustup-init | grep -q Curl_ssl_version); then
59+
if ! (nm target/"${TARGET}"/release/rustup-init | grep -q Curl_ssl_version); then
5160
echo "Missing ssl support!!!!" >&2
5261
exit 1
5362
fi

0 commit comments

Comments
 (0)