106 lines
3.7 KiB
Docker
106 lines
3.7 KiB
Docker
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/*
|