Commit 26eac671 authored by Sam Stokes's avatar Sam Stokes Committed by GitHub

Fix docker cross-platform builds (#10827)

* Disable CGO for op-node. Test cross-platform

* Install latest gcp cli version before publishing docker image

* Add oplabs-gcr context to docker-build job so it can publish

* Do not save op-node docker image tag for devnet

* Use TARGETARCH to conditionally set CC, CXX

* Remove BUILDPLATFORM

* Fix dangling && in dockerfile

* Use apk instead of apt-get

* Install correct apk cross build packages

* Remove non-existent cross-build apk package

* Use bullseye instead of alpine

* Remove hardcoded CGO_ENABLED=0

* Set CC and CXX in makefile

* Add echo to makefile

* Remove echo from makefile

* Remove check-cross-platform test

* Remove default values for CC and CXX from makefile

* Add TARGETOS and TARGETARCH to top of dockerfile

* Remove echo from dockerfile

* Use debian TARGET_BASE_IMAGE

* Add cross platform args to all relevant Makefiles

* Add temp circle ci job to publish and check-cross-platform

* Set CGO_ENABLED=0. Use alpine for TARGET_BASE_IMAGE

* Use CMD instead of ENTRYPOINT for op-supervisor-target image

* Add CC, CXX, CGO_ENABLED args to op-plasma

* Remove CC and CXX from Makefiles

* Use alpine image for builder

* scheduled-docker-publish trigger changed to hourly or manual

* Fix circle ci config

* Fix warnings in dockerfile

* Attempt cross compile without setting CGO_ENABLED=0

* Add CGO_ENABLED=0 back for make op-node
parent 5be91416
...@@ -32,6 +32,9 @@ parameters: ...@@ -32,6 +32,9 @@ parameters:
sdk_dispatch: sdk_dispatch:
type: boolean type: boolean
default: false default: false
docker_publish_dispatch:
type: boolean
default: false
orbs: orbs:
go: circleci/go@1.8.0 go: circleci/go@1.8.0
...@@ -316,7 +319,10 @@ jobs: ...@@ -316,7 +319,10 @@ jobs:
- run: - run:
command: mkdir -p /tmp/docker_images command: mkdir -p /tmp/docker_images
- when: - when:
condition: "<<parameters.release>>" condition:
or:
- "<<parameters.publish>>"
- "<<parameters.release>>"
steps: steps:
- gcp-cli/install - gcp-cli/install
- when: - when:
...@@ -2093,7 +2099,10 @@ workflows: ...@@ -2093,7 +2099,10 @@ workflows:
scheduled-docker-publish: scheduled-docker-publish:
when: when:
equal: [ build_hourly, <<pipeline.schedule.name>> ] or:
- equal: [ build_hourly, <<pipeline.schedule.name>> ]
# Trigger on manual triggers if explicitly requested
- equal: [ true, << pipeline.parameters.docker_publish_dispatch >> ]
jobs: jobs:
- docker-build: - docker-build:
name: op-node-docker-publish name: op-node-docker-publish
...@@ -2104,6 +2113,11 @@ workflows: ...@@ -2104,6 +2113,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-node-cross-platform
op_component: op-node
requires:
- op-node-docker-publish
- docker-build: - docker-build:
name: op-batcher-docker-publish name: op-batcher-docker-publish
docker_name: op-batcher docker_name: op-batcher
...@@ -2113,6 +2127,11 @@ workflows: ...@@ -2113,6 +2127,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-batcher-cross-platform
op_component: op-batcher
requires:
- op-batcher-docker-publish
- docker-build: - docker-build:
name: op-program-docker-publish name: op-program-docker-publish
docker_name: op-program docker_name: op-program
...@@ -2122,6 +2141,11 @@ workflows: ...@@ -2122,6 +2141,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-program-cross-platform
op_component: op-program
requires:
- op-program-docker-publish
- docker-build: - docker-build:
name: op-proposer-docker-publish name: op-proposer-docker-publish
docker_name: op-proposer docker_name: op-proposer
...@@ -2131,6 +2155,11 @@ workflows: ...@@ -2131,6 +2155,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-proposer-cross-platform
op_component: op-proposer
requires:
- op-proposer-docker-publish
- docker-build: - docker-build:
name: op-challenger-docker-publish name: op-challenger-docker-publish
docker_name: op-challenger docker_name: op-challenger
...@@ -2140,6 +2169,11 @@ workflows: ...@@ -2140,6 +2169,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-challenger-cross-platform
op_component: op-challenger
requires:
- op-challenger-docker-publish
- docker-build: - docker-build:
name: op-dispute-mon-docker-publish name: op-dispute-mon-docker-publish
docker_name: op-dispute-mon docker_name: op-dispute-mon
...@@ -2149,6 +2183,11 @@ workflows: ...@@ -2149,6 +2183,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-dispute-mon-cross-platform
op_component: op-dispute-mon
requires:
- op-dispute-mon-docker-publish
- docker-build: - docker-build:
name: op-conductor-docker-publish name: op-conductor-docker-publish
docker_name: op-conductor docker_name: op-conductor
...@@ -2158,6 +2197,11 @@ workflows: ...@@ -2158,6 +2197,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-conductor-cross-platform
op_component: op-conductor
requires:
- op-conductor-docker-publish
- docker-build: - docker-build:
name: op-heartbeat-docker-publish name: op-heartbeat-docker-publish
docker_name: op-heartbeat docker_name: op-heartbeat
...@@ -2167,6 +2211,11 @@ workflows: ...@@ -2167,6 +2211,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-heartbeat-cross-platform
op_component: op-heartbeat
requires:
- op-heartbeat-docker-publish
- docker-build: - docker-build:
name: op-supervisor-docker-publish name: op-supervisor-docker-publish
docker_name: op-supervisor docker_name: op-supervisor
...@@ -2176,6 +2225,11 @@ workflows: ...@@ -2176,6 +2225,11 @@ workflows:
context: context:
- oplabs-gcr - oplabs-gcr
- slack - slack
- check-cross-platform:
name: op-supervisor-cross-platform
op_component: op-supervisor
requires:
- op-supervisor-docker-publish
- docker-build: - docker-build:
name: chain-mon-docker-publish name: chain-mon-docker-publish
docker_name: chain-mon docker_name: chain-mon
......
...@@ -26,7 +26,7 @@ variable "IMAGE_TAGS" { ...@@ -26,7 +26,7 @@ variable "IMAGE_TAGS" {
variable "PLATFORMS" { variable "PLATFORMS" {
// You can override this as "linux/amd64,linux/arm64". // You can override this as "linux/amd64,linux/arm64".
// Only a specify a single platform when `--load` ing into docker. // Only specify a single platform when `--load` ing into docker.
// Multi-platform is supported when outputting to disk or pushing to a registry. // Multi-platform is supported when outputting to disk or pushing to a registry.
// Multi-platform builds can be tested locally with: --set="*.output=type=image,push=false" // Multi-platform builds can be tested locally with: --set="*.output=type=image,push=false"
default = "" default = ""
......
...@@ -25,7 +25,7 @@ ifeq ($(shell uname),Darwin) ...@@ -25,7 +25,7 @@ ifeq ($(shell uname),Darwin)
endif endif
op-batcher: op-batcher:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-batcher ./cmd env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-batcher ./cmd
clean: clean:
rm bin/op-batcher rm bin/op-batcher
......
...@@ -14,7 +14,7 @@ ifeq ($(shell uname),Darwin) ...@@ -14,7 +14,7 @@ ifeq ($(shell uname),Darwin)
endif endif
op-challenger: op-challenger:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-challenger ./cmd env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-challenger ./cmd
fuzz: fuzz:
go test $(FUZZLDFLAGS) -run NOTAREALTEST -v -fuzztime 10s -fuzz FuzzKeccak ./game/keccak/matrix go test $(FUZZLDFLAGS) -run NOTAREALTEST -v -fuzztime 10s -fuzz FuzzKeccak ./game/keccak/matrix
......
...@@ -8,7 +8,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION) ...@@ -8,7 +8,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION)
LDFLAGS := -ldflags "$(LDFLAGSSTRING)" LDFLAGS := -ldflags "$(LDFLAGSSTRING)"
op-conductor: op-conductor:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-conductor ./cmd env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-conductor ./cmd
clean: clean:
rm bin/op-conductor rm bin/op-conductor
......
...@@ -9,7 +9,7 @@ LDFLAGSSTRING +=-X github.com/ethereum-optimism/optimism/op-dispute-mon/version. ...@@ -9,7 +9,7 @@ LDFLAGSSTRING +=-X github.com/ethereum-optimism/optimism/op-dispute-mon/version.
LDFLAGS := -ldflags "$(LDFLAGSSTRING)" LDFLAGS := -ldflags "$(LDFLAGSSTRING)"
op-dispute-mon: op-dispute-mon:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-dispute-mon ./cmd env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-dispute-mon ./cmd
.PHONY: op-dispute-mon .PHONY: op-dispute-mon
clean: clean:
......
...@@ -8,7 +8,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION) ...@@ -8,7 +8,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION)
LDFLAGS := -ldflags "$(LDFLAGSSTRING)" LDFLAGS := -ldflags "$(LDFLAGSSTRING)"
op-heartbeat: op-heartbeat:
env GO111MODULE=on go build -v $(LDFLAGS) -o ./bin/op-heartbeat ./cmd env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-heartbeat ./cmd
clean: clean:
rm bin/op-heartbeat rm bin/op-heartbeat
......
...@@ -26,7 +26,7 @@ ifeq ($(shell uname),Darwin) ...@@ -26,7 +26,7 @@ ifeq ($(shell uname),Darwin)
endif endif
op-node: op-node:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-node ./cmd/main.go env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-node ./cmd/main.go
clean: clean:
rm bin/op-node rm bin/op-node
......
...@@ -8,7 +8,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION) ...@@ -8,7 +8,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION)
LDFLAGS := -ldflags "$(LDFLAGSSTRING)" LDFLAGS := -ldflags "$(LDFLAGSSTRING)"
da-server: da-server:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/da-server ./cmd/daserver env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/da-server ./cmd/daserver
clean: clean:
rm bin/da-server rm bin/da-server
......
...@@ -21,7 +21,7 @@ op-program: \ ...@@ -21,7 +21,7 @@ op-program: \
op-program-client-mips op-program-client-mips
op-program-host: op-program-host:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v -ldflags "$(LDFLAGSSTRING)" -o ./bin/op-program ./host/cmd/main.go env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v -ldflags "$(LDFLAGSSTRING)" -o ./bin/op-program ./host/cmd/main.go
op-program-client: op-program-client:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v -ldflags "$(PC_LDFLAGSSTRING)" -o ./bin/op-program-client ./client/cmd/main.go env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v -ldflags "$(PC_LDFLAGSSTRING)" -o ./bin/op-program-client ./client/cmd/main.go
......
...@@ -20,7 +20,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION) ...@@ -20,7 +20,7 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION)
LDFLAGS := -ldflags "$(LDFLAGSSTRING)" LDFLAGS := -ldflags "$(LDFLAGSSTRING)"
op-proposer: op-proposer:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-proposer ./cmd env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-proposer ./cmd
clean: clean:
rm bin/op-proposer rm bin/op-proposer
......
...@@ -8,9 +8,8 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION) ...@@ -8,9 +8,8 @@ LDFLAGSSTRING +=-X main.Version=$(VERSION)
LDFLAGSSTRING +=-X main.Meta=$(VERSION_META) LDFLAGSSTRING +=-X main.Meta=$(VERSION_META)
LDFLAGS := -ldflags "$(LDFLAGSSTRING)" LDFLAGS := -ldflags "$(LDFLAGSSTRING)"
op-supervisor: op-supervisor:
env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -v $(LDFLAGS) -o ./bin/op-supervisor ./cmd env GO111MODULE=on GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=0 go build -v $(LDFLAGS) -o ./bin/op-supervisor ./cmd
clean: clean:
rm bin/op-supervisor rm bin/op-supervisor
......
...@@ -4,15 +4,13 @@ ...@@ -4,15 +4,13 @@
# TARGETARCH # TARGETARCH
# TARGETPLATFORM # TARGETPLATFORM
# BUILDPLATFORM # BUILDPLATFORM
ARG TARGETOS
ARG TARGETARCH
# All target images use this as base image, and add the final build results. # All target images use this as base image, and add the final build results.
# It will default to the target platform. # It will default to the target platform.
ARG TARGET_BASE_IMAGE=alpine:3.18 ARG TARGET_BASE_IMAGE=alpine:3.18
# We may be cross-building for another platform. Specify which platform we need as builder. # We may be cross-building for another platform. Specify which platform we need as builder.
FROM --platform=$BUILDPLATFORM golang:1.21.3-alpine3.18 as builder FROM --platform=$BUILDPLATFORM golang:1.21.3-alpine3.18 AS builder
RUN apk add --no-cache make gcc musl-dev linux-headers git jq bash RUN apk add --no-cache make gcc musl-dev linux-headers git jq bash
...@@ -38,102 +36,97 @@ COPY . /app ...@@ -38,102 +36,97 @@ COPY . /app
ARG GIT_COMMIT ARG GIT_COMMIT
ARG GIT_DATE ARG GIT_DATE
ARG TARGETOS
ARG TARGETARCH
# separate docker-builds: # separate docker-builds:
# - proxyd # - proxyd
# - any JS/TS/smart-contract builds # - any JS/TS/smart-contract builds
# TODO: if the build involves optional CGO, then:
# 1) we may have to disable CGO explicitly
# 3) apk install cross-build gcc,
# and specify to go to use that, with the CC flag
ARG TARGETOS TARGETARCH
# Build the Go services, utilizing caches and share the many common packages. # Build the Go services, utilizing caches and share the many common packages.
# The "id" defaults to the value of "target", the cache will thus be reused during this build. # The "id" defaults to the value of "target", the cache will thus be reused during this build.
# "sharing" defaults to "shared", the cache will thus be available to other concurrent docker builds. # "sharing" defaults to "shared", the cache will thus be available to other concurrent docker builds.
FROM --platform=$BUILDPLATFORM builder as cannon-builder FROM --platform=$BUILDPLATFORM builder AS cannon-builder
ARG CANNON_VERSION=v0.0.0 ARG CANNON_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd cannon && make cannon \ RUN --mount=type=cache,target=/root/.cache/go-build cd cannon && make cannon \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$CANNON_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$CANNON_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-program-builder FROM --platform=$BUILDPLATFORM builder AS op-program-builder
ARG OP_PROGRAM_VERSION=v0.0.0 ARG OP_PROGRAM_VERSION=v0.0.0
# note: we only build the host, that's all the user needs. No Go MIPS cross-build in docker # note: we only build the host, that's all the user needs. No Go MIPS cross-build in docker
RUN --mount=type=cache,target=/root/.cache/go-build cd op-program && make op-program-host \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-program && make op-program-host \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_PROGRAM_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_PROGRAM_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-heartbeat-builder FROM --platform=$BUILDPLATFORM builder AS op-heartbeat-builder
ARG OP_HEARTBEAT_VERSION=v0.0.0 ARG OP_HEARTBEAT_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-heartbeat && make op-heartbeat \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-heartbeat && make op-heartbeat \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_HEARTBEAT_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_HEARTBEAT_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-wheel-builder FROM --platform=$BUILDPLATFORM builder AS op-wheel-builder
ARG OP_WHEEL_VERSION=v0.0.0 ARG OP_WHEEL_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-wheel && make op-wheel \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-wheel && make op-wheel \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_WHEEL_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_WHEEL_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-node-builder FROM --platform=$BUILDPLATFORM builder AS op-node-builder
ARG OP_NODE_VERSION=v0.0.0 ARG OP_NODE_VERSION=v0.0.0
RUN echo TARGETOS=$TARGETOS TARGETARCH=$TARGETARCH BUILDPLATFORM=$BUILDPLATFORM TARGETPLATFORM=$TARGETPLATFORM OP_NODE_VERSION=$OP_NODE_VERSION
RUN --mount=type=cache,target=/root/.cache/go-build cd op-node && make op-node \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-node && make op-node \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_NODE_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_NODE_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-challenger-builder FROM --platform=$BUILDPLATFORM builder AS op-challenger-builder
ARG OP_CHALLENGER_VERSION=v0.0.0 ARG OP_CHALLENGER_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-challenger && make op-challenger \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-challenger && make op-challenger \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_CHALLENGER_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_CHALLENGER_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-dispute-mon-builder FROM --platform=$BUILDPLATFORM builder AS op-dispute-mon-builder
ARG OP_DISPUTE_MON_VERSION=v0.0.0 ARG OP_DISPUTE_MON_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-dispute-mon && make op-dispute-mon \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-dispute-mon && make op-dispute-mon \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_DISPUTE_MON_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_DISPUTE_MON_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-batcher-builder FROM --platform=$BUILDPLATFORM builder AS op-batcher-builder
ARG OP_BATCHER_VERSION=v0.0.0 ARG OP_BATCHER_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-batcher && make op-batcher \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-batcher && make op-batcher \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_BATCHER_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_BATCHER_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-proposer-builder FROM --platform=$BUILDPLATFORM builder AS op-proposer-builder
ARG OP_PROPOSER_VERSION=v0.0.0 ARG OP_PROPOSER_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-proposer && make op-proposer \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-proposer && make op-proposer \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_PROPOSER_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_PROPOSER_VERSION"
FROM --platform=$BUILDPLATFORM builder as op-conductor-builder FROM --platform=$BUILDPLATFORM builder AS op-conductor-builder
ARG OP_CONDUCTOR_VERSION=v0.0.0 ARG OP_CONDUCTOR_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-conductor && make op-conductor \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-conductor && make op-conductor \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_CONDUCTOR_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_CONDUCTOR_VERSION"
FROM --platform=$BUILDPLATFORM builder as da-server-builder FROM --platform=$BUILDPLATFORM builder AS da-server-builder
RUN --mount=type=cache,target=/root/.cache/go-build cd op-plasma && make da-server \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-plasma && make da-server \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE
FROM --platform=$BUILDPLATFORM builder as op-supervisor-builder FROM --platform=$BUILDPLATFORM builder AS op-supervisor-builder
ARG OP_SUPERVISOR_VERSION=v0.0.0 ARG OP_SUPERVISOR_VERSION=v0.0.0
RUN --mount=type=cache,target=/root/.cache/go-build cd op-supervisor && make op-supervisor \ RUN --mount=type=cache,target=/root/.cache/go-build cd op-supervisor && make op-supervisor \
GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_SUPERVISOR_VERSION" GOOS=$TARGETOS GOARCH=$TARGETARCH GITCOMMIT=$GIT_COMMIT GITDATE=$GIT_DATE VERSION="$OP_SUPERVISOR_VERSION"
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/
CMD ["cannon"] CMD ["cannon"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-program-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-program-target
COPY --from=op-program-builder /app/op-program/bin/op-program /usr/local/bin/ COPY --from=op-program-builder /app/op-program/bin/op-program /usr/local/bin/
CMD ["op-program"] CMD ["op-program"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-heartbeat-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-heartbeat-target
COPY --from=op-heartbeat-builder /app/op-heartbeat/bin/op-heartbeat /usr/local/bin/ COPY --from=op-heartbeat-builder /app/op-heartbeat/bin/op-heartbeat /usr/local/bin/
CMD ["op-heartbeat"] CMD ["op-heartbeat"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-wheel-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-wheel-target
COPY --from=op-wheel-builder /app/op-wheel/bin/op-wheel /usr/local/bin/ COPY --from=op-wheel-builder /app/op-wheel/bin/op-wheel /usr/local/bin/
CMD ["op-wheel"] CMD ["op-wheel"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-node-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-node-target
COPY --from=op-node-builder /app/op-node/bin/op-node /usr/local/bin/ COPY --from=op-node-builder /app/op-node/bin/op-node /usr/local/bin/
CMD ["op-node"] CMD ["op-node"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-challenger-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-challenger-target
COPY --from=op-challenger-builder /app/op-challenger/bin/op-challenger /usr/local/bin/ COPY --from=op-challenger-builder /app/op-challenger/bin/op-challenger /usr/local/bin/
# Make the bundled op-program the default cannon server # Make the bundled op-program the default cannon server
COPY --from=op-program-builder /app/op-program/bin/op-program /usr/local/bin/ COPY --from=op-program-builder /app/op-program/bin/op-program /usr/local/bin/
...@@ -143,26 +136,26 @@ COPY --from=cannon-builder /app/cannon/bin/cannon /usr/local/bin/ ...@@ -143,26 +136,26 @@ COPY --from=cannon-builder /app/cannon/bin/cannon /usr/local/bin/
ENV OP_CHALLENGER_CANNON_BIN /usr/local/bin/cannon ENV OP_CHALLENGER_CANNON_BIN /usr/local/bin/cannon
CMD ["op-challenger"] CMD ["op-challenger"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-dispute-mon-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-dispute-mon-target
COPY --from=op-dispute-mon-builder /app/op-dispute-mon/bin/op-dispute-mon /usr/local/bin/ COPY --from=op-dispute-mon-builder /app/op-dispute-mon/bin/op-dispute-mon /usr/local/bin/
CMD ["op-dispute-mon"] CMD ["op-dispute-mon"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-batcher-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-batcher-target
COPY --from=op-batcher-builder /app/op-batcher/bin/op-batcher /usr/local/bin/ COPY --from=op-batcher-builder /app/op-batcher/bin/op-batcher /usr/local/bin/
CMD ["op-batcher"] CMD ["op-batcher"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-proposer-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-proposer-target
COPY --from=op-proposer-builder /app/op-proposer/bin/op-proposer /usr/local/bin/ COPY --from=op-proposer-builder /app/op-proposer/bin/op-proposer /usr/local/bin/
CMD ["op-proposer"] CMD ["op-proposer"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-conductor-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-conductor-target
COPY --from=op-conductor-builder /app/op-conductor/bin/op-conductor /usr/local/bin/ COPY --from=op-conductor-builder /app/op-conductor/bin/op-conductor /usr/local/bin/
CMD ["op-conductor"] CMD ["op-conductor"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as da-server-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS da-server-target
COPY --from=da-server-builder /app/op-plasma/bin/da-server /usr/local/bin/ COPY --from=da-server-builder /app/op-plasma/bin/da-server /usr/local/bin/
CMD ["da-server"] CMD ["da-server"]
FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE as op-supervisor-target FROM --platform=$TARGETPLATFORM $TARGET_BASE_IMAGE AS op-supervisor-target
COPY --from=op-supervisor-builder /app/op-supervisor/bin/op-supervisor /usr/local/bin/ COPY --from=op-supervisor-builder /app/op-supervisor/bin/op-supervisor /usr/local/bin/
ENTRYPOINT ["op-supervisor"] CMD ["op-supervisor"]
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