FROM ubuntu:20.04 ARG \ RUST_VERSION=1.73.0 \ GOLANG_VERSION=1.21.3 \ NODE_MAJOR=18 \ SCCACHE_VERSION=v0.5.4 SHELL ["/bin/bash", "-o", "pipefail", "-c"] ENV \ DEBIAN_FRONTEND=noninteractive \ TZ=UTC # golang ENV PATH="/usr/local/go/bin:$PATH" # rust ENV \ RUSTUP_HOME=/usr/local/rustup \ CARGO_HOME=/usr/local/cargo \ PATH="$PATH:/usr/local/cargo/bin" RUN apt-get update && \ apt-get install --no-install-recommends -y \ # basic tzdata \ apt-transport-https \ sudo \ build-essential \ git \ vim \ jq \ ca-certificates \ curl \ gnupg \ lld \ cmake \ # docs mscgen \ # solana compiling libssl-dev \ libudev-dev \ pkg-config \ zlib1g-dev \ llvm \ clang \ cmake \ make \ libprotobuf-dev \ protobuf-compiler \ && \ # buildkite curl -fsSL https://keys.openpgp.org/vks/v1/by-fingerprint/32A37959C2FA5C3C99EFBC32A79206696452D198 | gpg --dearmor -o /usr/share/keyrings/buildkite-agent-archive-keyring.gpg && \ echo "deb [signed-by=/usr/share/keyrings/buildkite-agent-archive-keyring.gpg] https://apt.buildkite.com/buildkite-agent stable main" | tee /etc/apt/sources.list.d/buildkite-agent.list && \ apt-get update && \ apt-get install -y buildkite-agent && \ # gh curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg && \ sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg && \ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null && \ apt-get update && \ apt-get install -y gh && \ # rust 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 clippy && \ rustup target add wasm32-unknown-unknown && \ cargo install cargo-audit && \ cargo install cargo-hack && \ cargo install cargo-sort && \ cargo install mdbook && \ cargo install mdbook-linkcheck && \ cargo install svgbob_cli && \ cargo install wasm-pack && \ cargo install rustfilt && \ chmod -R a+w $CARGO_HOME $RUSTUP_HOME && \ rm -rf $CARGO_HOME/registry && \ # sccache curl -LOsS "https://github.com/mozilla/sccache/releases/download/$SCCACHE_VERSION/sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl.tar.gz" && \ tar -xzf "sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl.tar.gz" && \ mv "sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl"/sccache "$CARGO_HOME/bin/" && \ rm "sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl.tar.gz" && \ rm -rf "sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl" && \ # nextest curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C "$CARGO_HOME/bin" && \ # golang curl -LOsS "https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz" && \ tar -C /usr/local -xzf "go$GOLANG_VERSION.linux-amd64.tar.gz" && \ rm "go$GOLANG_VERSION.linux-amd64.tar.gz" && \ # nodejs sudo mkdir -p /etc/apt/keyrings && \ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list && \ sudo apt-get update && \ sudo apt-get install -y nodejs && \ # setup path mkdir /.cache && \ chmod -R a+w /.cache && \ mkdir /.config && \ chmod -R a+w /.config && \ mkdir /.npm && \ chmod -R a+w /.npm && \ # clean lists rm -rf /var/lib/apt/lists/*