Files
wehub-resource-sync 426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00

337 lines
11 KiB
YAML

name: Release Orchestrator
on:
release:
types: [published]
workflow_call:
inputs:
version:
description: "Version to distribute (e.g. 2.0.0-beta.0)"
required: true
type: string
publish_npm:
description: "Publish npm package"
required: false
type: boolean
default: true
publish_packages:
description: "Publish PyPI / Snap / Debian / Flatpak"
required: false
type: boolean
default: true
publish_android:
description: "Publish Android build"
required: false
type: boolean
default: true
publish_apple:
description: "Publish Apple builds"
required: false
type: boolean
default: true
publish_desktop:
description: "Publish desktop installers"
required: false
type: boolean
default: true
update_homebrew:
description: "Update Homebrew tap"
required: false
type: boolean
default: true
deploy_homepage:
description: "Deploy homepage"
required: false
type: boolean
default: true
workflow_dispatch:
inputs:
version:
description: "Version to distribute (e.g. 2.0.0-beta.0)"
required: true
type: string
publish_npm:
description: "Publish npm package"
required: false
type: boolean
default: true
publish_packages:
description: "Publish PyPI / Snap / Debian / Flatpak"
required: false
type: boolean
default: true
publish_android:
description: "Publish Android build"
required: false
type: boolean
default: true
publish_apple:
description: "Publish Apple builds"
required: false
type: boolean
default: true
publish_desktop:
description: "Publish desktop installers"
required: false
type: boolean
default: true
update_homebrew:
description: "Update Homebrew tap"
required: false
type: boolean
default: true
deploy_homepage:
description: "Deploy homepage"
required: false
type: boolean
default: true
permissions:
contents: write
packages: write
id-token: write
pages: write
jobs:
prepare:
name: Resolve release metadata
runs-on: ${{ fromJSON(vars.HETZNER_FLEET_ONLINE == 'false' && '["ubuntu-24.04"]' || '["self-hosted","hetzner-robot"]') }}
outputs:
version: ${{ steps.meta.outputs.version }}
tag: ${{ steps.meta.outputs.tag }}
is_prerelease: ${{ steps.meta.outputs.is_prerelease }}
npm_dist_tag: ${{ steps.meta.outputs.npm_dist_tag }}
android_track: ${{ steps.meta.outputs.android_track }}
apple_track: ${{ steps.meta.outputs.apple_track }}
publish_npm: ${{ steps.meta.outputs.publish_npm }}
publish_packages: ${{ steps.meta.outputs.publish_packages }}
publish_flatpak: ${{ steps.meta.outputs.publish_flatpak }}
publish_android: ${{ steps.meta.outputs.publish_android }}
publish_apple: ${{ steps.meta.outputs.publish_apple }}
publish_desktop: ${{ steps.meta.outputs.publish_desktop }}
update_homebrew: ${{ steps.meta.outputs.update_homebrew }}
deploy_homepage: ${{ steps.meta.outputs.deploy_homepage }}
steps:
- name: Determine routing policy
id: meta
shell: bash -euo pipefail {0}
env:
INPUT_VERSION: ${{ inputs.version }}
TAG_NAME: ${{ github.event.release.tag_name || '' }}
run: |
if [[ -n "$INPUT_VERSION" ]]; then
VERSION="$INPUT_VERSION"
else
VERSION="${TAG_NAME#v}"
fi
TAG="v${VERSION}"
IS_PRERELEASE="false"
NPM_DIST_TAG="latest"
ANDROID_TRACK="production"
APPLE_TRACK="app-store"
if echo "$VERSION" | grep -qi 'alpha'; then
echo "::error::Alpha releases are disabled. Use a beta, rc, nightly, or stable version."
exit 1
fi
if echo "$VERSION" | grep -qiE '(beta|rc|nightly)'; then
IS_PRERELEASE="true"
ANDROID_TRACK="internal"
APPLE_TRACK="testflight"
if echo "$VERSION" | grep -qi 'nightly'; then
NPM_DIST_TAG="nightly"
elif echo "$VERSION" | grep -qi 'beta'; then
NPM_DIST_TAG="beta"
else
NPM_DIST_TAG="next"
fi
fi
if [[ "${{ github.event_name }}" == "workflow_dispatch" || "${{ github.event_name }}" == "workflow_call" ]]; then
PUBLISH_NPM="${{ inputs.publish_npm }}"
PUBLISH_PACKAGES="${{ inputs.publish_packages }}"
PUBLISH_ANDROID="${{ inputs.publish_android }}"
PUBLISH_APPLE="${{ inputs.publish_apple }}"
PUBLISH_DESKTOP="${{ inputs.publish_desktop }}"
UPDATE_HOMEBREW="${{ inputs.update_homebrew }}"
DEPLOY_HOMEPAGE="${{ inputs.deploy_homepage }}"
else
PUBLISH_NPM="true"
PUBLISH_PACKAGES="true"
PUBLISH_ANDROID="true"
PUBLISH_APPLE="true"
PUBLISH_DESKTOP="true"
UPDATE_HOMEBREW="true"
DEPLOY_HOMEPAGE="true"
fi
PUBLISH_FLATPAK="$PUBLISH_PACKAGES"
if [[ "$IS_PRERELEASE" == "true" ]]; then
UPDATE_HOMEBREW="false"
fi
{
echo "version=$VERSION"
echo "tag=$TAG"
echo "is_prerelease=$IS_PRERELEASE"
echo "npm_dist_tag=$NPM_DIST_TAG"
echo "android_track=$ANDROID_TRACK"
echo "apple_track=$APPLE_TRACK"
echo "publish_npm=$PUBLISH_NPM"
echo "publish_packages=$PUBLISH_PACKAGES"
echo "publish_flatpak=$PUBLISH_FLATPAK"
echo "publish_android=$PUBLISH_ANDROID"
echo "publish_apple=$PUBLISH_APPLE"
echo "publish_desktop=$PUBLISH_DESKTOP"
echo "update_homebrew=$UPDATE_HOMEBREW"
echo "deploy_homepage=$DEPLOY_HOMEPAGE"
} >> "$GITHUB_OUTPUT"
- name: Summary
run: |
{
echo "## Release distribution plan"
echo ""
echo "| Field | Value |"
echo "|-------|-------|"
echo "| Version | \`${{ steps.meta.outputs.version }}\` |"
echo "| Tag | \`${{ steps.meta.outputs.tag }}\` |"
echo "| Pre-release | \`${{ steps.meta.outputs.is_prerelease }}\` |"
echo "| npm dist-tag | \`${{ steps.meta.outputs.npm_dist_tag }}\` |"
echo "| Android track | \`${{ steps.meta.outputs.android_track }}\` |"
echo "| Apple track | \`${{ steps.meta.outputs.apple_track }}\` |"
echo "| Desktop installers enabled | \`${{ steps.meta.outputs.publish_desktop }}\` |"
echo "| Homebrew enabled | \`${{ steps.meta.outputs.update_homebrew }}\` |"
echo "| Flatpak enabled | \`${{ steps.meta.outputs.publish_flatpak }}\` |"
} >> "$GITHUB_STEP_SUMMARY"
publish-packages:
name: Package registries
needs: prepare
if: needs.prepare.outputs.publish_packages == 'true'
uses: ./.github/workflows/publish-packages.yml
with:
version: ${{ needs.prepare.outputs.version }}
pypi: true
snap: true
flatpak: ${{ needs.prepare.outputs.publish_flatpak == 'true' }}
apt: true
secrets: inherit
publish-android:
name: Android
needs: prepare
if: needs.prepare.outputs.publish_android == 'true'
uses: ./.github/workflows/android-release.yml
with:
version_name: ${{ needs.prepare.outputs.version }}
track: ${{ needs.prepare.outputs.android_track }}
secrets: inherit
publish-apple:
name: Apple Stores
needs: prepare
if: needs.prepare.outputs.publish_apple == 'true'
uses: ./.github/workflows/apple-store-release.yml
with:
platform: both
track: ${{ needs.prepare.outputs.apple_track }}
version: ${{ needs.prepare.outputs.version }}
secrets: inherit
publish-desktop:
name: Desktop installers
needs: prepare
if: needs.prepare.outputs.publish_desktop == 'true'
uses: ./.github/workflows/release-electrobun.yml
with:
tag: ${{ needs.prepare.outputs.tag }}
draft: false
publish_release: true
platform: all
secrets: inherit
update-homebrew:
name: Homebrew
needs: prepare
if: needs.prepare.outputs.update_homebrew == 'true'
uses: ./.github/workflows/update-homebrew.yml
with:
version: ${{ needs.prepare.outputs.version }}
secrets: inherit
deploy-homepage:
name: Homepage
needs:
[
prepare,
publish-packages,
publish-android,
publish-apple,
publish-desktop,
]
# Deploy after the artifact-producing jobs so the homepage's release-data
# fetch (which queries the GitHub Releases API) sees the new assets.
if: |
always() &&
needs.prepare.outputs.deploy_homepage == 'true' &&
needs.prepare.result == 'success'
uses: ./.github/workflows/deploy-homepage.yml
with:
ref: ${{ needs.prepare.outputs.tag }}
secrets: inherit
summary:
name: Distribution summary
needs:
[
prepare,
publish-packages,
publish-android,
publish-apple,
publish-desktop,
update-homebrew,
deploy-homepage,
]
if: always()
runs-on: ${{ fromJSON(vars.HETZNER_FLEET_ONLINE == 'false' && '["ubuntu-24.04"]' || '["self-hosted","hetzner-robot"]') }}
steps:
- name: Summary
run: |
{
echo "## Release Orchestrator"
echo ""
echo "| Target | Result |"
echo "|--------|--------|"
echo "| Package registries | ${{ needs.publish-packages.result || 'skipped' }} |"
echo "| Android | ${{ needs.publish-android.result || 'skipped' }} |"
echo "| Apple Stores | ${{ needs.publish-apple.result || 'skipped' }} |"
echo "| Desktop installers | ${{ needs.publish-desktop.result || 'skipped' }} |"
echo "| Homebrew | ${{ needs.update-homebrew.result || 'skipped' }} |"
echo "| Homepage | ${{ needs.deploy-homepage.result || 'skipped' }} |"
} >> "$GITHUB_STEP_SUMMARY"
- name: Require enabled distributions succeeded
run: |
failed=0
require_result() {
local label="$1"
local enabled="$2"
local result="$3"
if [[ "$enabled" == "true" && "$result" != "success" ]]; then
echo "::error::$label distribution result was '$result', expected success"
failed=1
fi
}
require_result "Package registries" "${{ needs.prepare.outputs.publish_packages }}" "${{ needs.publish-packages.result }}"
require_result "Android" "${{ needs.prepare.outputs.publish_android }}" "${{ needs.publish-android.result }}"
require_result "Apple Stores" "${{ needs.prepare.outputs.publish_apple }}" "${{ needs.publish-apple.result }}"
require_result "Desktop installers" "${{ needs.prepare.outputs.publish_desktop }}" "${{ needs.publish-desktop.result }}"
require_result "Homebrew" "${{ needs.prepare.outputs.update_homebrew }}" "${{ needs.update-homebrew.result }}"
require_result "Homepage" "${{ needs.prepare.outputs.deploy_homepage }}" "${{ needs.deploy-homepage.result }}"
exit "$failed"