diff --git a/app/data/container-build/cerc-optimism-contracts/Dockerfile b/app/data/container-build/cerc-optimism-contracts/Dockerfile index 17ef1c84..6f91d5c3 100644 --- a/app/data/container-build/cerc-optimism-contracts/Dockerfile +++ b/app/data/container-build/cerc-optimism-contracts/Dockerfile @@ -1,54 +1,20 @@ -# Originally from: https://github.com/devcontainers/images/blob/main/src/javascript-node/.devcontainer/Dockerfile -# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster -ARG VARIANT=18-bullseye -FROM node:${VARIANT} +FROM cerc/foundry:local -ARG USERNAME=node -ARG NPM_GLOBAL=/usr/local/share/npm-global +RUN apt-get update \ + && apt-get install -y curl \ + && curl --silent --location https://deb.nodesource.com/setup_16.x | bash - \ + && apt-get update \ + && apt-get install -y nodejs git busybox jq \ + && node -v -# This container pulls npm packages from a local registry configured via these env vars -ARG CERC_NPM_URL -ARG CERC_NPM_AUTH_TOKEN +RUN corepack enable \ + && yarn --version -# Add NPM global to PATH. -ENV PATH=${NPM_GLOBAL}/bin:${PATH} +WORKDIR /app -RUN \ - # Configure global npm install location, use group to adapt to UID/GID changes - if ! cat /etc/group | grep -e "^npm:" > /dev/null 2>&1; then groupadd -r npm; fi \ - && usermod -a -G npm ${USERNAME} \ - && umask 0002 \ - && mkdir -p ${NPM_GLOBAL} \ - && touch /usr/local/etc/npmrc \ - && chown ${USERNAME}:npm ${NPM_GLOBAL} /usr/local/etc/npmrc \ - && chmod g+s ${NPM_GLOBAL} \ - && npm config -g set prefix ${NPM_GLOBAL} \ - && su ${USERNAME} -c "npm config -g set prefix ${NPM_GLOBAL}" \ - # Install eslint - && su ${USERNAME} -c "umask 0002 && npm install -g eslint" \ - && npm cache clean --force > /dev/null 2>&1 +COPY . . -# [Optional] Uncomment this section to install additional OS packages. -RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ - && apt-get -y install --no-install-recommends jq +RUN echo "Building optimism" && \ + yarn && yarn build -# [Optional] Uncomment if you want to install an additional version of node using nvm -# ARG EXTRA_NODE_VERSION=10 -# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}" - -# [Optional] Uncomment if you want to install more global node modules -# RUN su node -c "npm install -g " - -# Configure the local npm registry -RUN npm config set @cerc-io:registry ${CERC_NPM_URL} \ - && npm config set @lirewine:registry ${CERC_NPM_URL} \ - && npm config set -- ${CERC_NPM_URL}:_authToken ${CERC_NPM_AUTH_TOKEN} - -# TODO: the image at this point could be made a base image for several different CLI images -# that install different Node-based CLI commands - -# Build TS packages -RUN yarn install && yarn build - -# Default command sleeps forever so docker doesn't kill it -CMD ["sh", "-c", "while :; do sleep 600; done"] +WORKDIR /app/packages/contracts-bedrock diff --git a/app/data/container-build/cerc-optimism-contracts/build.sh b/app/data/container-build/cerc-optimism-contracts/build.sh index 136e6428..8b8e0eaa 100755 --- a/app/data/container-build/cerc-optimism-contracts/build.sh +++ b/app/data/container-build/cerc-optimism-contracts/build.sh @@ -4,6 +4,4 @@ # See: https://stackoverflow.com/a/246128/1701505 SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -docker build -t cerc/optimism-contracts:local -f ${SCRIPT_DIR}/Dockerfile \ - --add-host gitea.local:host-gateway \ - --build-arg CERC_NPM_AUTH_TOKEN --build-arg CERC_NPM_URL ${SCRIPT_DIR} +docker build -t cerc/optimism-contracts:local -f ${SCRIPT_DIR}/Dockerfile ${CERC_REPO_BASE_DIR}/optimism diff --git a/app/data/stacks/fixturenet-optimism/README.md b/app/data/stacks/fixturenet-optimism/README.md index 96785947..859ea7a0 100644 --- a/app/data/stacks/fixturenet-optimism/README.md +++ b/app/data/stacks/fixturenet-optimism/README.md @@ -1,4 +1,35 @@ -# fixturenet-eth +# fixturenet-optimism Experimental Optimism Fixturenet +## Setup + +Clone required repositories: + +```bash +$ laconic-so --stack fixturenet-optimism setup-repositories +``` + +Checkout to the required versions and branches in repos: + +```bash +# optimism +cd ~/cerc/optimism +git checkout @eth-optimism/sdk@0.0.0-20230329025055 +``` + +Build the container images: + +```bash +$ laconic-so --stack fixturenet-optimism build-containers +``` + +This should create the required docker images in the local image registry: +* cerc/go-ethereum +* cerc/lighthouse +* cerc/fixturenet-eth-geth +* cerc/fixturenet-eth-lighthouse +* cerc/optimism-l2geth +* cerc/optimism-op-batcher +* cerc/optimism-op-node +* cerc/optimism-contracts diff --git a/app/data/stacks/fixturenet-optimism/stack.yml b/app/data/stacks/fixturenet-optimism/stack.yml index 620f2b97..177fba54 100644 --- a/app/data/stacks/fixturenet-optimism/stack.yml +++ b/app/data/stacks/fixturenet-optimism/stack.yml @@ -3,21 +3,19 @@ name: fixturenet-optimism decription: "Optimism Fixturenet" repos: - cerc-io/go-ethereum + - dboreham/foundry - ethereum-optimism/op-geth - ethereum-optimism/optimism - - cerc-io/tx-spammer - - dboreham/foundry containers: - cerc/go-ethereum - cerc/lighthouse - cerc/fixturenet-eth-geth - cerc/fixturenet-eth-lighthouse + - cerc/foundry + - cerc/optimism-contracts - cerc/optimism-l2geth - cerc/optimism-op-batcher - cerc/optimism-op-node - - cerc/optimism-contracts - - cerc/foundry pods: - fixturenet-eth - fixturenet-optimism - - foundry