Add Docker build and multi-platform support to GitHub Actions - #297
Conversation
- Remove CleanDirectory calls from individual build tasks to prevent artifacts from overwriting each other - Replace AppVeyor-specific code with GitHub Actions equivalents (GITHUB_ACTIONS, GITHUB_TOKEN, GITHUB_REF_NAME) - Remove UploadArtifacts task (artifacts now handled by GitHub Actions workflow) - Add permissions: contents: write to workflow for Velopack release creation - Remove duplicate GitHub release creation (now handled by Velopack) - Add Service artifact attachment to releases created by Velopack - Remove DownloadReleases task (delta updates not needed) - Update vpk tool to latest version (0.0.1298) This ensures all 12 artifacts (UI installers + Service zips) are properly generated and uploaded. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add Docker Buildx setup for multi-platform builds (linux/amd64, linux/arm64) - Configure Docker Hub authentication using secrets - Build and push Docker images on master and develop branches - Tag master builds with :latest, version (e.g., 7.0.1), and major.minor (e.g., 7.0) - Tag develop builds with :dev and full semantic version (e.g., 7.1.0-alpha.29) - Enable GitHub Actions cache for faster Docker builds - Pass build metadata (version, date, VCS ref) as build args Fixes #275 (multi-platform Docker image support) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. WalkthroughUpdates CI/CD to GitHub Actions with Docker build/push for amd64 and arm64, revises release artifact attachment, migrates build script from AppVeyor assumptions to GitHub Actions, bumps build dependencies and a UI package, and adds a new gitignore entry. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Dev as Developer
participant GH as GitHub
participant WF as Build Workflow
participant DH as Docker Hub
participant GR as GitHub Releases
Dev->>GH: Push to master/develop
GH-->>WF: Trigger workflow
rect rgba(230,245,255,0.5)
note over WF: Build and package
WF->>WF: Restore, build, test
WF->>WF: Determine version (GitVersion)
end
alt master or develop
rect rgba(235,255,235,0.5)
note over WF,DH: Docker multi-arch publish
WF->>WF: Setup Buildx
WF->>DH: Login
WF->>WF: Extract Docker metadata (tags/labels)
WF->>DH: Build & push images (amd64, arm64)
end
end
rect rgba(255,245,230,0.5)
note over WF,GR: Release asset handling
WF->>GR: Attach Service artifacts (release/pre-release)
end
WF-->>GH: Job status (success/failure)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (4)
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. Comment |
There was a problem hiding this comment.
This PR is being reviewed by Cursor Bugbot
Details
You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
Bug: MimeKitLite Version Mismatch Causes Build Failures
The #reference directive for MimeKitLite points to version 4.5.0, but the #tool directive was updated to 4.14.0. This mismatch means the build script will try to load the assembly from a non-existent tools/MimeKitLite.4.5.0 path, causing assembly loading failures.
build.cake#L17-L18
Lines 17 to 18 in 25827f7
Summary
This PR enhances the GitHub Actions workflow with automated Docker image builds and addresses the multi-platform Docker image support requested in #275.
Changes
Docker Build Integration
linux/amd64,linux/arm64)masteranddevelopbranchesImage Tagging Strategy
Master branch produces:
changemakerstudios/papercut-smtp:latestchangemakerstudios/papercut-smtp:7.0.1(semantic version)changemakerstudios/papercut-smtp:7.0(major.minor)Develop branch produces:
changemakerstudios/papercut-smtp:devchangemakerstudios/papercut-smtp:7.1.0-alpha.29(full semantic version with pre-release tag)Build Optimizations
Required Repository Secrets
Before merging, add these secrets to the repository:
DOCKER_USERNAME- Docker Hub usernameDOCKER_PASSWORD- Docker Hub access tokenFixes
Closes #275
Test Plan
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Chores