Skip to content

feat: add docker latest update ci#755

Merged
xieyxclack merged 1 commit intomainfrom
weirui/dev/release_ci0306
Mar 5, 2026
Merged

feat: add docker latest update ci#755
xieyxclack merged 1 commit intomainfrom
weirui/dev/release_ci0306

Conversation

@rayrayraykk
Copy link
Copy Markdown
Member

@rayrayraykk rayrayraykk commented Mar 5, 2026

Description

add docker latest update ci

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Refactoring

Component(s) Affected

  • Core / Backend (app, agents, config, providers, utils, local_models)
  • Console (frontend web UI)
  • Channels (DingTalk, Feishu, QQ, Discord, iMessage, etc.)
  • Skills
  • CLI
  • Documentation (website)
  • Tests
  • CI/CD
  • Scripts / Deploy

Checklist

  • I ran pre-commit run --all-files locally and it passes
  • If pre-commit auto-fixed files, I committed those changes and reran checks
  • I ran tests locally (pytest or as relevant) and they pass
  • Documentation updated (if needed)
  • Ready for review

Testing

[How to test these changes]

Local Verification Evidence

pre-commit run --all-files
# paste summary result

pytest
# paste summary result

Additional Notes

[Optional: any other context]

Summary by CodeRabbit

  • Chores
    • Enhanced release process to properly distinguish between beta and stable releases with appropriate version tagging.
    • Latest release tags now apply exclusively to stable releases, not beta releases.

Copilot AI review requested due to automatic review settings March 5, 2026 16:29
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 5, 2026

📝 Walkthrough

Walkthrough

Updated the Docker release workflow to support beta release semantics by introducing an is_beta input flag, adding logic to determine version and beta status from release metadata or workflow inputs, and conditionally applying latest tags only for stable releases.

Changes

Cohort / File(s) Summary
Docker Release Workflow
.github/workflows/docker-release.yml
Added is_beta workflow input and new step to extract version/beta status from release or dispatch inputs. Modified build step to conditionally apply latest tags based on beta status—latest tags only added when not a beta release. Adjusted image tagging logic to always include version and pre tags.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A beta hop through version lands,
Where flags now guide the Docker strands,
Latest tags dance when stable's true,
But rest when beta's coming through!
Multi-arch builds, precise and keen,
The cleanest releases you've ever seen. 🐳✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title describes adding Docker latest update CI, which aligns with the actual changes that add beta/formal release semantics and adjust image tagging logic to control when latest tags are applied.
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.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch weirui/dev/release_ci0306

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.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

Copy link
Copy Markdown

@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.

🧹 Nitpick comments (1)
.github/workflows/docker-release.yml (1)

68-72: Clarify pre tag semantics in documentation.

The pre tag is always updated for both beta and formal releases, which might be counterintuitive since "pre" typically suggests pre-release content. Based on the header comments, this appears intentional (the pre tag serves as a "latest tested" pointer), but consider adding a brief comment explaining its purpose to avoid confusion for future maintainers.

📝 Suggested documentation improvement
 # Build CoPaw multi-arch Docker image and push to DockerHub + Aliyun ACR on release.
 # Beta release: update <version> and pre only.
 # Formal release: update <version>, pre and latest.
+# Note: 'pre' tag always points to the most recent build (beta or formal).
+#       'latest' tag only points to formal/stable releases.
 name: Docker Build and Push on Release
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/docker-release.yml around lines 68 - 72, Add a brief
inline comment above the TAGS construction (the TAGS variable block that appends
"-t ...:pre" and the conditional that checks IS_BETA) explaining that the "pre"
tag is intentionally always updated for both beta and formal releases and serves
as a "latest tested" pointer rather than a traditional pre-release tag; mention
that IS_BETA still controls the "latest" tag but does not affect the "pre" tag
to avoid future confusion.
🤖 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/docker-release.yml:
- Around line 68-72: Add a brief inline comment above the TAGS construction (the
TAGS variable block that appends "-t ...:pre" and the conditional that checks
IS_BETA) explaining that the "pre" tag is intentionally always updated for both
beta and formal releases and serves as a "latest tested" pointer rather than a
traditional pre-release tag; mention that IS_BETA still controls the "latest"
tag but does not affect the "pre" tag to avoid future confusion.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 696d8d09-537c-4706-ae5f-b50d4fba84f3

📥 Commits

Reviewing files that changed from the base of the PR and between 73c1492 and 3f61c7b.

📒 Files selected for processing (1)
  • .github/workflows/docker-release.yml

@xieyxclack xieyxclack merged commit 74c0965 into main Mar 5, 2026
1 check was pending
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds support for conditionally pushing a latest Docker tag only on formal (non-beta) releases.

Changes:

  • Added a workflow_dispatch boolean input (is_beta) to control whether latest is updated.
  • Added a step to normalize version and is_beta values from either release or workflow_dispatch events.
  • Updated tagging logic to include latest only when is_beta is not true.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +68 to +72
TAGS="-t ${ACR_REGISTRY}/${IMAGE}:${VERSION} -t ${ACR_REGISTRY}/${IMAGE}:pre"
TAGS="${TAGS} -t docker.io/${IMAGE}:${VERSION} -t docker.io/${IMAGE}:pre"
if [ "${IS_BETA}" != "true" ]; then
TAGS="${TAGS} -t ${ACR_REGISTRY}/${IMAGE}:latest -t docker.io/${IMAGE}:latest"
fi
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

Building up TAGS as a single string is brittle because it relies on later word-splitting to turn it into arguments (and can misbehave if any variable ever contains whitespace or unexpected characters). Prefer using a Bash array for tags and pass it as separate arguments (e.g., TAGS=( -t ... -t ... ) then use \"${TAGS[@]}\" when invoking docker buildx build).

Copilot uses AI. Check for mistakes.
Comment on lines +54 to +60
if [ -n "${{ github.event.release.tag_name }}" ]; then
echo "version=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
echo "is_beta=${{ github.event.release.prerelease }}" >> $GITHUB_OUTPUT
else
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
echo "is_beta=${{ github.event.inputs.is_beta }}" >> $GITHUB_OUTPUT
fi
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

The event detection logic is currently based on whether github.event.release.tag_name is non-empty. It’s clearer and more robust to branch on the actual event type (e.g., github.event_name == 'release') so the intent is explicit and won’t be affected by payload shape changes.

Copilot uses AI. Check for mistakes.
Comment on lines +55 to +59
echo "version=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
echo "is_beta=${{ github.event.release.prerelease }}" >> $GITHUB_OUTPUT
else
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
echo "is_beta=${{ github.event.inputs.is_beta }}" >> $GITHUB_OUTPUT
Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

$GITHUB_OUTPUT should be quoted when redirecting (i.e., >> \"$GITHUB_OUTPUT\") to avoid edge cases with unusual paths. Using printf instead of echo is also more predictable for output formatting.

Copilot uses AI. Check for mistakes.
hh0592821 pushed a commit to hh0592821/CoPaw that referenced this pull request Mar 5, 2026
@rayrayraykk rayrayraykk deleted the weirui/dev/release_ci0306 branch March 6, 2026 13:40
tudan110 pushed a commit to tudan110/QwenPaw that referenced this pull request Apr 4, 2026
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.

3 participants