Skip to content

Conversation

@johnsonjie
Copy link
Member

@johnsonjie johnsonjie commented Jan 13, 2026

Purpose or design rationale of this PR

Describe your change. Make sure to answer these three questions: What does this PR do? Why does it do it? How does it do it?

PR title

Your PR title must follow conventional commits (as we are doing squash merge for each PR), so it must start with one of the following types:

  • build: Changes that affect the build system or external dependencies (example scopes: yarn, eslint, typescript)
  • ci: Changes to our CI configuration files and scripts (example scopes: vercel, github, cypress)
  • docs: Documentation-only changes
  • feat: A new feature
  • fix: A bug fix
  • perf: A code change that improves performance
  • refactor: A code change that doesn't fix a bug, or add a feature, or improves performance
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
  • test: Adding missing tests or correcting existing tests

Deployment tag versioning

Has tag in common/version.go been updated or have you added bump-version label to this PR?

  • No, this PR doesn't involve a new deployment, git tag, docker image tag
  • Yes

Breaking change label

Does this PR have the breaking-change label?

  • No, this PR is not a breaking change
  • Yes

Summary by CodeRabbit

Release Notes

  • Chores
    • Added automated weekly Docker image building workflow scheduled for Fridays. The workflow builds and publishes container images for multiple components with support for multiple architectures, with manual trigger capability also available.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 13, 2026

📝 Walkthrough

Walkthrough

A new GitHub Actions workflow file is introduced that automatically builds and pushes Docker images for three services (rollup_relayer, coordinator-api, coordinator-cron) to Docker Hub on a weekly schedule or manual trigger, with platform-specific configurations.

Changes

Cohort / File(s) Summary
CI/CD Workflow Configuration
.github/workflows/docker-e2e.yml
New workflow file with cron-based scheduler (Fridays 00:00 UTC) and manual trigger capability. Defines three build jobs for different services with Docker Buildx multi-platform support. Note: coordinator-api build excludes linux/arm64 due to known bugs. Images tagged with IMAGE_TAG and pushed to scrolltech repository.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A rabbit hops through workflows new,
Docker builds on schedule true,
Fridays bring the push so bright,
E2E tests running through the night! 🐳

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description contains only the template with checked conventional commits type (ci) and deployment/breaking change selections, but completely lacks the required 'Purpose or design rationale' section explaining what, why, and how for the changes. Fill in the 'Purpose or design rationale' section with a clear explanation of what this workflow does, why it is needed, and how it implements weekly e2e test image releases.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'add workflow to release e2e test image weekly' directly describes the main change—introducing a new GitHub Actions workflow for weekly e2e test image releases. It is specific, concise, and clearly summarizes the primary purpose of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
.github/workflows/docker-e2e.yml (3)

10-11: Consider adding a date suffix for build traceability.

Using a static e2e-test tag overwrites images weekly. If an e2e test fails, it may be difficult to correlate with a specific build. Consider appending a date suffix (e.g., e2e-test-20260113) while optionally also tagging e2e-test as a floating latest.

💡 Example with date-based tagging
 env:
-  IMAGE_TAG: e2e-test
+  IMAGE_TAG: e2e-test-${{ github.run_id }}

Or use a date:

env:
  IMAGE_TAG_DATED: e2e-test-${{ github.event.repository.updated_at || github.run_id }}
  IMAGE_TAG_LATEST: e2e-test

Then push both tags for each image.


62-72: Track the arm64 build bug in an issue.

The commented platforms line with "bugs for arm64" note indicates a known issue. Consider opening a GitHub issue to track this so it doesn't get forgotten, and reference the issue number in the comment for visibility.

-          # platforms: linux/amd64,linux/arm64 #bugs for arm64
+          # TODO(#ISSUE_NUMBER): Enable arm64 once build issue is resolved
+          platforms: linux/amd64

Would you like me to help draft an issue to track the arm64 build bug for coordinator-api?


13-102: Consider a matrix strategy to reduce duplication.

All three jobs share identical setup steps (checkout, QEMU, Buildx, login). A matrix strategy could reduce ~60 lines of YAML while maintaining parallel execution.

💡 Example matrix-based approach
jobs:
  build-and-push:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - repository: rollup-relayer
            dockerfile: ./build/dockerfiles/rollup_relayer.Dockerfile
            platforms: linux/amd64,linux/arm64
          - repository: coordinator-api
            dockerfile: ./build/dockerfiles/coordinator-api.Dockerfile
            platforms: linux/amd64  # arm64 disabled due to build issues
          - repository: coordinator-cron
            dockerfile: ./build/dockerfiles/coordinator-cron.Dockerfile
            platforms: linux/amd64,linux/arm64
    steps:
      - name: Checkout code
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: Set up QEMU
        uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0

      - name: Login to Docker Hub
        uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
        with:
          context: .
          file: ${{ matrix.dockerfile }}
          platforms: ${{ matrix.platforms }}
          push: true
          tags: scrolltech/${{ matrix.repository }}:${{ env.IMAGE_TAG }}
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7de388e and 629664d.

📒 Files selected for processing (1)
  • .github/workflows/docker-e2e.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: tests
🔇 Additional comments (4)
.github/workflows/docker-e2e.yml (4)

3-8: LGTM on workflow triggers.

The cron schedule correctly triggers on Fridays at 00:00 UTC, and workflow_dispatch enables manual testing—both are appropriate for this use case.


14-42: Good security practices with SHA-pinned actions.

The use of full SHA commits for action versions provides supply chain security by preventing tag mutation attacks. Multi-platform builds (amd64/arm64) are correctly configured.


74-102: LGTM for coordinator-cron job.

The multi-platform build configuration is consistent with rollup_relayer and correctly targets both amd64 and arm64.


38-38: All referenced Dockerfiles exist at the specified paths. No issues found.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants