Phase 6.4 - Modular Architecture: - Add lewooogo-brain adapters for LLM providers - Add lewooogo-data dual memory (Redis + PostgreSQL) - Implement consensus engine for multi-agent decisions - Add incident memory service for historical context Phase 9 - Agent Teams (Claude Agent SDK): - Add base agent class with Claude Sonnet 4 integration - Implement action planner, blast radius, and security agents - Add agent API endpoints and proposal workflow - Integrate ADR-009 OpenClaw Agent Teams architecture DevOps & CI/CD: - Add GitHub Actions CI/CD workflows (ci.yaml, cd.yaml) - Add pre-commit hooks and secrets baseline - Add docker-compose for local development - Update Kubernetes network policies Frontend Improvements: - Add auto-healing error boundary component - Update i18n messages for agent features - Enhance dual-state incident card with execution feedback Documentation: - Add 7 ADRs covering MCP, design system, architecture decisions - Update ARCHITECTURE_MEMORY.md with modular design - Add GLOBAL_RULES.md and SOUL.md for project identity Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
95 lines
2.7 KiB
YAML
95 lines
2.7 KiB
YAML
name: CD
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
- '*.md'
|
|
|
|
env:
|
|
REGISTRY: 192.168.0.110:5000
|
|
IMAGE_PREFIX: library/awoooi
|
|
|
|
jobs:
|
|
# ==================== Build & Push Images ====================
|
|
build-images:
|
|
name: Build & Push Images
|
|
runs-on: self-hosted
|
|
strategy:
|
|
matrix:
|
|
app: [web, api]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to WOOO Harbor
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ secrets.HARBOR_USER }}
|
|
password: ${{ secrets.HARBOR_PASSWORD }}
|
|
|
|
- name: Generate image tag
|
|
id: tag
|
|
run: |
|
|
SHA=$(git rev-parse --short HEAD)
|
|
RUN_ID=${{ github.run_id }}
|
|
echo "tag=${SHA}-${RUN_ID}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Build & Push to Harbor
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: apps/${{ matrix.app }}/Dockerfile
|
|
push: true
|
|
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-${{ matrix.app }}:${{ steps.tag.outputs.tag }}
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
|
|
- name: Output image tag
|
|
run: |
|
|
echo "::notice::Image pushed: ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-${{ matrix.app }}:${{ steps.tag.outputs.tag }}"
|
|
|
|
# ==================== Deploy to UAT ====================
|
|
deploy-uat:
|
|
name: Deploy to UAT
|
|
runs-on: self-hosted
|
|
needs: build-images
|
|
environment: uat
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup Kubeconfig
|
|
run: |
|
|
mkdir -p ~/.kube
|
|
echo "${{ secrets.KUBE_CONFIG_UAT }}" | base64 -d > ~/.kube/config
|
|
chmod 600 ~/.kube/config
|
|
|
|
- name: Generate image tag
|
|
id: tag
|
|
run: |
|
|
SHA=$(git rev-parse --short HEAD)
|
|
RUN_ID=${{ github.run_id }}
|
|
echo "tag=${SHA}-${RUN_ID}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Deploy with Kustomize
|
|
run: |
|
|
cd k8s/overlays/uat
|
|
kustomize edit set image \
|
|
awoooi-web=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-web:${{ steps.tag.outputs.tag }} \
|
|
awoooi-api=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-api:${{ steps.tag.outputs.tag }}
|
|
kubectl apply -k .
|
|
|
|
- name: Wait for rollout
|
|
run: |
|
|
kubectl rollout status deployment/awoooi-web -n awoooi-uat --timeout=300s
|
|
kubectl rollout status deployment/awoooi-api -n awoooi-uat --timeout=300s
|
|
|
|
- name: Health check
|
|
run: |
|
|
sleep 10
|
|
curl -f https://api-uat.awoooi.wooo.work/v1/health || exit 1
|