diff --git a/ci/docker-rust-nightly/Dockerfile b/ci/docker-rust-nightly/Dockerfile index 3ebddaf47..4f48ff57c 100644 --- a/ci/docker-rust-nightly/Dockerfile +++ b/ci/docker-rust-nightly/Dockerfile @@ -1,8 +1,9 @@ FROM solanalabs/rust +ARG nightly=nightly-2018-08-14 RUN set -x && \ - rustup install nightly && \ - rustup default nightly && \ - rustup component add clippy-preview --toolchain=nightly && \ + rustup install $nightly && \ + rustup default $nightly && \ + rustup component add clippy-preview --toolchain=$nightly && \ rustc --version && \ cargo --version diff --git a/ci/docker-rust-nightly/README.md b/ci/docker-rust-nightly/README.md index 0406b0bac..b6d1511ce 100644 --- a/ci/docker-rust-nightly/README.md +++ b/ci/docker-rust-nightly/README.md @@ -1,6 +1,21 @@ Docker image containing rust nightly and some preinstalled crates used in CI. -This image may be manually updated by running `./build.sh` if you are a member +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, but it is also automatically updated periodically by [this automation](https://buildkite.com/solana-labs/solana-ci-docker-rust-nightly). + +## Moving to a newer nightly + +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. Locally update the `ARG nightly=xyz` line in `ci/docker-rust-nightly/Dockerfile` +1. Run `ci/docker-rust-nightly/build.sh` to rebuild the nightly image locally +1. Run `ci/docker-run.sh --nopull solanalabs/rust-nightly ci/test-nightly.sh` to + confirm the new nightly image builds. Fix any issues as needed +1. Run `CI=true ci/docker-rust-nightly/build.sh` to push the new nightly image to dockerhub.com. + **Note that all CI may be broken now until the next step is completed.** +1. Merge the update to `ARG nightly=xyz` and any codebase adjustments needed. diff --git a/ci/docker-rust-nightly/build.sh b/ci/docker-rust-nightly/build.sh index d65b4a92f..98411a50c 100755 --- a/ci/docker-rust-nightly/build.sh +++ b/ci/docker-rust-nightly/build.sh @@ -3,4 +3,10 @@ cd "$(dirname "$0")" docker build -t solanalabs/rust-nightly . -docker push solanalabs/rust-nightly + +maybeEcho= +if [[ -z $CI ]]; then + echo "Not CI, skipping |docker push|" + maybeEcho="echo" +fi +$maybeEcho docker push solanalabs/rust-nightly