diff --git a/.github/workflows/monorepo-docker.yml b/.github/workflows/monorepo-docker.yml index 5c3f0ee38e4..e2e8a443ea0 100644 --- a/.github/workflows/monorepo-docker.yml +++ b/.github/workflows/monorepo-docker.yml @@ -14,6 +14,9 @@ on: - '.dockerignore' - '.github/workflows/monorepo-docker.yml' - 'typescript/ccip-server/**' + # Dependency changes that could affect the Docker build + - 'yarn.lock' + - '**/package.json' workflow_dispatch: inputs: include_arm64: diff --git a/Dockerfile b/Dockerfile index f3dfb7d24b6..9d2025216b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,16 @@ -FROM node:20-alpine +FROM node:20-slim WORKDIR /hyperlane-monorepo -RUN apk add --update --no-cache git g++ make py3-pip jq bash curl && \ - yarn set version 4.5.1 +RUN apt-get update && apt-get install -y --no-install-recommends \ + git g++ make python3 python3-pip jq bash curl ca-certificates unzip \ + && rm -rf /var/lib/apt/lists/* \ + && yarn set version 4.5.1 + +# Install Foundry for solidity builds (early for layer caching) +RUN curl -L https://foundry.paradigm.xyz | bash +RUN /root/.foundry/bin/foundryup +ENV PATH="/root/.foundry/bin:${PATH}" # Copy package.json and friends COPY package.json yarn.lock .yarnrc.yml ./ diff --git a/solidity/package.json b/solidity/package.json index 91760218579..b226366b1fe 100644 --- a/solidity/package.json +++ b/solidity/package.json @@ -68,6 +68,7 @@ ], "license": "Apache-2.0", "scripts": { + "deps:soldeer": "forge soldeer install", "build": "yarn version:update && yarn hardhat-esm compile && tsc && ./exportBuildArtifact.sh", "build:zk": "yarn hardhat-zk compile && tsc && ts-node generate-artifact-exports.mjs && ZKSYNC=true ./exportBuildArtifact.sh", "prepublishOnly": "yarn build && yarn build:zk", diff --git a/solidity/turbo.json b/solidity/turbo.json index 372d01e57e8..6e756717d63 100644 --- a/solidity/turbo.json +++ b/solidity/turbo.json @@ -1,7 +1,12 @@ { "extends": ["//"], "tasks": { + "deps:soldeer": { + "inputs": ["foundry.toml", "soldeer.lock"], + "outputs": ["dependencies/**"] + }, "build": { + "dependsOn": ["deps:soldeer"], "outputs": [ "artifacts/**", "cache/**",