# This is a multi-stage docker file, first and second stage builds contracts # And the third one creates node.js environment to deploy them FROM cosmwasm/workspace-optimizer:0.12.11@sha256:b6b0b1d5ed76dafd0ec0d3812a1e7a275316cf862fd6d0a918f14d71c4cb187f AS wormhole_builder WORKDIR /tmp/wormhole-repo ARG WORMHOLE_REV=2.8.9 ADD https://github.com/certusone/wormhole/archive/refs/tags/v${WORMHOLE_REV}.tar.gz . RUN tar -xvf v${WORMHOLE_REV}.tar.gz RUN mv wormhole-${WORMHOLE_REV}/cosmwasm/Cargo.lock /code/ RUN mv wormhole-${WORMHOLE_REV}/cosmwasm/Cargo.toml /code/ RUN mv wormhole-${WORMHOLE_REV}/cosmwasm/contracts /code/contracts WORKDIR /code RUN --mount=type=cache,target=/code/target,id=cosmwasm_wormhole_target --mount=type=cache,target=/usr/local/cargo/registry optimize_workspace.sh FROM cosmwasm/workspace-optimizer:0.12.11@sha256:b6b0b1d5ed76dafd0ec0d3812a1e7a275316cf862fd6d0a918f14d71c4cb187f AS pyth_builder COPY target_chains/cosmwasm/Cargo.lock /code/ COPY target_chains/cosmwasm/Cargo.toml /code/ COPY target_chains/cosmwasm/contracts /code/contracts COPY target_chains/cosmwasm/sdk/rust /code/sdk/rust COPY wormhole_attester/sdk/rust /wormhole_attester/sdk/rust RUN --mount=type=cache,target=/code/target,id=cosmwasm_pyth_target --mount=type=cache,target=/usr/local/cargo/registry optimize_workspace.sh # Contract deployment stage FROM lerna USER root RUN apt update && apt install netcat curl jq -y USER 1000 COPY --from=wormhole_builder /code/artifacts/wormhole.wasm /home/node/target_chains/cosmwasm/artifacts/wormhole.wasm COPY --from=pyth_builder /code/artifacts/pyth_cosmwasm.wasm /home/node/target_chains/cosmwasm/artifacts/pyth_cosmwasm.wasm WORKDIR /home/node/ COPY --chown=1000:1000 governance/xc_governance_sdk_js governance/xc_governance_sdk_js COPY --chown=1000:1000 target_chains/cosmwasm/tools target_chains/cosmwasm/tools RUN npx lerna run build --scope="@pythnetwork/cosmwasm-deploy-tools" --include-dependencies WORKDIR /home/node/target_chains/cosmwasm/tools