Conversation
- add dedicated reusable workflow for latest/release pd-store-server publishing - split multi-arch publishing into amd64 first, arm64 second, then manifest merge - introduce latest schedule and hash gate using LAST_SERVER_HASH - remove standalone server latest/release workflows and update README map
- switch cache export to mode=min with ignore-error to avoid hard failures - add shared plus module cache scopes for better cross-module Maven layer reuse - separate amd64 and arm64 cache scopes to reduce cross-arch cache contention - add upstream refactor notes for Dockerfile and artifact-based build dedup
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
Walkthrough新增专用可重用 GitHub Actions 工作流 Changes
Sequence Diagram(s)sequenceDiagram
participant GH as GitHub Actions
participant Git as Git Repository
participant Docker as Docker Hub
participant Compose as Docker Compose
participant API as GitHub API
rect rgba(100,150,255,0.5)
Note over GH: Prepare
GH->>Git: ls-remote 获取分支 SHA
Git-->>GH: 返回 commit SHA
GH->>GH: 计算 version_tag、need_update 与模块矩阵
end
rect rgba(150,200,100,0.5)
Note over GH: Integration Precheck (strict_mode)
GH->>Git: checkout 指定 SHA
GH->>GH: 设置 buildx 并本地构建 amd64 预检镜像
GH->>Compose: 启动 docker-compose(使用预检镜像)
Compose-->>GH: 服务就绪 / 健康检查结果
GH->>GH: 收集日志并清理资源
end
rect rgba(200,150,100,0.5)
Note over GH: Publish per-arch
GH->>Docker: 构建并推送 amd64 标签(VERSION_TAG-amd64)
Docker-->>GH: 推送完成
GH->>Docker: 构建并推送 arm64 标签(VERSION_TAG-arm64)
Docker-->>GH: 推送完成
end
rect rgba(100,200,150,0.5)
Note over GH: Manifest & Hash Update
GH->>Docker: 创建并推送多架构 manifest VERSION_TAG
Docker-->>GH: manifest 可用
alt enable_hash_gate && mode == latest
GH->>API: PATCH 更新目标仓库的 latest-hash 变量
API-->>GH: 更新成功
end
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
兔子之诗
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request refactors the image publishing workflows, specifically consolidating the pd-store-server publish flow. It introduces a dedicated reusable workflow for pd/store/server images, enhancing clarity and maintainability. The README has been updated to reflect these changes, providing a clearer understanding of the different workflow types and their responsibilities. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request refactors the image publishing workflows by consolidating the pd-store-server flow into its own reusable workflow. The changes primarily update the README.md to reflect this new structure, including an updated architecture diagram and descriptions of the new, specialized workflow. The documentation changes are clear and accurately represent the refactoring. I have a couple of minor suggestions to further improve the clarity and consistency of the documentation.
There was a problem hiding this comment.
Pull request overview
This PR consolidates the standalone “server” image publishing workflows into the existing pd/store/server publishing pipeline by introducing a dedicated reusable workflow for the specialized sequencing and checks.
Changes:
- Removed the separate
publish_latest_server_image.ymlandpublish_release_server_image.ymlworkflows. - Added
_publish_pd_store_server_reusable.ymland wired both latest/release pd-store-server wrappers to use it. - Updated README documentation to reflect the split between the standard reusable flow and the specialized pd/store/server flow.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates workflow architecture docs and maps to include the new dedicated reusable pd/store/server flow. |
| .github/workflows/publish_latest_server_image.yml | Removed (server publishing is now covered by the pd/store/server flow). |
| .github/workflows/publish_release_server_image.yml | Removed (server release publishing is now covered by the pd/store/server flow). |
| .github/workflows/publish_latest_pd_store_server_image.yml | Adds schedule trigger and switches to the new specialized reusable workflow with hash-gating. |
| .github/workflows/publish_release_pd_store_server_image.yml | Adds a release wrapper that calls the new specialized reusable workflow. |
| .github/workflows/_publish_pd_store_server_reusable.yml | New reusable workflow implementing integration precheck + staged per-arch publishing + manifest merge. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- remove unused checkout_ref output and related shell assignment - serialize build_matrix_json with multiline output to reduce quoting risk - clarify hstore wording in README for external readers - keep workflow map list focused on triggerable wrapper workflows
|
/gemini review |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- make latest strict_mode expression robust to both boolean and string false - smoke-test standalone amd64 image locally before pushing registry tag - keep non-smoke modules on direct build-and-push path - clarify README wrapper inputs and matrix ownership wording
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request refactors the image publishing workflows by consolidating the logic for pd-store-server into a new reusable workflow. The changes primarily involve updating the README.md to reflect the new structure, including an updated workflow diagram, descriptions of the new reusable workflows, and an updated map of workflow files. The documentation changes are clear and accurately describe the new workflow architecture. I have one minor suggestion to improve the markdown formatting for better readability.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@README.md`:
- Line 95: Update the README sentence that reads "1. Create a thin
`publish_latest_*.yml` wrapper if the image needs scheduled or hash-gated
automatic publishing." to use correct grammar—replace "needs scheduled" with
either "needs to be scheduled" or "requires scheduled" so it becomes e.g. "if
the image needs to be scheduled or hash-gated automatic publishing" (locate and
edit that exact sentence in README.md).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: d8d9c2a6-5cd2-4190-97bc-ea9fc817f6b7
📒 Files selected for processing (3)
.github/workflows/_publish_pd_store_server_reusable.yml.github/workflows/publish_latest_pd_store_server_image.ymlREADME.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .github/workflows/_publish_pd_store_server_reusable.yml
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- change shared cache to read-only by removing shared scope from cache-to - keep per-module cache export with mode=min and ignore-error=true - preserve shared scope in cache-from for best-effort reuse - fix README grammar for scheduled/hash-gated wrapper guidance
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/workflows/_publish_pd_store_server_reusable.yml (1)
363-374: 烟雾测试中的固定等待时间可能导致不稳定。两个
sleep 20使测试在冷启动运行器上可能失败,且现有的wait_timeout_sec输入并未影响此处。考虑使用轮询方式等待端点就绪,而非固定等待时间。♻️ 建议使用轮询替代固定等待
- name: Smoke test standalone server amd64 if: ${{ matrix.smoke_test }} env: IMAGE_URL: ${{ steps.tags.outputs.image_amd64 }} run: | docker rm -f graph >/dev/null 2>&1 || true docker run -d --name=graph -p 18080:8080 "$IMAGE_URL" - sleep 20 - curl -fsS http://127.0.0.1:18080 >/dev/null || exit 1 - docker ps -a - sleep 20 - curl -fsS http://127.0.0.1:18080 >/dev/null || exit 1 + # 轮询等待服务就绪,最多60秒 + for i in {1..30}; do + if curl -fsS --max-time 2 http://127.0.0.1:18080 >/dev/null 2>&1; then + echo "Service is ready after $((i*2)) seconds" + break + fi + sleep 2 + done + # 最终验证 + curl -fsS http://127.0.0.1:18080 >/dev/null || exit 1 + docker ps -a🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.github/workflows/_publish_pd_store_server_reusable.yml around lines 363 - 374, The two fixed "sleep 20" calls in the "Smoke test standalone server amd64" step make startup brittle; replace them with a polling loop that repeatedly runs curl against http://127.0.0.1:18080 until it succeeds or a timeout is reached, using the existing wait_timeout_sec input (or an env var) as the overall timeout and a short poll interval (e.g., 1–2s); ensure the step still starts the container with docker run --name=graph using IMAGE_URL and exits non‑zero if the endpoint never becomes ready within wait_timeout_sec.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In @.github/workflows/_publish_pd_store_server_reusable.yml:
- Around line 363-374: The two fixed "sleep 20" calls in the "Smoke test
standalone server amd64" step make startup brittle; replace them with a polling
loop that repeatedly runs curl against http://127.0.0.1:18080 until it succeeds
or a timeout is reached, using the existing wait_timeout_sec input (or an env
var) as the overall timeout and a short poll interval (e.g., 1–2s); ensure the
step still starts the container with docker run --name=graph using IMAGE_URL and
exits non‑zero if the endpoint never becomes ready within wait_timeout_sec.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: e154f06b-3721-4338-a6c0-aaeb62969be2
📒 Files selected for processing (2)
.github/workflows/_publish_pd_store_server_reusable.ymlREADME.md
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| cache-from: | | ||
| type=gha,scope=${{ steps.tags.outputs.shared_cache_scope }} | ||
| type=gha,scope=${{ steps.tags.outputs.module_cache_scope }} | ||
| cache-to: type=gha,scope=${{ steps.tags.outputs.module_cache_scope }},mode=min,ignore-error=true |
There was a problem hiding this comment.
shared_cache_scope is used for arm64 cache-from as well, but this workflow never exports a cache to pd-store-server-shared-arm64 (no cache-to with that scope). Consider either adding a shared cache export for arm64 too, or removing the shared cache reference so the cache behavior is clear and effective.
| cache-to: type=gha,scope=${{ steps.tags.outputs.module_cache_scope }},mode=min,ignore-error=true | |
| cache-to: | | |
| type=gha,scope=${{ steps.tags.outputs.shared_cache_scope }},mode=min,ignore-error=true | |
| type=gha,scope=${{ steps.tags.outputs.module_cache_scope }},mode=min,ignore-error=true |
- remove unused shared cache scopes from cache-from across precheck and publish jobs - keep module-scoped cache-from/cache-to only for amd64 and arm64 builds - preserve min-sized cache export with ignore-error for stability - simplify cache behavior to match actual producer/consumer flow
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Release Notes
New Feature
Improvements
Removals
Documentation
TODOs:
发布说明
新功能
改进
移除
文档