From 8f8f6eb1a1d9c87999542f906ef8d135d6c11fa2 Mon Sep 17 00:00:00 2001 From: sbaizet <74511063+sbaizet-ledger@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:20:03 +0200 Subject: [PATCH] build(ci): make all intermediate images compatible with multi platforms (#1291) --- .github/workflows/intermediate-docker.yml | 212 +++++++++++++++++++--- 1 file changed, 186 insertions(+), 26 deletions(-) diff --git a/.github/workflows/intermediate-docker.yml b/.github/workflows/intermediate-docker.yml index d533956e61..c0152f945d 100644 --- a/.github/workflows/intermediate-docker.yml +++ b/.github/workflows/intermediate-docker.yml @@ -29,31 +29,191 @@ defaults: working-directory: 'build/dockerfiles/intermediate' jobs: - build-and-push: + build-and-publish-cuda-go-rust-builder: 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 - env: - GO_VERSION: ${{ inputs.GO_VERSION }} - RUST_VERSION: ${{ inputs.RUST_VERSION }} - PYTHON_VERSION: ${{ inputs.PYTHON_VERSION }} - CUDA_VERSION: ${{ inputs.CUDA_VERSION }} - - name: Publish - run: | - make publish - env: - GO_VERSION: ${{ inputs.GO_VERSION }} - RUST_VERSION: ${{ inputs.RUST_VERSION }} - PYTHON_VERSION: ${{ inputs.PYTHON_VERSION }} - CUDA_VERSION: ${{ inputs.CUDA_VERSION }} + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@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 image + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + file: build/dockerfiles/intermediate/cuda-go-rust-builder.Dockerfile + tags: scrolltech/cuda-go-rust-builder:cuda-${{ github.event.inputs.CUDA_VERSION }}-go-${{ github.event.inputs.GO_VERSION }}-rust-${{ github.event.inputs.RUST_VERSION }} + build-args: | + CUDA_VERSION: ${{ github.event.inputs.CUDA_VERSION }} + GO_VERSION: ${{ github.event.inputs.GO_VERSION }} + RUST_VERSION: ${{ github.event.inputs.RUST_VERSION }} + + build-and-publish-go-rust-builder: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@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 image + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + file: build/dockerfiles/intermediate/go-rust-builder.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: scrolltech/go-rust-builder:go-${{ github.event.inputs.GO_VERSION }}-rust-${{ github.event.inputs.RUST_VERSION }} + build-args: | + GO_VERSION: ${{ github.event.inputs.GO_VERSION }} + RUST_VERSION: ${{ github.event.inputs.RUST_VERSION }} + + build-and-publish-go-alpine-builder: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@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 image + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + file: build/dockerfiles/intermediate/go-alpine-builder.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: scrolltech/go-alpine-builder:${{ github.event.inputs.GO_VERSION }} + build-args: | + GO_VERSION: ${{ github.event.inputs.GO_VERSION }} + RUST_VERSION: ${{ github.event.inputs.RUST_VERSION }} + + build-and-publish-rust-builder: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@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 image + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + file: build/dockerfiles/intermediate/rust-builder.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: scrolltech/rust-builder:${{ github.event.inputs.RUST_VERSION }} + build-args: | + RUST_VERSION: ${{ github.event.inputs.RUST_VERSION }} + + build-and-publish-rust-alpine-builder: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@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 image + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + file: build/dockerfiles/intermediate/rust-alpine-builder.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: scrolltech/rust-alpine-builder:${{ github.event.inputs.RUST_VERSION }} + build-args: | + RUST_VERSION: ${{ github.event.inputs.RUST_VERSION }} + + build-and-publish-go-rust-alpine-builder: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@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 image + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + file: build/dockerfiles/intermediate/go-rust-alpine-builder.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: scrolltech/go-rust-alpine-builder:go-${{ github.event.inputs.GO_VERSION }}-rust-${{ github.event.inputs.RUST_VERSION }} + build-args: | + GO_VERSION: ${{ github.event.inputs.GO_VERSION }} + RUST_VERSION: ${{ github.event.inputs.RUST_VERSION }} + + build-and-publish-py-runner: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@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 image + id: build + uses: docker/build-push-action@v5 + with: + context: . + push: true + file: build/dockerfiles/intermediate/py-runner.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: scrolltech/py-runner:${{ github.event.inputs.PYTHON_VERSION }} + build-args: | + CUDA_VERSION: ${{ github.event.inputs.CUDA_VERSION }} + GO_VERSION: ${{ github.event.inputs.GO_VERSION }} + RUST_VERSION: ${{ github.event.inputs.RUST_VERSION }} +