Some checks failed
CodeQL / Analyze (push) Waiting to run
Docker Build & Push Simapp (main) / docker-build (push) Waiting to run
golangci-lint / lint (push) Waiting to run
Tests / Code Coverage / build (amd64) (push) Waiting to run
Tests / Code Coverage / build (arm64) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[additional-args:-tags="test_e2e" name:e2e path:./e2e]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:08-wasm path:./modules/light-clients/08-wasm]) (push) Waiting to run
Tests / Code Coverage / unit-tests (map[name:ibc-go path:.]) (push) Waiting to run
Deploy to GitHub Pages / Deploy to GitHub Pages (push) Has been cancelled
Buf-Push / push (push) Has been cancelled
49 lines
1.9 KiB
Docker
49 lines
1.9 KiB
Docker
FROM golang:1.23.8-alpine AS builder-base
|
|
|
|
ARG LIBWASM_VERSION
|
|
ARG TARGETARCH
|
|
|
|
RUN test -n "${LIBWASM_VERSION}"
|
|
ENV GOPATH=""
|
|
|
|
RUN set -eux; apk add --no-cache ca-certificates build-base git libusb-dev linux-headers curl;
|
|
|
|
# Copy relevant files before go mod download. Replace directives to local paths break if local
|
|
# files are not copied before go mod download.
|
|
ADD internal internal
|
|
ADD testing testing
|
|
ADD modules modules
|
|
ADD LICENSE LICENSE
|
|
|
|
COPY go.mod .
|
|
COPY go.sum .
|
|
|
|
RUN go mod download
|
|
|
|
|
|
# Since it is not easy to fully cache a RUN script download of libwasmvm, we use two different stages
|
|
# and copy the correct file in the final stage. The multistage setup also helps speed up the build process
|
|
FROM alpine:3.21 AS amd64-stage
|
|
ARG LIBWASM_VERSION
|
|
ADD https://github.com/CosmWasm/wasmvm/releases/download/${LIBWASM_VERSION}/libwasmvm_muslc.x86_64.a /lib/libwasmvm_muslc.x86_64.a
|
|
|
|
|
|
FROM alpine:3.21 AS arm64-stage
|
|
ARG LIBWASM_VERSION
|
|
ADD https://github.com/CosmWasm/wasmvm/releases/download/${LIBWASM_VERSION}/libwasmvm_muslc.aarch64.a /lib/libwasmvm_muslc.aarch64.a
|
|
|
|
# We have this one with nothing else in it, because COPY --from can't use variables (but FROM can)
|
|
FROM ${TARGETARCH}-stage AS libwasm-stage
|
|
|
|
# Having this is a separate stage allows the previous stages to run in parallel
|
|
FROM builder-base AS builder
|
|
WORKDIR /go/modules/light-clients/08-wasm
|
|
|
|
COPY --from=libwasm-stage /lib/libwasmvm_muslc.* /lib/
|
|
|
|
RUN go build -mod=readonly -tags "netgo ledger muslc" -ldflags '-X github.com/cosmos/cosmos-sdk/version.Name=sim -X github.com/cosmos/cosmos-sdk/version.AppName=simd -X github.com/cosmos/cosmos-sdk/version.Version= -X github.com/cosmos/cosmos-sdk/version.Commit= -X "github.com/cosmos/cosmos-sdk/version.BuildTags=netgo ledger muslc," -w -s -linkmode=external -extldflags "-Wl,-z,muldefs -static"' -trimpath -o /go/build/ ./...
|
|
|
|
|
|
FROM alpine:3.21
|
|
COPY --from=builder /go/build/simd /bin/simd
|
|
ENTRYPOINT ["simd"]
|