Skip to content

Commit 006c921

Browse files
yihausakridge
authored andcommitted
ci: introduce ci/docker/env.sh (#3774)
Co-authored-by: sakridge <[email protected]> (cherry picked from commit f320175)
1 parent 8dadea5 commit 006c921

File tree

6 files changed

+52
-14
lines changed

6 files changed

+52
-14
lines changed

ci/docker-run-default-image.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ set -e
55
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
66

77
# shellcheck disable=SC1091
8-
source "$here/rust-version.sh"
8+
source "$here/docker/env.sh"
99

10-
"$here/docker-run.sh" "${ci_docker_image:?}" "$@"
10+
"$here/docker-run.sh" "${CI_DOCKER_IMAGE:?}" "$@"

ci/docker/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
FROM ubuntu:20.04
1+
ARG BASE_IMAGE=
2+
FROM ${BASE_IMAGE}
23

34
ARG \
45
RUST_VERSION= \

ci/docker/build.sh

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,24 @@ set -e
55
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
66

77
# shellcheck disable=SC1091
8-
source "$here/../rust-version.sh"
8+
source "$here/env.sh"
99

1010
platform=()
1111
if [[ $(uname -m) = arm64 ]]; then
1212
# Ref: https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/#tldr
1313
platform+=(--platform linux/amd64)
1414
fi
1515

16-
echo "build image: ${ci_docker_image:?}"
16+
echo "build image: ${CI_DOCKER_IMAGE:?}"
1717
docker build "${platform[@]}" \
1818
-f "$here/Dockerfile" \
19-
--build-arg "RUST_VERSION=${rust_stable:?}" \
20-
--build-arg "RUST_NIGHTLY_VERSION=${rust_nightly:?}" \
21-
-t "$ci_docker_image" .
19+
--build-arg "BASE_IMAGE=${BASE_IMAGE}" \
20+
--build-arg "RUST_VERSION=${RUST_VERSION}" \
21+
--build-arg "RUST_NIGHTLY_VERSION=${RUST_NIGHTLY_VERSION}" \
22+
--build-arg "GOLANG_VERSION=${GOLANG_VERSION}" \
23+
--build-arg "NODE_MAJOR=${NODE_MAJOR}" \
24+
--build-arg "SCCACHE_VERSION=${SCCACHE_VERSION}" \
25+
--build-arg "GRCOV_VERSION=${GRCOV_VERSION}" \
26+
-t "$CI_DOCKER_IMAGE" .
2227

23-
docker push "$ci_docker_image"
28+
docker push "$CI_DOCKER_IMAGE"

ci/docker/env.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env bash
2+
3+
ci_docker_env_sh_here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
4+
5+
# shellcheck disable=SC1091
6+
source "${ci_docker_env_sh_here}/../rust-version.sh"
7+
8+
if [[ -z "${rust_stable}" || -z "${rust_nightly}" ]]; then
9+
echo "Error: rust_stable or rust_nightly is empty. Please check rust-version.sh." >&2
10+
exit 1
11+
fi
12+
13+
export BASE_IMAGE=ubuntu:22.04
14+
export RUST_VERSION="${rust_stable}"
15+
export RUST_NIGHTLY_VERSION="${rust_nightly}"
16+
export GOLANG_VERSION=1.21.3
17+
export NODE_MAJOR=18
18+
export SCCACHE_VERSION=v0.8.1
19+
export GRCOV_VERSION=v0.8.18
20+
21+
hash_vars=(
22+
"${BASE_IMAGE}"
23+
"${RUST_VERSION}"
24+
"${RUST_NIGHTLY_VERSION}"
25+
"${GOLANG_VERSION}"
26+
"${NODE_MAJOR}"
27+
"${SCCACHE_VERSION}"
28+
"${GRCOV_VERSION}"
29+
)
30+
hash_input=$(IFS="_"; echo "${hash_vars[*]}")
31+
ci_docker_hash=$(echo -n "${hash_input}" | sha256sum | head -c 8)
32+
33+
SANITIZED_BASE_IMAGE="${BASE_IMAGE//:/-}"
34+
export CI_DOCKER_IMAGE="anzaxyz/ci:${SANITIZED_BASE_IMAGE}_rust-${RUST_VERSION}_${RUST_NIGHTLY_VERSION}_${ci_docker_hash}"

ci/rust-version.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ export rust_stable="$stable_version"
3737

3838
export rust_nightly=nightly-"$nightly_version"
3939

40-
export ci_docker_image="anzaxyz/ci:rust_${rust_stable}_${rust_nightly}"
41-
4240
[[ -z $1 ]] || (
4341

4442
rustup_install() {

net/net.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,9 @@ build() {
192192
supported=("20.04")
193193
declare MAYBE_DOCKER=
194194
if [[ $(uname) != Linux || ! " ${supported[*]} " =~ $(lsb_release -sr) ]]; then
195-
# shellcheck source=ci/rust-version.sh
196-
source "$SOLANA_ROOT"/ci/rust-version.sh
197-
MAYBE_DOCKER="ci/docker-run.sh ${ci_docker_image:?}"
195+
# shellcheck source=ci/docker/env.sh
196+
source "$SOLANA_ROOT"/ci/docker/env.sh
197+
MAYBE_DOCKER="ci/docker-run.sh ${CI_DOCKER_IMAGE:?}"
198198
fi
199199
SECONDS=0
200200
(

0 commit comments

Comments
 (0)