The LobeHub repository utilizes GitHub Actions to manage a sophisticated release pipeline that spans monorepo package testing, Docker image distribution, and multi-platform Desktop application builds. This system integrates AI-powered automation via Claude Code to handle issue triaging, PR management, and automated testing.
The core release process is triggered by semantic version tags (v*.*.*) .github/workflows/release.yml10-11 The pipeline ensures code quality through linting and comprehensive testing before synchronizing documentation assets.
LobeHub uses an Auto Tag Release workflow to automate versioning based on PR titles and branch names .github/workflows/auto-tag-release.yml1-10
🚀 release: v* title format or patch PRs via branch prefixes like hotfix/* or release/* .github/workflows/auto-tag-release.yml35-60semver .github/workflows/auto-tag-release.yml93-101bun run workflow:changelog:gen and bun run workflow:changelog to update CHANGELOG.md and the static changelog files .github/workflows/auto-tag-release.yml158-162The Release CI workflow handles the final stages of a version release, including database integration tests and documentation synchronization .github/workflows/release.yml18-74
paradedb/paradedb:latest as a service container to run integration tests for the @lobechat/database package .github/workflows/release.yml23-33workflow:readme to automatically update the main README with the latest agents and plugins .github/workflows/release.yml62Sources: .github/workflows/release.yml1-74 .github/workflows/auto-tag-release.yml1-184
The Test CI workflow is the primary gatekeeper for pull requests and pushes to main branches. It employs a sharded strategy to optimize runner performance for the large Next.js application .github/workflows/test.yml1-121
To reduce execution time, application tests are split into multiple shards.
| Job | Responsibility | Tools |
|---|---|---|
check-duplicate-run | Skips redundant runs if content hasn't changed | fkirc/skip-duplicate-actions |
test-packages | Runs unit tests for all 20+ internal packages | vitest, bun |
test-app | Runs sharded Vitest suites for the main application | vitest --shard=x/2 |
merge-app-coverage | Combines coverage reports from all shards | vitest --merge-reports |
@lobechat/model-runtime, @lobechat/agent-runtime) and uploads individual coverage reports to Codecov .github/workflows/test.yml34-112packages/agent-runtime) .github/workflows/test.yml90-112Sources: .github/workflows/test.yml1-191
LobeHub maintains three distinct release channels for its Electron-based desktop application: Stable, Beta, and Canary.
| Channel | Trigger | Version Format | Target |
|---|---|---|---|
| Stable | Published Release (no suffix) | X.Y.Z | GitHub & S3 .github/workflows/release-desktop-stable.yml6-12 |
| Beta | Published Release (pre-release) | X.Y.Z-beta.N | GitHub .github/workflows/release-desktop-beta.yml6-7 |
| Canary | Push to canary branch | X.Y.(Z+1)-canary.N | GitHub .github/workflows/release-desktop-canary.yml14-16 |
The build process uses electron-builder to package the application for Windows, macOS (Intel/ARM), and Linux.
workflow:set-desktop-version is called to inject the calculated version into the desktop package.json before building .github/workflows/release-desktop-beta.yml94latest-mac.yml files are renamed to latest-mac-arm64.yml or latest-mac-x64.yml and merged using scripts/electronWorkflow/mergeMacReleaseFiles.js to ensure the auto-updater can find both architectures .github/workflows/pr-build-desktop.yml160-174 .github/workflows/release-desktop-beta.yml193UPDATE_SERVER_URL to point clients toward an S3-compatible storage for updates .github/workflows/release-desktop-stable.yml203-204Sources: .github/workflows/release-desktop-beta.yml1-215 .github/workflows/release-desktop-stable.yml1-204 .github/workflows/release-desktop-canary.yml1-184 .github/workflows/pr-build-desktop.yml1-185
LobeHub integrates anthropics/claude-code-action to automate repository maintenance tasks. This system maps natural language issue descriptions to specific code entities and team members.
When an issue is opened, Claude analyzes the content against predefined prompts in .claude/prompts/.
team-assignment.md to map features to owners (e.g., feature:knowledge-base is assigned to @Innei) .claude/prompts/team-assignment.md41Claude Dedupe Issues workflow uses Claude to identify and close duplicate issues automatically .github/workflows/claude-dedupe-issues.yml1-50.claude/prompts/e2e-coverage.md .github/workflows/claude-auto-testing.yml1-60| Code Feature / Label | Responsible Team Member | Code Entity Area |
|---|---|---|
feature:mcp | @arvinxx | packages/mcp |
feature:knowledge-base | @Innei | src/services/knowledgeBase |
feature:model-runtime | @tjx666 | packages/model-runtime |
platform:desktop | @Innei | apps/desktop |
feature:memory | @nekomeowww | packages/memory-user-memory |
Sources: .github/workflows/claude-issue-triage.yml1-86 .claude/prompts/team-assignment.md1-104 .github/workflows/claude-dedupe-issues.yml1-50
To keep the canary branch up to date with main, LobeHub uses a Branch Synchronization workflow .github/workflows/sync-main-to-canary.yaml1-7
canary is an ancestor of main, it performs a hard reset to main and pushes .github/workflows/sync-main-to-canary.yaml55-65Sources: .github/workflows/sync-main-to-canary.yaml1-130
The CI/CD pipeline requires several critical secrets for full functionality:
Test CI .github/workflows/test.yml65Sources: .github/workflows/release.yml38 .github/workflows/test.yml65 .github/workflows/release-desktop-stable.yml14-20
Refresh this wiki