From 1e08f5741e9f91e7f51b80965e5d265607bdb82f Mon Sep 17 00:00:00 2001 From: Enderson Maia Date: Tue, 18 Mar 2025 15:27:47 -0300 Subject: [PATCH 1/9] chore(sdk): bump Debian base image to bookworm-20250317-slim --- .changeset/honest-spoons-appear.md | 5 +++++ packages/sdk/docker-bake.hcl | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/honest-spoons-appear.md diff --git a/.changeset/honest-spoons-appear.md b/.changeset/honest-spoons-appear.md new file mode 100644 index 00000000..c38b6855 --- /dev/null +++ b/.changeset/honest-spoons-appear.md @@ -0,0 +1,5 @@ +--- +"@cartesi/sdk": patch +--- + +bump debian base image to bookworm-20250317-slim diff --git a/packages/sdk/docker-bake.hcl b/packages/sdk/docker-bake.hcl index 84c24de8..f335c3fa 100644 --- a/packages/sdk/docker-bake.hcl +++ b/packages/sdk/docker-bake.hcl @@ -5,7 +5,7 @@ target "default" { inherits = ["docker-metadata-action", "docker-platforms"] args = { ALTO_VERSION = "0.0.4" - BASE_IMAGE = "debian:bookworm-20250224" + BASE_IMAGE = "debian:bookworm-20250317-slim" CARTESI_ESPRESSO_READER_VERSION = "0.2.3-node-20250128" CARTESI_IMAGE_KERNEL_VERSION = "0.20.0" CARTESI_MACHINE_EMULATOR_VERSION = "0.18.1" From bcb32b22e6c4ae044c0beee1eab00c36a86f01e0 Mon Sep 17 00:00:00 2001 From: Enderson Maia Date: Tue, 18 Mar 2025 15:42:53 -0300 Subject: [PATCH 2/9] feat(sdk): add cartesi/rollups-node container release A container image will be released only with the binaries needed to run a rollups-node with optional auxiliary services like rollups-graphql and espresso-reader. --- .github/workflows/rollups-node.yml | 91 ++++++++++++++ .github/workflows/runtime.yaml | 91 ++++++++++++++ packages/sdk/Dockerfile | 167 ++++++++++++++++++-------- packages/sdk/docker-bake.hcl | 8 +- packages/sdk/docker-bake.override.hcl | 4 + 5 files changed, 312 insertions(+), 49 deletions(-) create mode 100644 .github/workflows/rollups-node.yml create mode 100644 .github/workflows/runtime.yaml diff --git a/.github/workflows/rollups-node.yml b/.github/workflows/rollups-node.yml new file mode 100644 index 00000000..7cb7ddfe --- /dev/null +++ b/.github/workflows/rollups-node.yml @@ -0,0 +1,91 @@ +name: rollups-node +on: + workflow_call: + secrets: + DOCKERHUB_USERNAME: + required: true + DOCKERHUB_TOKEN: + required: true + pull_request: + paths: + - .github/workflows/sdk.yaml + - packages/sdk/** +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} + cancel-in-progress: true +permissions: + contents: read + packages: write + id-token: write + actions: write +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Get package tag/version + id: package-version + if: ${{ github.event_name == 'push' }} + run: | + jq -r '"PACKAGE_VERSION=\(.version)"' packages/sdk/package.json >> "$GITHUB_OUTPUT" + + - name: Docker meta + id: meta + uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 + with: + images: | + docker.io/cartesi/sdk-node,enable=${{ github.event_name != 'pull_request' }} + ghcr.io/cartesi/sdk-node + tags: | + type=raw,value=${{ steps.package-version.outputs.PACKAGE_VERSION }},enable=${{ github.event_name == 'push' }} + type=ref,event=pr + labels: | + org.opencontainers.image.title=Cartesi Rollups SDK Node + org.opencontainers.image.description=Cartesi Rollups SDK Node with optional services + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Login to DockerHub + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/bake-action@4a9a8d494466d37134e2bfca2d3a8de8fb2681ad # v5.13.0 + if: ${{ !startsWith(github.ref, 'refs/tags/sdk@') }} + with: + workdir: packages/sdk + targets: rollups-node + files: | + ./docker-bake.hcl + ./docker-bake.platforms.hcl + ${{ steps.meta.outputs.bake-file }} + set: | + *.cache-from=type=gha + *.cache-to=type=gha,mode=max + push: true + + - uses: depot/setup-action@b0b1ea4f69e92ebf5dea3f8713a1b0c37b2126a5 # v1.6.0 + - name: Build and push (depot) + uses: depot/bake-action@58d7160c6bfa64eb85e384209e6f2f5ad17948bb # v1.11.0 + if: ${{ startsWith(github.ref, 'refs/tags/sdk@') }} + with: + project: ${{ vars.DEPOT_PROJECT }} + workdir: packages/sdk + targets: rollups-node + files: | + ./docker-bake.hcl + ./docker-bake.platforms.hcl + ${{ steps.meta.outputs.bake-file }} + push: true diff --git a/.github/workflows/runtime.yaml b/.github/workflows/runtime.yaml new file mode 100644 index 00000000..e31f92a0 --- /dev/null +++ b/.github/workflows/runtime.yaml @@ -0,0 +1,91 @@ +name: runtime +on: + workflow_call: + secrets: + DOCKERHUB_USERNAME: + required: true + DOCKERHUB_TOKEN: + required: true + pull_request: + paths: + - .github/workflows/runtime.yaml + - packages/sdk/** +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} + cancel-in-progress: true +permissions: + contents: read + packages: write + id-token: write + actions: write +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Get package tag/version + id: package-version + if: ${{ github.event_name == 'push' }} + run: | + jq -r '"PACKAGE_VERSION=\(.version)"' packages/sdk/package.json >> "$GITHUB_OUTPUT" + + - name: Docker meta + id: meta + uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 + with: + images: | + docker.io/cartesi/sdk-node,enable=${{ github.event_name != 'pull_request' }} + ghcr.io/cartesi/sdk-node + tags: | + type=raw,value=${{ steps.package-version.outputs.PACKAGE_VERSION }},enable=${{ github.event_name == 'push' }} + type=ref,event=pr + labels: | + org.opencontainers.image.title=Cartesi Rollups SDK Node + org.opencontainers.image.description=Cartesi Rollups SDK Node with optional services + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Login to DockerHub + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/bake-action@4a9a8d494466d37134e2bfca2d3a8de8fb2681ad # v5.13.0 + if: ${{ !startsWith(github.ref, 'refs/tags/sdk@') }} + with: + workdir: packages/sdk + targets: runtime + files: | + ./docker-bake.hcl + ./docker-bake.platforms.hcl + ${{ steps.meta.outputs.bake-file }} + set: | + *.cache-from=type=gha + *.cache-to=type=gha,mode=max + push: true + + - uses: depot/setup-action@b0b1ea4f69e92ebf5dea3f8713a1b0c37b2126a5 # v1.6.0 + - name: Build and push (depot) + uses: depot/bake-action@58d7160c6bfa64eb85e384209e6f2f5ad17948bb # v1.11.0 + if: ${{ startsWith(github.ref, 'refs/tags/sdk@') }} + with: + project: ${{ vars.DEPOT_PROJECT }} + workdir: packages/sdk + targets: runtime + files: | + ./docker-bake.hcl + ./docker-bake.platforms.hcl + ${{ steps.meta.outputs.bake-file }} + push: true diff --git a/packages/sdk/Dockerfile b/packages/sdk/Dockerfile index 2c00f7f5..fca0fe78 100644 --- a/packages/sdk/Dockerfile +++ b/packages/sdk/Dockerfile @@ -1,5 +1,4 @@ # syntax=docker.io/docker/dockerfile:1 -ARG BASE_IMAGE ARG CARTESI_ESPRESSO_READER_VERSION ARG CARTESI_IMAGE_KERNEL_VERSION ARG CARTESI_MACHINE_EMULATOR_VERSION @@ -10,6 +9,8 @@ ARG FOUNDRY_VERSION ARG LINUX_KERNEL_VERSION ARG NODEJS_VERSION ARG POSTGRES_VERSION +ARG ROLLUPS_NODE_BASE_IMAGE +ARG SDK_BASE_IMAGE ARG SU_EXEC_VERSION ARG XGENEXT2_VERSION @@ -18,8 +19,20 @@ ARG XGENEXT2_VERSION FROM ghcr.io/espressosystems/espresso-sequencer/espresso-dev-node:${ESPRESSO_DEV_NODE_TAG} AS espresso-dev-node ################################################################################ -# base image -FROM ${BASE_IMAGE} AS base +# sdk-base image +FROM ${SDK_BASE_IMAGE} AS sdk-base +SHELL ["/bin/bash", "-euo", "pipefail", "-c"] +ARG DEBIAN_FRONTEND=noninteractive +RUN < /etc/apt/sources.list.d/backports.list apt-get update apt-get install -y --no-install-recommends -t bookworm-backports \ @@ -197,33 +275,6 @@ cp /usr/local/lib/node_modules/@cartesi/devnet/export/abi/localhost.json /usr/sh cp /usr/local/lib/node_modules/@cartesi/devnet/build/anvil_state.json /usr/share/cartesi/ EOF -ENV LC_ALL=en_US.UTF-8 -ENV LANG=en_US.UTF-8 -ENV LANGUAGE=en_US:en - -# healthcheck script using net_listening JSON-RPC method -COPY alto /usr/local/bin -COPY devnet /usr/local/bin -COPY eth_isready /usr/local/bin -COPY eth_dump /usr/local/bin -COPY eth_load /usr/local/bin -COPY create_machine_snapshot /usr/local/bin - -COPY entrypoint.sh /usr/local/bin/ -COPY --from=su-exec /usr/local/src/su-exec /usr/local/bin/ -COPY --from=crane /usr/local/bin/crane /usr/local/bin/ -COPY --from=foundry /usr/local/bin/anvil /usr/local/bin/ -COPY --from=foundry /usr/local/bin/cast /usr/local/bin/ -COPY --from=go-migrate /usr/local/bin/migrate /usr/local/bin/ -COPY --from=graphql /usr/local/bin/cartesi-rollups-graphql /usr/local/bin/ -COPY --from=graphql-migration /usr/share/cartesi/rollups-graphql/migrations /usr/share/cartesi/rollups-graphql/migrations -COPY --from=espresso-reader /usr/local/bin/cartesi-rollups-espresso-reader /usr/local/bin/ -COPY --from=espresso-reader-migration /usr/share/cartesi/rollups-espresso-reader/migrations /usr/share/cartesi/rollups-espresso-reader/migrations -COPY --from=espresso-dev-node /usr/bin/espresso-dev-node /usr/local/bin/ -COPY --from=postgresql-initdb /var/lib/postgresql/data /var/lib/postgresql/data - -RUN mkdir -p /tmp/.cartesi && chmod 1777 /tmp/.cartesi - # Install cartesi-machine emulator RUN < Date: Thu, 20 Mar 2025 16:01:55 -0300 Subject: [PATCH 3/9] refactor(sdk): add CARTESI_ prefix to variables --- packages/sdk/Dockerfile | 32 ++++++++++++++++---------------- packages/sdk/docker-bake.hcl | 10 +++++----- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/packages/sdk/Dockerfile b/packages/sdk/Dockerfile index fca0fe78..332f99cd 100644 --- a/packages/sdk/Dockerfile +++ b/packages/sdk/Dockerfile @@ -1,16 +1,16 @@ # syntax=docker.io/docker/dockerfile:1 ARG CARTESI_ESPRESSO_READER_VERSION ARG CARTESI_IMAGE_KERNEL_VERSION +ARG CARTESI_LINUX_KERNEL_VERSION ARG CARTESI_MACHINE_EMULATOR_VERSION ARG CARTESI_ROLLUPS_GRAPHQL_VERSION +ARG CARTESI_ROLLUPS_NODE_BASE_IMAGE +ARG CARTESI_SDK_BASE_IMAGE ARG CRANE_VERSION ARG ESPRESSO_DEV_NODE_TAG ARG FOUNDRY_VERSION -ARG LINUX_KERNEL_VERSION ARG NODEJS_VERSION ARG POSTGRES_VERSION -ARG ROLLUPS_NODE_BASE_IMAGE -ARG SDK_BASE_IMAGE ARG SU_EXEC_VERSION ARG XGENEXT2_VERSION @@ -20,7 +20,7 @@ FROM ghcr.io/espressosystems/espresso-sequencer/espresso-dev-node:${ESPRESSO_DEV ################################################################################ # sdk-base image -FROM ${SDK_BASE_IMAGE} AS sdk-base +FROM ${CARTESI_SDK_BASE_IMAGE} AS sdk-base SHELL ["/bin/bash", "-euo", "pipefail", "-c"] ARG DEBIAN_FRONTEND=noninteractive RUN < Date: Thu, 20 Mar 2025 16:19:51 -0300 Subject: [PATCH 4/9] refactor(sdk): convention _BASE_IMAGE prefixed ARGs with full image name --- packages/sdk/Dockerfile | 18 ++++-------------- packages/sdk/docker-bake.hcl | 9 ++++----- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/packages/sdk/Dockerfile b/packages/sdk/Dockerfile index 332f99cd..e2e085f5 100644 --- a/packages/sdk/Dockerfile +++ b/packages/sdk/Dockerfile @@ -1,22 +1,12 @@ # syntax=docker.io/docker/dockerfile:1 -ARG CARTESI_ESPRESSO_READER_VERSION -ARG CARTESI_IMAGE_KERNEL_VERSION -ARG CARTESI_LINUX_KERNEL_VERSION -ARG CARTESI_MACHINE_EMULATOR_VERSION -ARG CARTESI_ROLLUPS_GRAPHQL_VERSION ARG CARTESI_ROLLUPS_NODE_BASE_IMAGE ARG CARTESI_SDK_BASE_IMAGE -ARG CRANE_VERSION -ARG ESPRESSO_DEV_NODE_TAG -ARG FOUNDRY_VERSION -ARG NODEJS_VERSION -ARG POSTGRES_VERSION -ARG SU_EXEC_VERSION -ARG XGENEXT2_VERSION +ARG ESPRESSO_DEV_NODE_BASE_IMAGE +ARG POSTGRES_BASE_IMAGE ################################################################################ # https://github.com/EspressoSystems/espresso-sequencer/pkgs/container/espresso-sequencer%2Fespresso-dev-node -FROM ghcr.io/espressosystems/espresso-sequencer/espresso-dev-node:${ESPRESSO_DEV_NODE_TAG} AS espresso-dev-node +FROM ${ESPRESSO_DEV_NODE_BASE_IMAGE} AS espresso-dev-node ################################################################################ # sdk-base image @@ -145,7 +135,7 @@ EOF ################################################################################ # postgresql initdb -FROM postgres:${POSTGRES_VERSION} AS postgresql-initdb +FROM ${POSTGRES_BASE_IMAGE} AS postgresql-initdb ENV POSTGRES_PASSWORD=password RUN /usr/local/bin/docker-ensure-initdb.sh postgres diff --git a/packages/sdk/docker-bake.hcl b/packages/sdk/docker-bake.hcl index bf1eaabb..757ba918 100644 --- a/packages/sdk/docker-bake.hcl +++ b/packages/sdk/docker-bake.hcl @@ -12,15 +12,14 @@ target "default" { CARTESI_MACHINE_EMULATOR_VERSION = "0.18.1" CARTESI_PAYMASTER_VERSION = "0.2.0" CARTESI_ROLLUPS_GRAPHQL_VERSION = "2.3.8" - CARTESI_ROLLUPS_NODE_BASE_IMAGE = "debian:bookworm-20250317-slim" + CARTESI_ROLLUPS_NODE_BASE_IMAGE = "docker.io/library/debian:bookworm-20250317-slim" CARTESI_ROLLUPS_NODE_VERSION = "2.0.0-alpha.1" - CARTESI_SDK_BASE_IMAGE = "debian:bookworm-20250317-slim" + CARTESI_SDK_BASE_IMAGE = "docker.io/library/debian:bookworm-20250317-slim" CRANE_VERSION = "0.19.1" - ESPRESSO_DEV_NODE_TAG = "20241120-patch6" + ESPRESSO_DEV_NODE_BASE_IMAGE = "ghcr.io/espressosystems/espresso-sequencer/espresso-dev-node:20241120-patch6" FOUNDRY_VERSION = "0.3.0" GO_MIGRATE_VERSION = "4.18.2" - NODEJS_VERSION = "18.19.0" - POSTGRES_VERSION = "16" + POSTGRES_BASE_IMAGE = "docker.io/library/postgres:16" SU_EXEC_VERSION = "0.2" XGENEXT2_VERSION = "1.5.6" } From d499b418fc8d9bfc7725c2f21a3d72b1be1fcbde Mon Sep 17 00:00:00 2001 From: Enderson Maia Date: Thu, 20 Mar 2025 16:36:24 -0300 Subject: [PATCH 5/9] feat(sdk): pin container image digests --- packages/sdk/docker-bake.hcl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/sdk/docker-bake.hcl b/packages/sdk/docker-bake.hcl index 757ba918..2e5cfcc8 100644 --- a/packages/sdk/docker-bake.hcl +++ b/packages/sdk/docker-bake.hcl @@ -12,14 +12,14 @@ target "default" { CARTESI_MACHINE_EMULATOR_VERSION = "0.18.1" CARTESI_PAYMASTER_VERSION = "0.2.0" CARTESI_ROLLUPS_GRAPHQL_VERSION = "2.3.8" - CARTESI_ROLLUPS_NODE_BASE_IMAGE = "docker.io/library/debian:bookworm-20250317-slim" + CARTESI_ROLLUPS_NODE_BASE_IMAGE = "docker.io/library/debian:bookworm-20250317-slim@sha256:1209d8fd77def86ceb6663deef7956481cc6c14a25e1e64daec12c0ceffcc19d" CARTESI_ROLLUPS_NODE_VERSION = "2.0.0-alpha.1" - CARTESI_SDK_BASE_IMAGE = "docker.io/library/debian:bookworm-20250317-slim" + CARTESI_SDK_BASE_IMAGE = "docker.io/library/debian:bookworm-20250317-slim@sha256:1209d8fd77def86ceb6663deef7956481cc6c14a25e1e64daec12c0ceffcc19d" CRANE_VERSION = "0.19.1" - ESPRESSO_DEV_NODE_BASE_IMAGE = "ghcr.io/espressosystems/espresso-sequencer/espresso-dev-node:20241120-patch6" + ESPRESSO_DEV_NODE_BASE_IMAGE = "ghcr.io/espressosystems/espresso-sequencer/espresso-dev-node:20241120-patch6@sha256:453264eab19e3313c85a8720c784f16f15e36bacb28ae917034e24342cecf3c3" FOUNDRY_VERSION = "0.3.0" GO_MIGRATE_VERSION = "4.18.2" - POSTGRES_BASE_IMAGE = "docker.io/library/postgres:16" + POSTGRES_BASE_IMAGE = "docker.io/library/postgres:16@sha256:e95b0cb95f719e0ce156c2bc5545c89fbd98a1a692845a5331ddc79ea61f1b1e" SU_EXEC_VERSION = "0.2" XGENEXT2_VERSION = "1.5.6" } From 3f5c0fdbf03844f7cc31635ed386e5787f86275b Mon Sep 17 00:00:00 2001 From: Enderson Maia Date: Fri, 21 Mar 2025 10:32:59 -0300 Subject: [PATCH 6/9] refactor(sdk): single base image --- .github/workflows/rollups-node.yml | 91 ------------------------------ packages/sdk/Dockerfile | 67 ++++++---------------- packages/sdk/docker-bake.hcl | 9 ++- 3 files changed, 22 insertions(+), 145 deletions(-) delete mode 100644 .github/workflows/rollups-node.yml diff --git a/.github/workflows/rollups-node.yml b/.github/workflows/rollups-node.yml deleted file mode 100644 index 7cb7ddfe..00000000 --- a/.github/workflows/rollups-node.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: rollups-node -on: - workflow_call: - secrets: - DOCKERHUB_USERNAME: - required: true - DOCKERHUB_TOKEN: - required: true - pull_request: - paths: - - .github/workflows/sdk.yaml - - packages/sdk/** -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} - cancel-in-progress: true -permissions: - contents: read - packages: write - id-token: write - actions: write -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - name: Get package tag/version - id: package-version - if: ${{ github.event_name == 'push' }} - run: | - jq -r '"PACKAGE_VERSION=\(.version)"' packages/sdk/package.json >> "$GITHUB_OUTPUT" - - - name: Docker meta - id: meta - uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 - with: - images: | - docker.io/cartesi/sdk-node,enable=${{ github.event_name != 'pull_request' }} - ghcr.io/cartesi/sdk-node - tags: | - type=raw,value=${{ steps.package-version.outputs.PACKAGE_VERSION }},enable=${{ github.event_name == 'push' }} - type=ref,event=pr - labels: | - org.opencontainers.image.title=Cartesi Rollups SDK Node - org.opencontainers.image.description=Cartesi Rollups SDK Node with optional services - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 - - - name: Login to GitHub Container Registry - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to DockerHub - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/bake-action@4a9a8d494466d37134e2bfca2d3a8de8fb2681ad # v5.13.0 - if: ${{ !startsWith(github.ref, 'refs/tags/sdk@') }} - with: - workdir: packages/sdk - targets: rollups-node - files: | - ./docker-bake.hcl - ./docker-bake.platforms.hcl - ${{ steps.meta.outputs.bake-file }} - set: | - *.cache-from=type=gha - *.cache-to=type=gha,mode=max - push: true - - - uses: depot/setup-action@b0b1ea4f69e92ebf5dea3f8713a1b0c37b2126a5 # v1.6.0 - - name: Build and push (depot) - uses: depot/bake-action@58d7160c6bfa64eb85e384209e6f2f5ad17948bb # v1.11.0 - if: ${{ startsWith(github.ref, 'refs/tags/sdk@') }} - with: - project: ${{ vars.DEPOT_PROJECT }} - workdir: packages/sdk - targets: rollups-node - files: | - ./docker-bake.hcl - ./docker-bake.platforms.hcl - ${{ steps.meta.outputs.bake-file }} - push: true diff --git a/packages/sdk/Dockerfile b/packages/sdk/Dockerfile index e2e085f5..bd00d824 100644 --- a/packages/sdk/Dockerfile +++ b/packages/sdk/Dockerfile @@ -1,6 +1,5 @@ # syntax=docker.io/docker/dockerfile:1 -ARG CARTESI_ROLLUPS_NODE_BASE_IMAGE -ARG CARTESI_SDK_BASE_IMAGE +ARG CARTESI_BASE_IMAGE ARG ESPRESSO_DEV_NODE_BASE_IMAGE ARG POSTGRES_BASE_IMAGE @@ -9,20 +8,8 @@ ARG POSTGRES_BASE_IMAGE FROM ${ESPRESSO_DEV_NODE_BASE_IMAGE} AS espresso-dev-node ################################################################################ -# sdk-base image -FROM ${CARTESI_SDK_BASE_IMAGE} AS sdk-base -SHELL ["/bin/bash", "-euo", "pipefail", "-c"] -ARG DEBIAN_FRONTEND=noninteractive -RUN < Date: Fri, 21 Mar 2025 15:04:44 -0300 Subject: [PATCH 7/9] feat(sdk): add cartesi/rollups-database container release This container image will be based on postgres and contains a pre-initialized database with rollups-node, rollups-graphql and espresso-reader database migrations ready to be used. --- .changeset/fast-pumpkins-tickle.md | 5 ++ .changeset/hot-timers-repair.md | 5 ++ .github/workflows/rollups-database.yaml | 91 +++++++++++++++++++++++++ packages/sdk/Dockerfile | 63 +++++++++++++++-- packages/sdk/docker-bake.hcl | 5 ++ packages/sdk/docker-bake.override.hcl | 4 ++ 6 files changed, 166 insertions(+), 7 deletions(-) create mode 100644 .changeset/fast-pumpkins-tickle.md create mode 100644 .changeset/hot-timers-repair.md create mode 100644 .github/workflows/rollups-database.yaml diff --git a/.changeset/fast-pumpkins-tickle.md b/.changeset/fast-pumpkins-tickle.md new file mode 100644 index 00000000..27e324e5 --- /dev/null +++ b/.changeset/fast-pumpkins-tickle.md @@ -0,0 +1,5 @@ +--- +"@cartesi/sdk": patch +--- + +add cartesi/rollups-database container image release diff --git a/.changeset/hot-timers-repair.md b/.changeset/hot-timers-repair.md new file mode 100644 index 00000000..01ef3599 --- /dev/null +++ b/.changeset/hot-timers-repair.md @@ -0,0 +1,5 @@ +--- +"@cartesi/sdk": patch +--- + +create databases and run migrations for preinitialized PostgreSQL database diff --git a/.github/workflows/rollups-database.yaml b/.github/workflows/rollups-database.yaml new file mode 100644 index 00000000..c3eb3e27 --- /dev/null +++ b/.github/workflows/rollups-database.yaml @@ -0,0 +1,91 @@ +name: rollups-database +on: + workflow_call: + secrets: + DOCKERHUB_USERNAME: + required: true + DOCKERHUB_TOKEN: + required: true + pull_request: + paths: + - .github/workflows/rollups-database.yaml + - packages/sdk/** +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} + cancel-in-progress: true +permissions: + contents: read + packages: write + id-token: write + actions: write +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Get package tag/version + id: package-version + if: ${{ github.event_name == 'push' }} + run: | + jq -r '"PACKAGE_VERSION=\(.version)"' packages/sdk/package.json >> "$GITHUB_OUTPUT" + + - name: Docker meta + id: meta + uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 + with: + images: | + docker.io/cartesi/rollups-database,enable=${{ github.event_name != 'pull_request' }} + ghcr.io/cartesi/rollups-database + tags: | + type=raw,value=${{ steps.package-version.outputs.PACKAGE_VERSION }},enable=${{ github.event_name == 'push' }} + type=ref,event=pr + labels: | + org.opencontainers.image.title=Cartesi Rollups Database + org.opencontainers.image.description=Cartesi Rollups SDK Database with pre-initialized PostgreSQL Database + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Login to DockerHub + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/bake-action@4a9a8d494466d37134e2bfca2d3a8de8fb2681ad # v5.13.0 + if: ${{ !startsWith(github.ref, 'refs/tags/sdk@') }} + with: + workdir: packages/sdk + targets: database + files: | + ./docker-bake.hcl + ./docker-bake.platforms.hcl + ${{ steps.meta.outputs.bake-file }} + set: | + *.cache-from=type=gha + *.cache-to=type=gha,mode=max + push: true + + - uses: depot/setup-action@b0b1ea4f69e92ebf5dea3f8713a1b0c37b2126a5 # v1.6.0 + - name: Build and push (depot) + uses: depot/bake-action@58d7160c6bfa64eb85e384209e6f2f5ad17948bb # v1.11.0 + if: ${{ startsWith(github.ref, 'refs/tags/sdk@') }} + with: + project: ${{ vars.DEPOT_PROJECT }} + workdir: packages/sdk + targets: database + files: | + ./docker-bake.hcl + ./docker-bake.platforms.hcl + ${{ steps.meta.outputs.bake-file }} + push: true diff --git a/packages/sdk/Dockerfile b/packages/sdk/Dockerfile index bd00d824..6439aa58 100644 --- a/packages/sdk/Dockerfile +++ b/packages/sdk/Dockerfile @@ -120,12 +120,6 @@ curl -fsSL "https://github.com/cartesi/rollups-espresso-reader/archive/refs/tags | tar --wildcards -xz -C ${ESPRESSO_DEST_FOLDER} --strip-components=6 '*/migrations/*.sql' EOF -################################################################################ -# postgresql initdb -FROM ${POSTGRES_BASE_IMAGE} AS postgresql-initdb -ENV POSTGRES_PASSWORD=password -RUN /usr/local/bin/docker-ensure-initdb.sh postgres - ################################################################################ # cartesi runtime target FROM base AS runtime @@ -184,6 +178,62 @@ COPY --from=espresso-reader /usr/local/bin/cartesi-rollups-espresso-reader /usr/ USER cartesi +################################################################################ +# postgresql initdb +FROM ${POSTGRES_BASE_IMAGE} AS postgresql-initdb + +ARG DEBIAN_FRONTEND=noninteractive +RUN < Date: Mon, 24 Mar 2025 13:13:00 -0300 Subject: [PATCH 8/9] fixup! feat(sdk): add cartesi/rollups-database container release --- .github/workflows/{rollups-database.yaml => database.yaml} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{rollups-database.yaml => database.yaml} (97%) diff --git a/.github/workflows/rollups-database.yaml b/.github/workflows/database.yaml similarity index 97% rename from .github/workflows/rollups-database.yaml rename to .github/workflows/database.yaml index c3eb3e27..cf33965a 100644 --- a/.github/workflows/rollups-database.yaml +++ b/.github/workflows/database.yaml @@ -1,4 +1,4 @@ -name: rollups-database +name: database on: workflow_call: secrets: @@ -8,7 +8,7 @@ on: required: true pull_request: paths: - - .github/workflows/rollups-database.yaml + - .github/workflows/database.yaml - packages/sdk/** concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} From b842d989c92994f245124b25a51c4789a7558e73 Mon Sep 17 00:00:00 2001 From: Enderson Maia Date: Mon, 24 Mar 2025 13:15:15 -0300 Subject: [PATCH 9/9] fixup! feat(sdk): add cartesi/rollups-node container release --- packages/sdk/Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/sdk/Dockerfile b/packages/sdk/Dockerfile index 6439aa58..80818f41 100644 --- a/packages/sdk/Dockerfile +++ b/packages/sdk/Dockerfile @@ -150,8 +150,6 @@ adduser --system --uid 102 \ cartesi EOF -RUN mkdir -p /tmp/.cartesi && chmod 1777 /tmp/.cartesi - # Install cartesi-machine emulator RUN <