Commit decf4513 authored by Adrian Sutton's avatar Adrian Sutton Committed by GitHub

cannon: Build the cannon docker image and publish on cannon release tags (#12100)

* cannon: Build the cannon docker image and publish on cannon release tags.

* ci: Add docker builds as dependencies so they prevent merging if they fail.

* cannon: Include specific implementation builds in final docker image.
parent 56502ddc
...@@ -1673,6 +1673,12 @@ workflows: ...@@ -1673,6 +1673,12 @@ workflows:
- op-e2e-fault-proof-tests - op-e2e-fault-proof-tests
- op-e2e-action-tests - op-e2e-action-tests
- op-e2e-action-tests-altda - op-e2e-action-tests-altda
# Not needed for the devnet but we want to make sure they build successfully
- cannon-docker-build
- op-dispute-mon-docker-build
- op-program-docker-build
- op-supervisor-docker-build
- proofs-tools-docker-build
- docker-build: - docker-build:
name: <<matrix.docker_name>>-docker-build name: <<matrix.docker_name>>-docker-build
docker_tags: <<pipeline.git.revision>>,<<pipeline.git.branch>> docker_tags: <<pipeline.git.revision>>,<<pipeline.git.branch>>
...@@ -1691,6 +1697,7 @@ workflows: ...@@ -1691,6 +1697,7 @@ workflows:
- da-server - da-server
- op-supervisor - op-supervisor
- op-deployer - op-deployer
- cannon
- cannon-prestate: - cannon-prestate:
requires: requires:
- go-mod-download - go-mod-download
...@@ -1734,7 +1741,7 @@ workflows: ...@@ -1734,7 +1741,7 @@ workflows:
type: approval type: approval
filters: filters:
tags: tags:
only: /^(da-server|ci-builder(-rust)?|proofs-tools|ufm-[a-z0-9\-]*|op-[a-z0-9\-]*)\/v.*/ only: /^(da-server|ci-builder(-rust)?|proofs-tools|cannon|ufm-[a-z0-9\-]*|op-[a-z0-9\-]*)\/v.*/
branches: branches:
ignore: /.*/ ignore: /.*/
# Standard (medium) cross-platform docker images go here # Standard (medium) cross-platform docker images go here
...@@ -1752,6 +1759,7 @@ workflows: ...@@ -1752,6 +1759,7 @@ workflows:
- op-ufm - op-ufm
- op-supervisor - op-supervisor
- op-deployer - op-deployer
- cannon
name: <<matrix.docker_name>>-docker-release name: <<matrix.docker_name>>-docker-release
docker_tags: <<pipeline.git.revision>> docker_tags: <<pipeline.git.revision>>
platforms: "linux/amd64,linux/arm64" platforms: "linux/amd64,linux/arm64"
...@@ -1781,6 +1789,7 @@ workflows: ...@@ -1781,6 +1789,7 @@ workflows:
- op-ufm - op-ufm
- op-supervisor - op-supervisor
- op-deployer - op-deployer
- cannon
name: <<matrix.op_component>>-cross-platform name: <<matrix.op_component>>-cross-platform
requires: requires:
- op-node-docker-release - op-node-docker-release
...@@ -1793,6 +1802,7 @@ workflows: ...@@ -1793,6 +1802,7 @@ workflows:
- op-ufm-docker-release - op-ufm-docker-release
- op-supervisor-docker-release - op-supervisor-docker-release
- op-deployer-docker-release - op-deployer-docker-release
- cannon-docker-release
# Standard (xlarge) AMD-only docker images go here # Standard (xlarge) AMD-only docker images go here
- docker-build: - docker-build:
matrix: matrix:
...@@ -1922,6 +1932,7 @@ workflows: ...@@ -1922,6 +1932,7 @@ workflows:
- op-dispute-mon - op-dispute-mon
- op-conductor - op-conductor
- op-supervisor - op-supervisor
- cannon
name: <<matrix.docker_name>>-docker-publish name: <<matrix.docker_name>>-docker-publish
docker_tags: <<pipeline.git.revision>>,<<pipeline.git.branch>> docker_tags: <<pipeline.git.revision>>,<<pipeline.git.branch>>
platforms: "linux/amd64,linux/arm64" platforms: "linux/amd64,linux/arm64"
...@@ -1941,6 +1952,7 @@ workflows: ...@@ -1941,6 +1952,7 @@ workflows:
- op-dispute-mon - op-dispute-mon
- op-conductor - op-conductor
- op-supervisor - op-supervisor
- cannon
name: <<matrix.op_component>>-cross-platform name: <<matrix.op_component>>-cross-platform
requires: requires:
- <<matrix.op_component>>-docker-publish - <<matrix.op_component>>-docker-publish
......
...@@ -116,6 +116,7 @@ RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache ...@@ -116,6 +116,7 @@ RUN --mount=type=cache,target=/go/pkg/mod --mount=type=cache,target=/root/.cache
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS cannon-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS cannon-target
COPY --from=cannon-builder /app/cannon/bin/cannon /usr/local/bin/ COPY --from=cannon-builder /app/cannon/bin/cannon /usr/local/bin/
COPY --from=cannon-builder /app/cannon/multicannon/embeds/* /usr/local/bin/
CMD ["cannon"] CMD ["cannon"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-program-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-program-target
......
...@@ -6,7 +6,7 @@ DOCKER_REPO=$1 ...@@ -6,7 +6,7 @@ DOCKER_REPO=$1
GIT_TAG=$2 GIT_TAG=$2
GIT_SHA=$3 GIT_SHA=$3
IMAGE_NAME=$(echo "$GIT_TAG" | grep -Eow '^(ci-builder(-rust)?|da-server|proofs-tools|ufm-[a-z0-9\-]*|op-[a-z0-9\-]*)' || true) IMAGE_NAME=$(echo "$GIT_TAG" | grep -Eow '^(ci-builder(-rust)?|da-server|proofs-tools|cannon|ufm-[a-z0-9\-]*|op-[a-z0-9\-]*)' || true)
if [ -z "$IMAGE_NAME" ]; then if [ -z "$IMAGE_NAME" ]; then
echo "image name could not be parsed from git tag '$GIT_TAG'" echo "image name could not be parsed from git tag '$GIT_TAG'"
exit 1 exit 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment