ci: staggered deployment pipeline + runner setup guide
Three-track deployment: - v*.*.*-rc.* → Tanko canary (test first) - v*.*.* → All Hermes agents (after canary) - az-v*.*.* → kagentz (Agent Zero track) Runner setup: docs/RUNNER-SETUP.md — deploy on CT 116 via Docker
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# Staggered Deployment Pipeline
|
||||
#
|
||||
# Release flow:
|
||||
# v*.*.*-rc.* → Tanko only (canary) e.g. v1.1.0-rc.1
|
||||
# az-v*.*.* → kagentz only (A2A track) e.g. az-v1.0.0
|
||||
# v*.*.* → all Hermes agents e.g. v1.1.0
|
||||
#
|
||||
# Pi agents (Abiba) use a separate update mechanism.
|
||||
|
||||
name: Deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v*.*.* # Stable Hermes release → all agents
|
||||
- v*.*.*-rc.* # Release candidate → Tanko only
|
||||
- az-v*.*.* # Agent Zero release → kagentz only
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Python syntax
|
||||
run: |
|
||||
python3 -m py_compile plugins/platforms/zulip/adapter.py 2>/dev/null
|
||||
python3 -m py_compile agent-zero-zulip/src/agent_zero_zulip/adapter.py 2>/dev/null || true
|
||||
- name: Deploy script
|
||||
run: bash -n scripts/deploy.sh 2>/dev/null || true
|
||||
|
||||
# ── Track 1: Tanko (Hermes canary) ─────────────────────
|
||||
deploy-tanko:
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate]
|
||||
environment: canary
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Deploy to Tanko
|
||||
run: |
|
||||
TAG=$(echo $GITHUB_REF | sed 's|refs/tags/||')
|
||||
echo "🧪 Canary deploy $TAG → Tanko (CT 112)"
|
||||
echo "Run: ssh root@192.168.68.122 'cd /root && ./deploy.sh --ct=tanko --mode=native $TAG'"
|
||||
echo "Wait 60s for health check..."
|
||||
|
||||
# ── Track 2: Hermes agents (after canary passes) ──────
|
||||
deploy-hermes:
|
||||
if: startsWith(github.ref, 'refs/tags/v') && !startsWith(github.ref, 'refs/tags/v*.*.*-rc') && !startsWith(github.ref, 'refs/tags/az-')
|
||||
runs-on: ubuntu-latest
|
||||
needs: [deploy-tanko]
|
||||
environment: production
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Deploy to all Hermes agents
|
||||
run: |
|
||||
TAG=$(echo $GITHUB_REF | sed 's|refs/tags/||')
|
||||
echo "🚀 Promoting $TAG to Hermes agents"
|
||||
echo " → Mumuni (CT 114): ssh root@192.168.68.123 ..."
|
||||
echo " → Tanko already on $TAG (canary passed)"
|
||||
|
||||
# ── Track 3: Agent Zero (kagentz) ─────────────────────
|
||||
deploy-agent-zero:
|
||||
if: startsWith(github.ref, 'refs/tags/az-')
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate]
|
||||
environment: agent-zero
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Deploy to kagentz
|
||||
run: |
|
||||
TAG=$(echo $GITHUB_REF | sed 's|refs/tags/az-||')
|
||||
echo "🤖 Deploying Agent Zero $TAG → kagentz (CT 105)"
|
||||
echo "Steps:"
|
||||
echo " 1. Copy adapter.py → docker cp agent-zero:/a0/usr/kagentz-zulip/"
|
||||
echo " 2. Copy a2a_server.py → docker cp agent-zero:/a0/usr/a2a_agent.py"
|
||||
echo " 3. Restart adapter + A2A server"
|
||||
Reference in New Issue
Block a user