Simplify CI: remove GPU workflow, use registry images
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m32s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m32s
- Remove gpu-worker.yml (no GPU server) - Fix ci.yml: install ssh/rsync in job container, remove GPU steps - Remove source mounts from l1-server and l1-worker so they use image code Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,6 @@ on:
|
|||||||
env:
|
env:
|
||||||
REGISTRY: registry.rose-ash.com:5000
|
REGISTRY: registry.rose-ash.com:5000
|
||||||
IMAGE_CPU: celery-l1-server
|
IMAGE_CPU: celery-l1-server
|
||||||
IMAGE_GPU: celery-l1-gpu-server
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-deploy:
|
build-and-deploy:
|
||||||
@@ -15,6 +14,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install tools
|
||||||
|
run: |
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends openssh-client rsync
|
||||||
|
|
||||||
- name: Set up SSH
|
- name: Set up SSH
|
||||||
env:
|
env:
|
||||||
SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||||
@@ -35,9 +38,10 @@ jobs:
|
|||||||
--exclude '*.pyc' \
|
--exclude '*.pyc' \
|
||||||
--exclude '.pytest_cache' \
|
--exclude '.pytest_cache' \
|
||||||
--exclude 'venv' \
|
--exclude 'venv' \
|
||||||
|
--exclude '.env' \
|
||||||
./ "root@$DEPLOY_HOST:/root/art-dag/celery/"
|
./ "root@$DEPLOY_HOST:/root/art-dag/celery/"
|
||||||
|
|
||||||
- name: Build and push CPU image
|
- name: Build and push image
|
||||||
env:
|
env:
|
||||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
||||||
run: |
|
run: |
|
||||||
@@ -48,17 +52,6 @@ jobs:
|
|||||||
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_CPU }}:${{ github.sha }}
|
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_CPU }}:${{ github.sha }}
|
||||||
"
|
"
|
||||||
|
|
||||||
- name: Build and push GPU image
|
|
||||||
env:
|
|
||||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
|
||||||
run: |
|
|
||||||
ssh "root@$DEPLOY_HOST" "
|
|
||||||
cd /root/art-dag/celery
|
|
||||||
docker build --build-arg CACHEBUST=\$(date +%s) -f Dockerfile.gpu -t ${{ env.REGISTRY }}/${{ env.IMAGE_GPU }}:latest -t ${{ env.REGISTRY }}/${{ env.IMAGE_GPU }}:${{ github.sha }} .
|
|
||||||
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_GPU }}:latest
|
|
||||||
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_GPU }}:${{ github.sha }}
|
|
||||||
"
|
|
||||||
|
|
||||||
- name: Deploy stack
|
- name: Deploy stack
|
||||||
env:
|
env:
|
||||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
||||||
@@ -70,22 +63,3 @@ jobs:
|
|||||||
sleep 10
|
sleep 10
|
||||||
docker stack services celery
|
docker stack services celery
|
||||||
"
|
"
|
||||||
|
|
||||||
- name: Deploy GPU worker
|
|
||||||
env:
|
|
||||||
GPU_HOST: ${{ secrets.GPU_HOST }}
|
|
||||||
SSH_KEY: ${{ secrets.GPU_SSH_KEY }}
|
|
||||||
if: ${{ env.GPU_HOST != '' }}
|
|
||||||
run: |
|
|
||||||
# Set up GPU SSH if different host
|
|
||||||
if [ -n "$SSH_KEY" ]; then
|
|
||||||
echo "$SSH_KEY" > ~/.ssh/gpu_key
|
|
||||||
chmod 600 ~/.ssh/gpu_key
|
|
||||||
ssh-keyscan -H "${GPU_HOST#*@}" >> ~/.ssh/known_hosts 2>/dev/null || true
|
|
||||||
|
|
||||||
ssh -i ~/.ssh/gpu_key "$GPU_HOST" "
|
|
||||||
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_GPU }}:latest
|
|
||||||
docker stack deploy -c /root/art-dag/celery/docker-compose.yml celery || \
|
|
||||||
docker service update --image ${{ env.REGISTRY }}/${{ env.IMAGE_GPU }}:latest celery_l1-gpu-worker
|
|
||||||
"
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
name: GPU Worker CI/CD
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
paths:
|
|
||||||
- 'sexp_effects/**'
|
|
||||||
- 'streaming/**'
|
|
||||||
- 'tasks/**'
|
|
||||||
- 'Dockerfile.gpu'
|
|
||||||
- 'requirements.txt'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v4
|
|
||||||
with:
|
|
||||||
python-version: '3.11'
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: |
|
|
||||||
pip install -r requirements.txt
|
|
||||||
pip install pytest
|
|
||||||
|
|
||||||
- name: Run frame compatibility tests
|
|
||||||
run: |
|
|
||||||
pytest tests/test_frame_compatibility.py -v --ignore-glob='*gpu*' || true
|
|
||||||
# Note: GPU tests skipped on CI (no GPU), but CPU tests must pass
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
needs: test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: github.ref == 'refs/heads/main'
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Deploy to GPU node
|
|
||||||
env:
|
|
||||||
GPU_HOST: ${{ secrets.GPU_HOST }}
|
|
||||||
SSH_KEY: ${{ secrets.GPU_SSH_KEY }}
|
|
||||||
run: |
|
|
||||||
# Set up SSH
|
|
||||||
mkdir -p ~/.ssh
|
|
||||||
echo "$SSH_KEY" > ~/.ssh/id_rsa
|
|
||||||
chmod 600 ~/.ssh/id_rsa
|
|
||||||
ssh-keyscan -H ${GPU_HOST#*@} >> ~/.ssh/known_hosts 2>/dev/null || true
|
|
||||||
|
|
||||||
# Sync code
|
|
||||||
rsync -avz --delete \
|
|
||||||
--exclude '.git' \
|
|
||||||
--exclude '__pycache__' \
|
|
||||||
--exclude '*.pyc' \
|
|
||||||
--exclude '.pytest_cache' \
|
|
||||||
./ "$GPU_HOST:/root/art-dag/celery/"
|
|
||||||
|
|
||||||
# Build and restart
|
|
||||||
ssh "$GPU_HOST" "
|
|
||||||
cd /root/art-dag/celery
|
|
||||||
docker build -t git.rose-ash.com/art-dag/l1-gpu-server:latest -f Dockerfile.gpu .
|
|
||||||
docker kill \$(docker ps -q -f name=l1-gpu-worker) 2>/dev/null || true
|
|
||||||
echo 'GPU worker restarted'
|
|
||||||
"
|
|
||||||
|
|
||||||
- name: Verify deployment
|
|
||||||
env:
|
|
||||||
GPU_HOST: ${{ secrets.GPU_HOST }}
|
|
||||||
SSH_KEY: ${{ secrets.GPU_SSH_KEY }}
|
|
||||||
run: |
|
|
||||||
sleep 15
|
|
||||||
ssh "$GPU_HOST" "docker logs --tail 20 \$(docker ps -q -f name=l1-gpu-worker)"
|
|
||||||
@@ -82,8 +82,6 @@ services:
|
|||||||
# L2_SERVER, L2_DOMAIN, IPFS_GATEWAY_URL from .env file
|
# L2_SERVER, L2_DOMAIN, IPFS_GATEWAY_URL from .env file
|
||||||
volumes:
|
volumes:
|
||||||
- l1_cache:/data/cache
|
- l1_cache:/data/cache
|
||||||
# Mount source code for development - restart service to pick up changes
|
|
||||||
- .:/app
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- postgres
|
- postgres
|
||||||
@@ -113,8 +111,6 @@ services:
|
|||||||
- ARTDAG_CLUSTER_KEY=${ARTDAG_CLUSTER_KEY:-}
|
- ARTDAG_CLUSTER_KEY=${ARTDAG_CLUSTER_KEY:-}
|
||||||
volumes:
|
volumes:
|
||||||
- l1_cache:/data/cache
|
- l1_cache:/data/cache
|
||||||
# Mount source code for development - restart service to pick up changes
|
|
||||||
- .:/app
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- postgres
|
- postgres
|
||||||
|
|||||||
Reference in New Issue
Block a user