diff --git a/.github/workflows/intermediate-docker.yml b/.github/workflows/intermediate-docker.yml new file mode 100644 index 000000000..9fab76064 --- /dev/null +++ b/.github/workflows/intermediate-docker.yml @@ -0,0 +1,39 @@ +name: Intermediate Docker + +on: + workflow_dispatch: + inputs: + GO_VERSION: + description: 'Go version' + required: true + type: string + default: '1.19' + RUST_VERSION: + description: 'Rust toolchain version' + required: true + type: string + default: 'nightly-2022-12-10' + +defaults: + run: + working-directory: 'build/dockerfiles/intermediate' + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build + run: | + make all + - name: Publish + run: | + make publish diff --git a/build/dockerfiles/intermediate/Makefile b/build/dockerfiles/intermediate/Makefile index a70adc5d1..eacd79d7e 100644 --- a/build/dockerfiles/intermediate/Makefile +++ b/build/dockerfiles/intermediate/Makefile @@ -1,45 +1,40 @@ -GO_VERSION := 1.18 +# GO_VERSION := 1.19 +# RUST_VERSION := nightly-2022-12-10 PYTHON_VERSION := 3.10 -RUST_VERSION := nightly-2022-12-10 + +ifeq ($(GO_VERSION),) + $(error GO_VERSION is not set) +endif +ifeq ($(RUST_VERSION),) + $(error RUST_VERSION is not set) +endif .PHONY: all go-alpine-builder rust-builder rust-alpine-builder go-rust-alpine-builder go-rust-builder py-runner go-rust-builder: - docker build -t scrolltech/go-rust-builder:latest -f go-rust-builder.Dockerfile ./ - docker image tag scrolltech/go-rust-builder:latest scrolltech/go-rust-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) + docker build -t scrolltech/go-rust-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) -f go-rust-builder.Dockerfile ./ --build-arg GO_VERSION=$(GO_VERSION) --build-arg RUST_VERSION=$(RUST_VERSION) go-alpine-builder: - docker build -t scrolltech/go-alpine-builder:latest -f go-alpine-builder.Dockerfile ./ - docker image tag scrolltech/go-alpine-builder:latest scrolltech/go-alpine-builder:$(GO_VERSION) + docker build -t scrolltech/go-alpine-builder:$(GO_VERSION) -f go-alpine-builder.Dockerfile ./ --build-arg GO_VERSION=$(GO_VERSION) rust-builder: - docker build -t scrolltech/rust-builder:latest -f rust-builder.Dockerfile ./ - docker image tag scrolltech/rust-builder:latest scrolltech/rust-builder:$(RUST_VERSION) + docker build -t scrolltech/rust-builder:$(RUST_VERSION) -f rust-builder.Dockerfile ./ --build-arg RUST_VERSION=$(RUST_VERSION) rust-alpine-builder: - docker build -t scrolltech/rust-alpine-builder:latest -f rust-alpine-builder.Dockerfile ./ - docker image tag scrolltech/rust-alpine-builder:latest scrolltech/rust-alpine-builder:$(RUST_VERSION) + docker build -t scrolltech/rust-alpine-builder:$(RUST_VERSION) -f rust-alpine-builder.Dockerfile ./ --build-arg RUST_VERSION=$(RUST_VERSION) go-rust-alpine-builder: - docker build -t scrolltech/go-rust-alpine-builder:latest -f go-rust-alpine-builder.Dockerfile ./ - docker image tag scrolltech/go-rust-alpine-builder:latest scrolltech/go-rust-alpine-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) + docker build -t scrolltech/go-rust-alpine-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) -f go-rust-alpine-builder.Dockerfile ./ --build-arg GO_VERSION=$(GO_VERSION) --build-arg RUST_VERSION=$(RUST_VERSION) py-runner: - docker build -t scrolltech/py-runner:latest -f py-runner.Dockerfile ./ - docker image tag scrolltech/py-runner:latest scrolltech/py-runner:$(PYTHON_VERSION) + docker build -t scrolltech/py-runner:$(PYTHON_VERSION) -f py-runner.Dockerfile ./ all: go-alpine-builder rust-builder rust-alpine-builder go-rust-alpine-builder go-rust-builder py-runner publish: - docker push scrolltech/go-alpine-builder:latest docker push scrolltech/go-alpine-builder:$(GO_VERSION) - docker push scrolltech/rust-builder:latest docker push scrolltech/rust-builder:$(RUST_VERSION) - docker push scrolltech/rust-alpine-builder:latest docker push scrolltech/rust-alpine-builder:$(RUST_VERSION) - docker push scrolltech/go-rust-alpine-builder:latest docker push scrolltech/go-rust-alpine-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) - docker push scrolltech/go-rust-builder:latest docker push scrolltech/go-rust-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) - docker push scrolltech/py-runner:latest docker push scrolltech/py-runner:$(PYTHON_VERSION) diff --git a/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile b/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile index 08db5b334..15443864f 100644 --- a/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile +++ b/build/dockerfiles/intermediate/go-alpine-builder.Dockerfile @@ -1,4 +1,6 @@ -FROM golang:1.18-alpine +ARG GO_VERSION=1.19 + +FROM golang:${GO_VERSION}-alpine # ENV GOPROXY https://goproxy.cn,direct diff --git a/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile b/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile index a90ccee1e..f28001f7b 100644 --- a/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile +++ b/build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile @@ -1,6 +1,8 @@ -FROM golang:1.18-alpine +ARG GO_VERSION=1.19 +ARG RUST_VERSION=nightly-2022-12-10 + +FROM golang:${GO_VERSION}-alpine ARG CARGO_CHEF_TAG=0.1.41 -ARG DEFAULT_RUST_TOOLCHAIN=nightly-2022-12-10 RUN apk add --no-cache gcc musl-dev linux-headers git ca-certificates openssl-dev @@ -24,7 +26,8 @@ RUN set -eux; \ wget "$url"; \ chmod +x rustup-init; -RUN ./rustup-init -y --no-modify-path --default-toolchain ${DEFAULT_RUST_TOOLCHAIN}; \ +ARG RUST_VERSION +RUN ./rustup-init -y --no-modify-path --default-toolchain ${RUST_VERSION}; \ rm rustup-init; \ chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \ rustup --version; \ diff --git a/build/dockerfiles/intermediate/go-rust-builder.Dockerfile b/build/dockerfiles/intermediate/go-rust-builder.Dockerfile index 6fb532d11..562796a5e 100644 --- a/build/dockerfiles/intermediate/go-rust-builder.Dockerfile +++ b/build/dockerfiles/intermediate/go-rust-builder.Dockerfile @@ -1,3 +1,6 @@ +ARG GO_VERSION=1.19 +ARG RUST_VERSION=nightly-2022-12-10 + FROM ubuntu:20.04 RUN apt-get update && ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime @@ -14,7 +17,8 @@ ENV PATH="/root/.cargo/bin:${PATH}" ENV CARGO_HOME=/root/.cargo # Add Toolchain -RUN rustup toolchain install nightly-2022-12-10 +ARG RUST_VERSION +RUN rustup toolchain install ${RUST_VERSION} # TODO: make this ARG ENV CARGO_CHEF_TAG=0.1.41 @@ -23,12 +27,9 @@ RUN cargo install cargo-chef --locked --version ${CARGO_CHEF_TAG} \ && rm -rf $CARGO_HOME/registry/ # Install Go +ARG GO_VERSION RUN rm -rf /usr/local/go -# for 1.17 -# RUN wget https://go.dev/dl/go1.17.13.linux-amd64.tar.gz -# RUN tar -C /usr/local -xzf go1.17.13.linux-amd64.tar.gz -# for 1.18 -RUN wget https://go.dev/dl/go1.18.9.linux-amd64.tar.gz -RUN tar -C /usr/local -xzf go1.18.9.linux-amd64.tar.gz +RUN wget https://go.dev/dl/go${GO_VERSION}.1.linux-amd64.tar.gz +RUN tar -C /usr/local -xzf go${GO_VERSION}.1.linux-amd64.tar.gz ENV PATH="/usr/local/go/bin:${PATH}" diff --git a/build/dockerfiles/intermediate/rust-alpine-builder.Dockerfile b/build/dockerfiles/intermediate/rust-alpine-builder.Dockerfile index 1cc0c40d2..6154bca6d 100644 --- a/build/dockerfiles/intermediate/rust-alpine-builder.Dockerfile +++ b/build/dockerfiles/intermediate/rust-alpine-builder.Dockerfile @@ -1,7 +1,8 @@ +ARG RUST_VERSION=nightly-2022-12-10 + ARG ALPINE_VERSION=3.15 FROM alpine:${ALPINE_VERSION} ARG CARGO_CHEF_TAG=0.1.41 -ARG DEFAULT_RUST_TOOLCHAIN=nightly-2022-12-10 RUN apk add --no-cache \ ca-certificates \ @@ -27,7 +28,8 @@ RUN set -eux; \ wget "$url"; \ chmod +x rustup-init; -RUN ./rustup-init -y --no-modify-path --default-toolchain ${DEFAULT_RUST_TOOLCHAIN}; \ +ARG RUST_VERSION +RUN ./rustup-init -y --no-modify-path --default-toolchain ${RUST_VERSION}; \ rm rustup-init; \ chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \ rustup --version; \ diff --git a/build/dockerfiles/intermediate/rust-builder.Dockerfile b/build/dockerfiles/intermediate/rust-builder.Dockerfile index 0dcdaca17..8101694b0 100644 --- a/build/dockerfiles/intermediate/rust-builder.Dockerfile +++ b/build/dockerfiles/intermediate/rust-builder.Dockerfile @@ -1,3 +1,5 @@ +ARG RUST_VERSION=nightly-2022-12-10 + FROM ubuntu:20.04 RUN apt-get update && ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime @@ -13,4 +15,5 @@ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y ENV PATH="/root/.cargo/bin:${PATH}" # Add Toolchain -RUN rustup toolchain install nightly-2022-12-10 +ARG RUST_VERSION +RUN rustup toolchain install ${RUST_VERSION}