-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Description
Migrate op-deployer Docker build to GitHub Actions
Summary
op-deployer is the last remaining Docker image still built on CircleCI. All other images were migrated to GitHub Actions in #18821. The op-deployer image was excluded because its build depends on pre-compiled Solidity contract artifacts passed via CircleCI workspace attachment, rather than being built atomically inside Docker.
A prior attempt to make the Docker build self-contained was made in #19088 but was reverted in #19106 due to performance issues on CircleCI runners.
Goal
Complete the migration of op-deployer to GitHub Actions and clean up the now-unnecessary CircleCI docker build infrastructure.
Current State
- The
op-deployerDocker build relies on acontracts-bedrock-buildCircleCI job that compiles Solidity contracts and copies artifacts intoop-deployer/pkg/deployer/artifacts/forge-artifactsvia workspace attachment. - The
docker-buildCircleCI job then uses those pre-built artifacts viaattach_workspaceto build the image. - The Dockerfile
op-deployer-builderstage andop-deployer-targetstage assume the artifacts are already present in the build context. - All other images are built in GitHub Actions via
branches.yamlandtags.yamlusingdocker-bake.hcl.
Tasks
1. Recover and adapt the atomic Docker build for op-deployer
Recover the work from #19088 that made op-deployer build its contract artifacts inside the Docker build itself (i.e., no external workspace attachment needed). The revert in #19106 was due to CircleCI runner constraints, which are no longer relevant since the build will run on GitHub Actions runners.
2. Verify feature parity
Ensure the atomically-built op-deployer image is functionally equivalent to the existing CircleCI-built image:
- Embedded contract artifacts must match.
- The
forgebinary must be present and at the correct version. - The
op-deployerbinary must behave identically. - Run the existing op-deployer test script against the new image.
3. Add op-deployer to GitHub Actions build matrix
Add op-deployer to the image matrix in branches.yaml and tags.yaml. The docker-bake.hcl target already exists.
4. Remove op-deployer from CircleCI docker builds
Remove the op-deployer entry from the CircleCI docker-build matrix in the main workflow, as well as any release/scheduled workflow entries that build the op-deployer Docker image.
5. Clean up deprecated CircleCI docker build infrastructure
Once op-deployer is removed, the docker-build job in CircleCI has no remaining consumers. Clean up:
- The
docker-buildjob definition and its associated steps. - Any workflow references to
docker-build. - Any CircleCI-only docker build utilities or scripts that are no longer referenced.
Preserve the contracts-bedrock-build job
Acceptance Criteria
-
op-deployerDocker image builds successfully in GitHub Actions without any external artifact preparation step. - The new image passes all existing tests and matches the behavior of the CircleCI-built image.
-
op-deployerappears in the GitHub Actions build matrix for both branch and tag workflows. - CircleCI no longer builds any Docker images.
- No orphaned CircleCI job definitions related to
docker-buildremain. - Builds continue to use the reusable
factorydocker workflow.