Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: multi-platform docker build #159

Merged
merged 1 commit into from
Feb 7, 2025
Merged

Conversation

WasinWatt
Copy link
Contributor

@WasinWatt WasinWatt commented Feb 7, 2025

Description

Closes: #XXXX


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • included the correct type prefix in the PR title, you can find examples of the prefixes below:
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the correct branch
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

Summary by CodeRabbit

  • New Features
    • Enhanced the Docker deployment process with support for multi-platform builds (including AMD and ARM architectures) and optimized caching, leading to more efficient and reliable deployments.

@WasinWatt WasinWatt requested a review from a team as a code owner February 7, 2025 07:56
Copy link

coderabbitai bot commented Feb 7, 2025

Walkthrough

This pull request updates the GitHub Actions workflow for Docker. It upgrades several action versions—actions/checkout from v3 to v4, docker/login-action from v2 to v3, docker/metadata-action from v4 to v5, and docker/build-push-action from v4 to v5. In addition, new steps are introduced to set up QEMU and Buildx for multi-platform builds, along with updated build-push parameters for targeting linux/amd64 and linux/arm64 and caching with GitHub Actions. The image push condition based on tag references remains unchanged.

Changes

File(s) Change Summary
.github/workflows/docker.yml (action upgrades) Upgraded action versions: actions/checkout (v3 → v4), docker/login-action (v2 → v3), docker/metadata-action (v4 → v5), docker/build-push-action (v4 → v5).
.github/workflows/docker.yml (new steps & parameters) Added new actions: docker/setup-qemu-action@v3 and docker/setup-buildx-action@v3; enhanced build-push step with target platforms (linux/amd64, linux/arm64) and caching options.

Sequence Diagram(s)

sequenceDiagram
    participant GHA as GitHub Actions
    participant Checkout as Checkout (v4)
    participant QEMU as QEMU Setup (v3)
    participant Buildx as Buildx Setup (v3)
    participant Login as Login (v3)
    participant BuildPush as Build-Push (v5)
    
    Note over GHA: Workflow triggered
    GHA->>Checkout: Checkout repository code
    GHA->>QEMU: Initialize QEMU for emulation
    GHA->>Buildx: Set up Buildx for multi-platform
    GHA->>Login: Authenticate with Docker registry
    GHA->>BuildPush: Build and push image with multi-platform and caching options
    Note over BuildPush: Push activated if ref starts with "refs/tags"
Loading

Poem

I'm a rabbit with a joyful hop,
Watching Docker workflows non-stop.
Upgraded actions, swift and bright,
QEMU and Buildx in the spotlight.
Multi-platform dreams now freely soar,
Caching magic opens the door! 🐇🚀


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6c6a780 and 006dd0f.

📒 Files selected for processing (1)
  • .github/workflows/docker.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Analyze (go)
🔇 Additional comments (5)
.github/workflows/docker.yml (5)

36-36: Upgrade actions/checkout Version
The checkout step has been updated to use actions/checkout@v4, which aligns with the latest improvements and bug fixes provided by the maintainers.


39-39: Update Docker Login Action
The docker/login-action has been upgraded to v3. This update is appropriate to leverage the latest authentication improvements and should enhance overall reliability during container registry login.


45-50: Multi-platform Build Setup with QEMU and Buildx
New steps have been added to set up QEMU (docker/setup-qemu-action@v3) and Docker Buildx (docker/setup-buildx-action@v3). These steps are essential for enabling multi-platform Docker builds and directly support the PR’s objectives. Ensure that any emulator-specific configuration (if needed later) is addressed in documentation or additional workflow steps.


53-53: Upgrade Docker Metadata Action
The metadata extraction step now uses docker/metadata-action@v5, ensuring enhanced tag and label extraction functionality. This upgrade is beneficial for maintaining accurate image metadata during builds.


58-66: Enhanced Build and Push Configuration
The build and push step has seen several improvements:

  • Upgrading to docker/build-push-action@v5 provides the latest features and bug fixes.
  • The inclusion of the "platforms" parameter (linux/amd64,linux/arm64) enables multi-platform image builds, directly aligning with the PR objectives.
  • The caching options (cache-from and cache-to set to type=gha) are a useful addition to reduce build times on repeated runs.
  • The push condition, which checks if the Git ref starts with "refs/tags", correctly ensures that image push occurs only for tagged releases.
    These changes collectively enhance the CI workflow for Docker image building and deployment.

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@Vritra4 Vritra4 left a comment

Choose a reason for hiding this comment

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

LGTM

@WasinWatt WasinWatt merged commit fa3a366 into main Feb 7, 2025
4 checks passed
@beer-1 beer-1 deleted the feat/support-arm64-docker-image branch February 13, 2025 10:11
@coderabbitai coderabbitai bot mentioned this pull request Mar 14, 2025
11 tasks
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