ci: merge docker images (#35078)
* ci: add new ci docker image * ci: use the new docker image * fix shellcheck * add readme for the new docker image * remove old docker images * remove unused check in docs/build.sh * use the new image in net.sh
This commit is contained in:
parent
b36d1e227f
commit
8363ebfd64
|
@ -22,5 +22,5 @@ EOF
|
||||||
|
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
group "bench" \
|
group "bench" \
|
||||||
"$(build_steps "bench-part-1" ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/bench/part1.sh")" \
|
"$(build_steps "bench-part-1" "ci/docker-run-default-image.sh ci/bench/part1.sh")" \
|
||||||
"$(build_steps "bench-part-2" ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/bench/part2.sh")"
|
"$(build_steps "bench-part-2" "ci/docker-run-default-image.sh ci/bench/part2.sh")"
|
||||||
|
|
|
@ -12,7 +12,7 @@ partitions=$(
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
{
|
{
|
||||||
"name": "partitions",
|
"name": "partitions",
|
||||||
"command": ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/stable/run-partition.sh",
|
"command": "ci/docker-run-default-image.sh ci/stable/run-partition.sh",
|
||||||
"timeout_in_minutes": 30,
|
"timeout_in_minutes": 30,
|
||||||
"agent": "$agent",
|
"agent": "$agent",
|
||||||
"parallelism": 2,
|
"parallelism": 2,
|
||||||
|
@ -25,7 +25,7 @@ local_cluster_partitions=$(
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
{
|
{
|
||||||
"name": "local-cluster",
|
"name": "local-cluster",
|
||||||
"command": ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/stable/run-local-cluster-partially.sh",
|
"command": "ci/docker-run-default-image.sh ci/stable/run-local-cluster-partially.sh",
|
||||||
"timeout_in_minutes": 30,
|
"timeout_in_minutes": 30,
|
||||||
"agent": "$agent",
|
"agent": "$agent",
|
||||||
"parallelism": 5,
|
"parallelism": 5,
|
||||||
|
@ -38,7 +38,7 @@ localnet=$(
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
{
|
{
|
||||||
"name": "localnet",
|
"name": "localnet",
|
||||||
"command": ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/stable/run-localnet.sh",
|
"command": "ci/docker-run-default-image.sh ci/stable/run-localnet.sh",
|
||||||
"timeout_in_minutes": 30,
|
"timeout_in_minutes": 30,
|
||||||
"agent": "$agent"
|
"agent": "$agent"
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,9 +140,9 @@ wait_step() {
|
||||||
}
|
}
|
||||||
|
|
||||||
all_test_steps() {
|
all_test_steps() {
|
||||||
command_step checks1 ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-checks.sh" 20 check
|
command_step checks1 "ci/docker-run-default-image.sh ci/test-checks.sh" 20 check
|
||||||
command_step checks2 ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-dev-context-only-utils.sh check-bins" 15 check
|
command_step checks2 "ci/docker-run-default-image.sh ci/test-dev-context-only-utils.sh check-bins" 15 check
|
||||||
command_step checks3 ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-dev-context-only-utils.sh check-all-targets" 15 check
|
command_step checks3 "ci/docker-run-default-image.sh ci/test-dev-context-only-utils.sh check-all-targets" 15 check
|
||||||
wait_step
|
wait_step
|
||||||
|
|
||||||
# Full test suite
|
# Full test suite
|
||||||
|
@ -156,7 +156,7 @@ all_test_steps() {
|
||||||
^ci/rust-version.sh \
|
^ci/rust-version.sh \
|
||||||
^ci/test-docs.sh \
|
^ci/test-docs.sh \
|
||||||
; then
|
; then
|
||||||
command_step doctest ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/test-docs.sh" 15
|
command_step doctest "ci/docker-run-default-image.sh ci/test-docs.sh" 15
|
||||||
else
|
else
|
||||||
annotate --style info --context test-docs \
|
annotate --style info --context test-docs \
|
||||||
"Docs skipped as no .rs files were modified"
|
"Docs skipped as no .rs files were modified"
|
||||||
|
@ -182,7 +182,7 @@ all_test_steps() {
|
||||||
cargo-test-sbf$ \
|
cargo-test-sbf$ \
|
||||||
; then
|
; then
|
||||||
cat >> "$output_file" <<"EOF"
|
cat >> "$output_file" <<"EOF"
|
||||||
- command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_stable_docker_image ci/test-stable-sbf.sh"
|
- command: "ci/docker-run-default-image.sh ci/test-stable-sbf.sh"
|
||||||
name: "stable-sbf"
|
name: "stable-sbf"
|
||||||
timeout_in_minutes: 35
|
timeout_in_minutes: 35
|
||||||
artifact_paths: "sbf-dumps.tar.bz2"
|
artifact_paths: "sbf-dumps.tar.bz2"
|
||||||
|
@ -226,7 +226,7 @@ EOF
|
||||||
^ci/test-stable.sh \
|
^ci/test-stable.sh \
|
||||||
^sdk/ \
|
^sdk/ \
|
||||||
; then
|
; then
|
||||||
command_step wasm ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/test-wasm.sh" 20
|
command_step wasm "ci/docker-run-default-image.sh ci/test-wasm.sh" 20
|
||||||
else
|
else
|
||||||
annotate --style info \
|
annotate --style info \
|
||||||
"wasm skipped as no relevant files were modified"
|
"wasm skipped as no relevant files were modified"
|
||||||
|
@ -258,7 +258,7 @@ EOF
|
||||||
^ci/test-coverage.sh \
|
^ci/test-coverage.sh \
|
||||||
^scripts/coverage.sh \
|
^scripts/coverage.sh \
|
||||||
; then
|
; then
|
||||||
command_step coverage ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-coverage.sh" 80
|
command_step coverage "ci/docker-run-default-image.sh ci/test-coverage.sh" 80
|
||||||
else
|
else
|
||||||
annotate --style info --context test-coverage \
|
annotate --style info --context test-coverage \
|
||||||
"Coverage skipped as no .rs files were modified"
|
"Coverage skipped as no .rs files were modified"
|
||||||
|
@ -296,7 +296,7 @@ pull_or_push_steps() {
|
||||||
|
|
||||||
if [ -z "$diff_other_than_version_bump" ]; then
|
if [ -z "$diff_other_than_version_bump" ]; then
|
||||||
echo "Diff only contains version bump."
|
echo "Diff only contains version bump."
|
||||||
command_step checks ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-checks.sh" 20
|
command_step checks "ci/docker-run-default-image.sh ci/test-checks.sh" 20
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# Pull requests to not run these steps.
|
# Pull requests to not run these steps.
|
||||||
steps:
|
steps:
|
||||||
- name: "cargo audit"
|
- name: "cargo audit"
|
||||||
command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_stable_docker_image ci/do-audit.sh"
|
command: "ci/docker-run-default-image.sh ci/do-audit.sh"
|
||||||
agents:
|
agents:
|
||||||
queue: "release-build"
|
queue: "release-build"
|
||||||
timeout_in_minutes: 10
|
timeout_in_minutes: 10
|
||||||
|
|
|
@ -134,7 +134,7 @@ wait_step() {
|
||||||
}
|
}
|
||||||
|
|
||||||
all_test_steps() {
|
all_test_steps() {
|
||||||
command_step checks ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-checks.sh" 20
|
command_step checks "ci/docker-run-default-image.sh ci/test-checks.sh" 20
|
||||||
wait_step
|
wait_step
|
||||||
|
|
||||||
# Full test suite
|
# Full test suite
|
||||||
|
@ -146,7 +146,7 @@ all_test_steps() {
|
||||||
^ci/rust-version.sh \
|
^ci/rust-version.sh \
|
||||||
^ci/test-docs.sh \
|
^ci/test-docs.sh \
|
||||||
; then
|
; then
|
||||||
command_step doctest ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/test-docs.sh" 15
|
command_step doctest "ci/docker-run-default-image.sh ci/test-docs.sh" 15
|
||||||
else
|
else
|
||||||
annotate --style info --context test-docs \
|
annotate --style info --context test-docs \
|
||||||
"Docs skipped as no .rs files were modified"
|
"Docs skipped as no .rs files were modified"
|
||||||
|
@ -168,7 +168,7 @@ all_test_steps() {
|
||||||
^sdk/ \
|
^sdk/ \
|
||||||
; then
|
; then
|
||||||
cat >> "$output_file" <<"EOF"
|
cat >> "$output_file" <<"EOF"
|
||||||
- command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_stable_docker_image ci/test-stable-sbf.sh"
|
- command: "ci/docker-run-default-image.sh ci/test-stable-sbf.sh"
|
||||||
name: "stable-sbf"
|
name: "stable-sbf"
|
||||||
timeout_in_minutes: 35
|
timeout_in_minutes: 35
|
||||||
artifact_paths: "sbf-dumps.tar.bz2"
|
artifact_paths: "sbf-dumps.tar.bz2"
|
||||||
|
@ -208,7 +208,7 @@ EOF
|
||||||
^ci/test-stable.sh \
|
^ci/test-stable.sh \
|
||||||
^sdk/ \
|
^sdk/ \
|
||||||
; then
|
; then
|
||||||
command_step wasm ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_stable_docker_image ci/test-wasm.sh" 20
|
command_step wasm "ci/docker-run-default-image.sh ci/test-wasm.sh" 20
|
||||||
else
|
else
|
||||||
annotate --style info \
|
annotate --style info \
|
||||||
"wasm skipped as no relevant files were modified"
|
"wasm skipped as no relevant files were modified"
|
||||||
|
@ -238,7 +238,7 @@ EOF
|
||||||
^ci/test-coverage.sh \
|
^ci/test-coverage.sh \
|
||||||
^scripts/coverage.sh \
|
^scripts/coverage.sh \
|
||||||
; then
|
; then
|
||||||
command_step coverage ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-coverage.sh" 80
|
command_step coverage "ci/docker-run-default-image.sh ci/test-coverage.sh" 80
|
||||||
else
|
else
|
||||||
annotate --style info --context test-coverage \
|
annotate --style info --context test-coverage \
|
||||||
"Coverage skipped as no .rs files were modified"
|
"Coverage skipped as no .rs files were modified"
|
||||||
|
|
|
@ -11,7 +11,7 @@ fi
|
||||||
|
|
||||||
source ci/rust-version.sh stable
|
source ci/rust-version.sh stable
|
||||||
|
|
||||||
ci/docker-run.sh $rust_nightly_docker_image ci/dependabot-updater.sh
|
ci/docker-run-default-image.sh ci/dependabot-updater.sh
|
||||||
|
|
||||||
if [[ $(git status --short :**/Cargo.lock | wc -l) -eq 0 ]]; then
|
if [[ $(git status --short :**/Cargo.lock | wc -l) -eq 0 ]]; then
|
||||||
echo --- ok
|
echo --- ok
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source "$here/rust-version.sh"
|
||||||
|
|
||||||
|
"$here/docker-run.sh" "${ci_docker_image:?}" "$@"
|
|
@ -1,21 +0,0 @@
|
||||||
FROM solanalabs/rust:1.75.0
|
|
||||||
|
|
||||||
ARG date
|
|
||||||
ARG GRCOV_VERSION=v0.8.18
|
|
||||||
|
|
||||||
RUN \
|
|
||||||
rustup install nightly-$date && \
|
|
||||||
rustup component add clippy --toolchain=nightly-$date && \
|
|
||||||
rustup component add rustfmt --toolchain=nightly-$date && \
|
|
||||||
rustup show && \
|
|
||||||
rustc --version && \
|
|
||||||
cargo --version && \
|
|
||||||
# grcov
|
|
||||||
curl -LOsS "https://github.com/mozilla/grcov/releases/download/$GRCOV_VERSION/grcov-x86_64-unknown-linux-musl.tar.bz2" && \
|
|
||||||
tar -xf grcov-x86_64-unknown-linux-musl.tar.bz2 && \
|
|
||||||
mv ./grcov $CARGO_HOME/bin && \
|
|
||||||
rm grcov-x86_64-unknown-linux-musl.tar.bz2 && \
|
|
||||||
# codecov
|
|
||||||
curl -Os https://uploader.codecov.io/latest/linux/codecov && \
|
|
||||||
chmod +x codecov && \
|
|
||||||
mv codecov /usr/bin
|
|
|
@ -1,42 +0,0 @@
|
||||||
Docker image containing rust nightly and some preinstalled crates used in CI.
|
|
||||||
|
|
||||||
This image may be manually updated by running `CI=true ./build.sh` if you are a member
|
|
||||||
of the [Solana Labs](https://hub.docker.com/u/solanalabs/) Docker Hub
|
|
||||||
organization.
|
|
||||||
|
|
||||||
## Moving to a newer nightly
|
|
||||||
|
|
||||||
NOTE: Follow instructions in docker-rust/README.md before this when updating the stable
|
|
||||||
rust version as well.
|
|
||||||
|
|
||||||
We pin the version of nightly (see the `ARG nightly=xyz` line in `Dockerfile`)
|
|
||||||
to avoid the build breaking at unexpected times, as occasionally nightly will
|
|
||||||
introduce breaking changes.
|
|
||||||
|
|
||||||
To update the pinned version:
|
|
||||||
1. Edit `Dockerfile` to match the desired stable rust version to base on if needed.
|
|
||||||
1. Run `ci/docker-rust-nightly/build.sh` to rebuild the nightly image locally,
|
|
||||||
or potentially `ci/docker-rust-nightly/build.sh YYYY-MM-DD` if there's a
|
|
||||||
specific YYYY-MM-DD that is desired (default is today's build).
|
|
||||||
Check https://rust-lang.github.io/rustup-components-history/ for build
|
|
||||||
status
|
|
||||||
1. Update `ci/rust-version.sh` to reflect the new nightly `YYYY-MM-DD`
|
|
||||||
1. Run `SOLANA_ALLOCATE_TTY=1 SOLANA_DOCKER_RUN_NOSETUID=1 ci/docker-run.sh --nopull solanalabs/rust-nightly:YYYY-MM-DD ci/test-checks.sh`
|
|
||||||
and `SOLANA_ALLOCATE_TTY=1 SOLANA_DOCKER_RUN_NOSETUID=1 ci/docker-run.sh --nopull solanalabs/rust-nightly:YYYY-MM-DD ci/test-coverage.sh [args]...`
|
|
||||||
to confirm the new nightly image builds. Fix any issues as needed
|
|
||||||
1. Run `docker login` to enable pushing images to Docker Hub, if you're authorized.
|
|
||||||
1. Run `CI=true ci/docker-rust-nightly/build.sh YYYY-MM-DD` to push the new nightly image to dockerhub.com.
|
|
||||||
1. Send a PR with the `ci/rust-version.sh` change and any codebase adjustments needed.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Resource is denied
|
|
||||||
|
|
||||||
When running `CI=true ci/docker-rust-nightly/build.sh`, you see:
|
|
||||||
|
|
||||||
```
|
|
||||||
denied: requested access to the resource is denied
|
|
||||||
```
|
|
||||||
|
|
||||||
Run `docker login` to enable pushing images to Docker Hub. Contact @mvines or @garious
|
|
||||||
to get write access.
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
platform=()
|
|
||||||
if [[ $(uname -m) = arm64 ]]; then
|
|
||||||
# Ref: https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/#tldr
|
|
||||||
platform+=(--platform linux/amd64)
|
|
||||||
fi
|
|
||||||
|
|
||||||
nightlyDate=${1:-$(date +%Y-%m-%d)}
|
|
||||||
docker build "${platform[@]}" -t solanalabs/rust-nightly:"$nightlyDate" --build-arg date="$nightlyDate" .
|
|
||||||
|
|
||||||
maybeEcho=
|
|
||||||
if [[ -z $CI ]]; then
|
|
||||||
echo "Not CI, skipping |docker push|"
|
|
||||||
maybeEcho="echo"
|
|
||||||
fi
|
|
||||||
$maybeEcho docker push solanalabs/rust-nightly:"$nightlyDate"
|
|
|
@ -1,11 +0,0 @@
|
||||||
Docker image containing rust and some preinstalled packages used in CI.
|
|
||||||
|
|
||||||
NOTE: Recreate rust-nightly docker image after this when updating the stable rust
|
|
||||||
version! Both docker images must be updated in tandem.
|
|
||||||
|
|
||||||
This image is manually maintained:
|
|
||||||
1. Edit `Dockerfile` to match the desired rust version
|
|
||||||
1. Run `docker login` to enable pushing images to Docker Hub, if you're authorized.
|
|
||||||
1. Run `./build.sh` to publish the new image, if you are a member of the [Solana
|
|
||||||
Labs](https://hub.docker.com/u/solanalabs/) Docker Hub organization.
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
|
|
||||||
|
|
||||||
platform=()
|
|
||||||
if [[ $(uname -m) = arm64 ]]; then
|
|
||||||
# Ref: https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/#tldr
|
|
||||||
platform+=(--platform linux/amd64)
|
|
||||||
fi
|
|
||||||
|
|
||||||
docker build "${platform[@]}" -t solanalabs/rust .
|
|
||||||
|
|
||||||
read -r rustc version _ < <(docker run solanalabs/rust rustc --version)
|
|
||||||
[[ $rustc = rustc ]]
|
|
||||||
docker tag solanalabs/rust:latest solanalabs/rust:"$version"
|
|
||||||
docker push solanalabs/rust:"$version"
|
|
||||||
docker push solanalabs/rust:latest
|
|
|
@ -1,10 +1,12 @@
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
ARG \
|
ARG \
|
||||||
RUST_VERSION=1.75.0 \
|
RUST_VERSION= \
|
||||||
|
RUST_NIGHTLY_VERSION= \
|
||||||
GOLANG_VERSION=1.21.3 \
|
GOLANG_VERSION=1.21.3 \
|
||||||
NODE_MAJOR=18 \
|
NODE_MAJOR=18 \
|
||||||
SCCACHE_VERSION=v0.5.4
|
SCCACHE_VERSION=v0.5.4 \
|
||||||
|
GRCOV_VERSION=v0.8.18
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
|
@ -21,7 +23,10 @@ ENV \
|
||||||
CARGO_HOME=/usr/local/cargo \
|
CARGO_HOME=/usr/local/cargo \
|
||||||
PATH="$PATH:/usr/local/cargo/bin"
|
PATH="$PATH:/usr/local/cargo/bin"
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN \
|
||||||
|
if [ -z "$RUST_VERSION" ]; then echo "ERROR: The RUST_VERSION argument is required!" && exit 1; fi && \
|
||||||
|
if [ -z "$RUST_NIGHTLY_VERSION" ]; then echo "ERROR: The RUST_NIGHTLY_VERSION argument is required!" && exit 1; fi && \
|
||||||
|
apt-get update && \
|
||||||
apt-get install --no-install-recommends -y \
|
apt-get install --no-install-recommends -y \
|
||||||
# basic
|
# basic
|
||||||
tzdata \
|
tzdata \
|
||||||
|
@ -65,6 +70,9 @@ RUN apt-get update && \
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh -s -- --no-modify-path --profile minimal --default-toolchain $RUST_VERSION -y && \
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh -s -- --no-modify-path --profile minimal --default-toolchain $RUST_VERSION -y && \
|
||||||
rustup component add rustfmt && \
|
rustup component add rustfmt && \
|
||||||
rustup component add clippy && \
|
rustup component add clippy && \
|
||||||
|
rustup install $RUST_NIGHTLY_VERSION && \
|
||||||
|
rustup component add clippy --toolchain=$RUST_NIGHTLY_VERSION && \
|
||||||
|
rustup component add rustfmt --toolchain=$RUST_NIGHTLY_VERSION && \
|
||||||
rustup target add wasm32-unknown-unknown && \
|
rustup target add wasm32-unknown-unknown && \
|
||||||
cargo install cargo-audit && \
|
cargo install cargo-audit && \
|
||||||
cargo install cargo-hack && \
|
cargo install cargo-hack && \
|
||||||
|
@ -74,6 +82,9 @@ RUN apt-get update && \
|
||||||
cargo install svgbob_cli && \
|
cargo install svgbob_cli && \
|
||||||
cargo install wasm-pack && \
|
cargo install wasm-pack && \
|
||||||
cargo install rustfilt && \
|
cargo install rustfilt && \
|
||||||
|
rustup show && \
|
||||||
|
rustc --version && \
|
||||||
|
cargo --version && \
|
||||||
chmod -R a+w $CARGO_HOME $RUSTUP_HOME && \
|
chmod -R a+w $CARGO_HOME $RUSTUP_HOME && \
|
||||||
rm -rf $CARGO_HOME/registry && \
|
rm -rf $CARGO_HOME/registry && \
|
||||||
# sccache
|
# sccache
|
||||||
|
@ -101,5 +112,14 @@ RUN apt-get update && \
|
||||||
chmod -R a+w /.config && \
|
chmod -R a+w /.config && \
|
||||||
mkdir /.npm && \
|
mkdir /.npm && \
|
||||||
chmod -R a+w /.npm && \
|
chmod -R a+w /.npm && \
|
||||||
|
# grcov
|
||||||
|
curl -LOsS "https://github.com/mozilla/grcov/releases/download/$GRCOV_VERSION/grcov-x86_64-unknown-linux-musl.tar.bz2" && \
|
||||||
|
tar -xf grcov-x86_64-unknown-linux-musl.tar.bz2 && \
|
||||||
|
mv ./grcov $CARGO_HOME/bin && \
|
||||||
|
rm grcov-x86_64-unknown-linux-musl.tar.bz2 && \
|
||||||
|
# codecov
|
||||||
|
curl -Os https://uploader.codecov.io/latest/linux/codecov && \
|
||||||
|
chmod +x codecov && \
|
||||||
|
mv codecov /usr/bin && \
|
||||||
# clean lists
|
# clean lists
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
|
@ -0,0 +1,11 @@
|
||||||
|
Docker image containing rust, rust nightly and some preinstalled packages used in CI
|
||||||
|
|
||||||
|
This image is manually maintained:
|
||||||
|
|
||||||
|
#### CLI
|
||||||
|
|
||||||
|
1. Edit
|
||||||
|
1. `ci/rust-version.sh` for rust and rust nightly version
|
||||||
|
2. `ci/docker/Dockerfile` for other packages
|
||||||
|
2. Ensure you're a member of the [Solana Docker Hub Organization](https://hub.docker.com/u/solanalabs/) and already `docker login`
|
||||||
|
3. Run `ci/docker/build.sh` to build/publish the new image
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source "$here/../rust-version.sh"
|
||||||
|
|
||||||
|
platform=()
|
||||||
|
if [[ $(uname -m) = arm64 ]]; then
|
||||||
|
# Ref: https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/#tldr
|
||||||
|
platform+=(--platform linux/amd64)
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "build image: ${ci_docker_image:?}"
|
||||||
|
docker build "${platform[@]}" \
|
||||||
|
-f "$here/Dockerfile" \
|
||||||
|
--build-arg "RUST_VERSION=${rust_stable:?}" \
|
||||||
|
--build-arg "RUST_NIGHTLY_VERSION=${rust_nightly:?}" \
|
||||||
|
-t "$ci_docker_image" .
|
||||||
|
|
||||||
|
docker push "$ci_docker_image"
|
|
@ -72,7 +72,7 @@ for Cargo_toml in $Cargo_tomls; do
|
||||||
echo "Attempt ${i} of ${numRetries}"
|
echo "Attempt ${i} of ${numRetries}"
|
||||||
# The rocksdb package does not build with the stock rust docker image so use
|
# The rocksdb package does not build with the stock rust docker image so use
|
||||||
# the solana rust docker image
|
# the solana rust docker image
|
||||||
if ci/docker-run.sh "$rust_stable_docker_image" bash -exc "cd $crate; $cargoCommand"; then
|
if ci/docker-run-default-image.sh bash -exc "cd $crate; $cargoCommand"; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,10 @@ fi
|
||||||
|
|
||||||
|
|
||||||
export rust_stable="$stable_version"
|
export rust_stable="$stable_version"
|
||||||
export rust_stable_docker_image=solanalabs/rust:"$stable_version"
|
|
||||||
|
|
||||||
export rust_nightly=nightly-"$nightly_version"
|
export rust_nightly=nightly-"$nightly_version"
|
||||||
export rust_nightly_docker_image=solanalabs/rust-nightly:"$nightly_version"
|
|
||||||
|
export ci_docker_image="solanalabs/ci:rust_${rust_stable}_${rust_nightly}"
|
||||||
|
|
||||||
[[ -z $1 ]] || (
|
[[ -z $1 ]] || (
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get the directory of the current script
|
||||||
|
script_dir_by_bash_source=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||||
|
|
||||||
|
script_dir_by_0=$(cd "$(dirname "$0")" && pwd)
|
||||||
|
|
||||||
|
echo "script_dir_by_bash_source = $script_dir_by_bash_source"
|
||||||
|
echo "script_dir_by_0 = $script_dir_by_0"
|
|
@ -6,12 +6,10 @@ cd "$(dirname "$0")"
|
||||||
# shellcheck source=ci/env.sh
|
# shellcheck source=ci/env.sh
|
||||||
source ../ci/env.sh
|
source ../ci/env.sh
|
||||||
|
|
||||||
: "${rust_stable_docker_image:=}" # Pacify shellcheck
|
|
||||||
|
|
||||||
# shellcheck source=ci/rust-version.sh
|
# shellcheck source=ci/rust-version.sh
|
||||||
source ../ci/rust-version.sh
|
source ../ci/rust-version.sh
|
||||||
../ci/docker-run.sh "$rust_stable_docker_image" docs/build-cli-usage.sh
|
../ci/docker-run-default-image.sh docs/build-cli-usage.sh
|
||||||
../ci/docker-run.sh "$rust_stable_docker_image" docs/convert-ascii-to-svg.sh
|
../ci/docker-run-default-image.sh docs/convert-ascii-to-svg.sh
|
||||||
./set-solana-release-tag.sh
|
./set-solana-release-tag.sh
|
||||||
|
|
||||||
# Get current channel
|
# Get current channel
|
||||||
|
|
|
@ -191,7 +191,7 @@ build() {
|
||||||
if [[ $(uname) != Linux || ! " ${supported[*]} " =~ $(lsb_release -sr) ]]; then
|
if [[ $(uname) != Linux || ! " ${supported[*]} " =~ $(lsb_release -sr) ]]; then
|
||||||
# shellcheck source=ci/rust-version.sh
|
# shellcheck source=ci/rust-version.sh
|
||||||
source "$SOLANA_ROOT"/ci/rust-version.sh
|
source "$SOLANA_ROOT"/ci/rust-version.sh
|
||||||
MAYBE_DOCKER="ci/docker-run.sh $rust_stable_docker_image"
|
MAYBE_DOCKER="ci/docker-run.sh ${ci_docker_image:?}"
|
||||||
fi
|
fi
|
||||||
SECONDS=0
|
SECONDS=0
|
||||||
(
|
(
|
||||||
|
|
|
@ -20,8 +20,7 @@ fi
|
||||||
|
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
rm -rf usr/
|
rm -rf usr/
|
||||||
../../ci/docker-run.sh "$rust_stable_docker_image" \
|
../../ci/docker-run-default-image.sh scripts/cargo-install-all.sh sdk/docker-solana/usr
|
||||||
scripts/cargo-install-all.sh sdk/docker-solana/usr
|
|
||||||
|
|
||||||
cp -f ../../scripts/run.sh usr/bin/solana-run.sh
|
cp -f ../../scripts/run.sh usr/bin/solana-run.sh
|
||||||
cp -f ../../fetch-spl.sh usr/bin/
|
cp -f ../../fetch-spl.sh usr/bin/
|
||||||
|
|
Loading…
Reference in New Issue