ci: Gitea Actions runner + real deploy workflows + git hooks
This commit is contained in:
+43
-2
@@ -51,7 +51,48 @@ jobs:
|
||||
needs: [validate]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Deploy to agents
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
run: |
|
||||
echo "🚀 Deploying tag $(echo $GITHUB_REF | sed 's|refs/tags/||')"
|
||||
echo "Run: ./scripts/deploy.sh --mode=native $(echo $GITHUB_REF | sed 's|refs/tags/||')"
|
||||
echo "🚀 Deploying tag $TAG"
|
||||
|
||||
# Canary: Tanko first
|
||||
echo "--- Tanko (CT 112) ---"
|
||||
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 jerome@192.168.68.122 \
|
||||
"cd /root && bash -s" < scripts/deploy.sh --ct=tanko --mode=native "$TAG" 2>&1 || echo "⚠️ Tanko deploy skipped"
|
||||
|
||||
# Wait for canary to settle
|
||||
sleep 30
|
||||
|
||||
# Full rollout: Mumuni
|
||||
echo "--- Mumuni (CT 114) ---"
|
||||
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@192.168.68.123 \
|
||||
"cd /root && bash -s" < scripts/deploy.sh --ct=mumuni --mode=native "$TAG" 2>&1 || echo "⚠️ Mumuni deploy skipped"
|
||||
|
||||
- name: Deploy kagentz (Agent Zero)
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
run: |
|
||||
echo "--- kagentz (CT 105) ---"
|
||||
# For Agent Zero, copy files into the Docker container
|
||||
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@192.168.68.14 \
|
||||
"cd /root && bash -s" < scripts/deploy.sh --ct=kagentz --mode=legacy "$TAG" 2>&1 || echo "⚠️ kagentz deploy skipped"
|
||||
|
||||
- name: Verify deployment
|
||||
run: |
|
||||
echo "🔍 Verifying deployments..."
|
||||
sleep 10
|
||||
|
||||
# Check Tanko
|
||||
TANKO=$(ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 jerome@192.168.68.122 \
|
||||
"cat ~/.hermes/gateway_state.json 2>/dev/null" 2>/dev/null || echo '{}')
|
||||
echo "Tanko: $(echo $TANKO | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('platforms',{}).get('zulip',{}).get('state','unknown'))" 2>/dev/null)"
|
||||
|
||||
# Check Mumuni
|
||||
MUMUNI=$(ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 root@192.168.68.123 \
|
||||
"cat ~/.hermes/gateway_state.json 2>/dev/null" 2>/dev/null || echo '{}')
|
||||
echo "Mumuni: $(echo $MUMUNI | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('platforms',{}).get('zulip',{}).get('state','unknown'))" 2>/dev/null)"
|
||||
|
||||
echo "✅ Deploy verification complete"
|
||||
|
||||
+39
-11
@@ -37,11 +37,24 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Deploy to Tanko
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
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..."
|
||||
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 jerome@192.168.68.122 \
|
||||
"cd /root && bash -s" < scripts/deploy.sh --ct=tanko --mode=native "$TAG" 2>&1
|
||||
|
||||
- name: Canary health check
|
||||
run: |
|
||||
echo "⏳ Waiting 60s for canary to settle..."
|
||||
sleep 60
|
||||
STATE=$(ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 jerome@192.168.68.122 \
|
||||
"cat ~/.hermes/gateway_state.json 2>/dev/null" 2>/dev/null || echo '{}')
|
||||
ZULIP_STATE=$(echo $STATE | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('platforms',{}).get('zulip',{}).get('state','unknown'))" 2>/dev/null)
|
||||
echo "Tanko Zulip state: $ZULIP_STATE"
|
||||
if [ "$ZULIP_STATE" != "connected" ]; then
|
||||
echo "⚠️ Canary health check failed — promoting anyway (non-blocking)"
|
||||
fi
|
||||
|
||||
# ── Track 2: Hermes agents (after canary passes) ──────
|
||||
deploy-hermes:
|
||||
@@ -52,11 +65,26 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Deploy to all Hermes agents
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
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)"
|
||||
|
||||
# Mumuni
|
||||
echo "--- Mumuni (CT 114) ---"
|
||||
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@192.168.68.123 \
|
||||
"cd /root && bash -s" < scripts/deploy.sh --ct=mumuni --mode=native "$TAG" 2>&1
|
||||
|
||||
- name: Production health check
|
||||
run: |
|
||||
sleep 30
|
||||
for agent in "jerome@192.168.68.122" "root@192.168.68.123"; do
|
||||
STATE=$(ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 $agent \
|
||||
"cat ~/.hermes/gateway_state.json 2>/dev/null" 2>/dev/null || echo '{}')
|
||||
NAME=$(echo $agent | cut -d@ -f2)
|
||||
echo "$NAME: $(echo $STATE | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('platforms',{}).get('zulip',{}).get('state','unknown'))" 2>/dev/null)"
|
||||
done
|
||||
echo "✅ Production rollout complete"
|
||||
|
||||
# ── Track 3: Agent Zero (kagentz) ─────────────────────
|
||||
deploy-agent-zero:
|
||||
@@ -67,10 +95,10 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Deploy to kagentz
|
||||
env:
|
||||
TAG: ${{ github.ref_name }}
|
||||
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"
|
||||
TAG_CLEAN=$(echo $TAG | sed 's/^az-//')
|
||||
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@192.168.68.14 \
|
||||
"cd /root && bash -s" < scripts/deploy.sh --ct=kagentz --mode=legacy "$TAG_CLEAN" 2>&1
|
||||
|
||||
Reference in New Issue
Block a user