-
Notifications
You must be signed in to change notification settings - Fork 135
ci: building manifests for docker #3263
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: building manifests for docker #3263
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 3 Skipped Deployments
|
How to use the Graphite Merge QueueAdd the label merge-queue to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
PR Review: CI - Building Manifests for DockerOverviewThis PR removes the AnalysisWhat the Change DoesThe
Code Quality: ✅ Good
Correctness: ✅ CorrectThe removal is safe because:
Potential Issues:
|
More templates
@rivetkit/actor
@rivetkit/cloudflare-workers
@rivetkit/core
@rivetkit/db
@rivetkit/framework-base
@rivetkit/next-js
@rivetkit/react
rivetkit
@rivetkit/sql-loader
@rivetkit/engine-runner
@rivetkit/engine-runner-protocol
commit: |
08ee85a to
29b3780
Compare
PR Review: Building manifests for DockerSummaryThis PR modifies the Docker release process to build multi-architecture manifests instead of simply tagging and pushing single-architecture images. The changes also temporarily disable the actual Docker image builds by commenting out the Dockerfiles. 🔴 Critical Issues1. Dockerfiles are completely disabledBoth
Impact: Production images will be non-functional. Recommendation: This appears to be a work-in-progress change. The PR should either:
2. Missing
|
29b3780 to
05505c3
Compare
PR Review: Building manifests for Docker🔴 Critical Issues1. Commented-out Dockerfiles Breaking Image BuildsThe Dockerfiles have been almost entirely commented out, leaving only placeholder
Impact: This breaks the Docker build process entirely. The images no longer contain any actual application code or dependencies. Files affected:
2. Docker Manifest Strategy MismatchThe release script ( Current flow issues:
|
05505c3 to
7570c1c
Compare
Pull Request ReviewSummaryThis PR implements Docker multi-architecture manifest support by modifying the release workflow to create proper manifest lists for AMD64 and ARM64 images. The Dockerfiles have been temporarily commented out (presumably for testing manifest creation). Critical Issues1. Dockerfiles Are Completely Broken All build stages are commented out, leaving only sleep infinity commands. The images will not contain the actual application binaries, rivet-engine binary will not be available, and images are essentially empty shells. Impact: Severe - These images cannot function in production. Recommendation: These Dockerfiles MUST be uncommented before merging to any production branch. 2. Missing Manifest Cleanup The docker manifest create command will fail if a manifest with the same name already exists from a previous run. Add cleanup before creating manifests or use the --amend flag. Major Concerns3. Removed Git Validation Flag 4. Architecture Suffix Naming 5. Removed Binary Job Dependency Positive Changes6. Proper Multi-Architecture Support 7. Better Error Messages 8. Validation of Both Architectures Testing RecommendationsBefore merging:
Final VerdictStatus: NEEDS WORK before merging The manifest creation logic looks solid, but the commented-out Dockerfiles are a blocker. This PR appears to be WIP for testing the manifest creation workflow. Before merging:
If this is intentionally a testing/WIP PR, please mark it as draft until the Dockerfiles are restored. |
7570c1c to
bfec30b
Compare
Pull Request ReviewSummaryThis PR modifies the Docker release process to use multi-architecture manifest lists instead of single-architecture images. The changes comment out the actual Docker build process and update the tagging mechanism to work with pre-built architecture-specific images. Key Changes Analysis1. Docker Build Process Changes (Dockerfiles)The PR comments out the entire Docker build process in:
Both files now only run
2. Docker Tagging Script (
|
bfec30b to
515bb0c
Compare
Pull Request ReviewSummaryThis PR modifies the Docker release pipeline to support multi-architecture (amd64/arm64) manifest creation. The changes shift from simple image tagging to proper manifest list management. Critical Issues1. Dockerfiles are completely commented outLocation: engine/docker/universal/Dockerfile, engine/sdks/typescript/test-runner/Dockerfile Issue: The entire build process has been commented out, leaving only empty base images with sleep infinity. This means:
Impact: This will break production deployments completely. Anyone pulling these images will get containers that do nothing. Recommendation:
2. Missing dependency on binaries jobLocation: .github/workflows/release.yaml:226 Before: needs: [docker, binaries] Issue: The complete job no longer waits for binaries to be built and uploaded to R2. This creates a race condition where the release process could complete before binaries are available. Impact:
Recommendation: Restore the dependency: needs: [docker, binaries] 3. noValidateGit flag removed without contextLocation: .github/workflows/release.yaml:257,259 Issue: The noValidateGit flag was removed from the release script invocation. Without seeing the script implementation, this could cause releases to fail if git validation is now enforced. Recommendation: Verify that removing this flag does not break the CI release process. Positive Changes1. Proper multi-arch manifest handlingLocation: scripts/release/docker.ts:49-54 The shift from docker tag to docker buildx imagetools create is the correct approach for multi-arch images. This properly creates multi-architecture manifest lists that Docker can use for platform-specific pulls. 2. Improved image existence validationLocation: scripts/release/docker.ts:14-27 The change from docker pull to docker manifest inspect is more efficient:
3. Architecture-specific tagging in workflowLocation: .github/workflows/release.yaml:195,212 Properly appends architecture suffixes (-amd64, -arm64) to image tags, which is essential for the manifest creation step. Code Quality & Best Practices1. Error handling could be more informativeLocation: scripts/release/docker.ts:22-26 The error message includes the error object but could provide more guidance about what went wrong and how to fix it. 2. Consider adding retry logicLocation: scripts/release/docker.ts:18-20 Manifest inspection could fail due to transient network issues. Consider adding retry logic with exponential backoff. 3. Missing platform validationLocation: .github/workflows/release.yaml:164-169 The matrix does not validate that both platforms actually ran successfully before the complete job. If one architecture fails, the other might still proceed. Suggestion: Add explicit validation that both amd64 and arm64 images were pushed before creating manifests. Security ConsiderationsNo security issues identified. The changes maintain the same credential handling and do not introduce new vulnerabilities. Performance ConsiderationsPositive:
No concerns identified. Test CoverageMissing:
Recommendations:
Summary & RecommendationsBefore merging, you MUST:
Nice to have:
Overall assessment: The multi-arch manifest approach is correct and well-implemented, but the PR appears to be in a WIP state with critical components commented out. This should not be merged in its current state. Questions for the Author
Review generated with reference to CLAUDE.md conventions |
515bb0c to
a59fa00
Compare
PR Review: CI - Building manifests for DockerSummaryThis PR refactors the Docker release script to properly handle multi-architecture images by creating manifest lists instead of simple tags. The change moves from ✅ Positive Changes
🔍 Issues & Concerns1. Error Handling - String Interpolation of Error Object (Minor)Location: Lines 23-26 throw new Error(
`Images ${name}:${prefix}-${opts.commit}-{amd64,arm64} do not exist on Docker Hub. Error: ${error}`,
);Issue: Interpolating the Suggestion: const errorMessage = error instanceof Error ? error.message : String(error);
throw new Error(
`Images ${name}:${prefix}-${opts.commit}-{amd64,arm64} do not exist on Docker Hub. Error: ${errorMessage}`,
);2. Manifest Inspect Stdout/Stderr Not Suppressed (Minor)Location: Lines 18, 20 Issue: The Suggestion: Consider suppressing output for cleaner logs: await $({ stdout: "ignore", stderr: "ignore" })`docker manifest inspect ${name}:${prefix}-${opts.commit}-amd64`;Or remove the intermediate console.log statements on lines 17 and 19 since line 15 already indicates what's being checked. 3. Redundant Logging (Minor)Location: Lines 15-21 Issue: There are multiple console.log statements that may be redundant:
Suggestion: Simplify to reduce noise: console.log(`==> Checking images exist: ${name}:${prefix}-${opts.commit}-{amd64,arm64}`);
try {
await $({ stdout: "ignore" })`docker manifest inspect ${name}:${prefix}-${opts.commit}-amd64`;
await $({ stdout: "ignore" })`docker manifest inspect ${name}:${prefix}-${opts.commit}-arm64`;
} catch (error) {
// ... error handling
}4. Missing Verification After Manifest Creation (Minor)Location: Lines 49-55 Issue: The old code verified images existed before tagging them, but the new code doesn't verify that the manifest was successfully created and pushed. Suggestion: Consider adding verification or at least logging the result: const result = await $`docker buildx imagetools create --tag ${image}:${to} ${image}:${from}-amd64 ${image}:${from}-arm64`;
console.log(`==> Successfully created and pushed manifest: ${image}:${to}`);🧪 Testing Considerations
🔒 Security ConsiderationsNo security concerns identified. The script uses proper command execution through 📊 Code Quality
📝 Recommendations
Verdict✅ Approve with minor suggestions The core change is correct and necessary for proper multi-architecture Docker image support. The suggested improvements are minor and focus on better error messages and cleaner logging output. |

No description provided.