From d11ecc6444d4c7e376ec505d78a8e7d2a194d4df Mon Sep 17 00:00:00 2001 From: 0xmountaintop <37070449+0xmountaintop@users.noreply.github.com> Date: Wed, 9 Oct 2024 16:39:31 +1100 Subject: [PATCH] ci: add github workflow for docker build & publish (#24) --- .dockerignore | 1 + .github/workflows/docker-build.yml | 38 ++++++++++++++++++++++++++++++ docker/Dockerfile.cloud | 23 ++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/docker-build.yml create mode 100644 docker/Dockerfile.cloud diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +target/ diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 0000000..8628319 --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,38 @@ +name: Docker Build and Push + +on: + push: + tags: + - '*' + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push cloud Docker image + uses: docker/build-push-action@v4 + with: + context: . + file: docker/Dockerfile.cloud + push: true + tags: scrolltech/sdk-cloud-prover:${{ github.ref_name }},scrolltech/sdk-cloud-prover:latest + + # - name: Build and push local Docker image + # uses: docker/build-push-action@v4 + # with: + # context: . + # file: docker/Dockerfile.local + # push: true + # tags: scrolltech/sdk-local-prover:${{ github.ref_name }},scrolltech/sdk-local-prover:latest diff --git a/docker/Dockerfile.cloud b/docker/Dockerfile.cloud new file mode 100644 index 0000000..df5d7c0 --- /dev/null +++ b/docker/Dockerfile.cloud @@ -0,0 +1,23 @@ +# Use the official Rust image as the base image +FROM scrolltech/go-rust-builder:go-1.21-rust-nightly-2023-12-03 as builder + +# Set the working directory +WORKDIR /usr/src/app + +# Copy the entire project +COPY . . + +# Build the project +RUN cargo build --release --example cloud + +# Create a new stage with a minimal Ubuntu image +FROM ubuntu:20.04 + +# Install necessary dependencies +RUN apt-get update && apt-get install -y libssl-dev && rm -rf /var/lib/apt/lists/* + +# Copy the built binary from the builder stage +COPY --from=builder /usr/src/app/target/release/examples/cloud /usr/local/bin/cloud + +# Set the entrypoint +ENTRYPOINT ["cloud"]