name: Build & Deploy on: push # push: # branches: [main] env: REGISTRY: ${{ gitea.server_url && 'git.aggtaa.com' || 'localhost' }} IMAGE_PREFIX: ${{ gitea.repository }} # owner/blockly3d jobs: # ── BUILD SERVER ───────────────────────────────────────────────────────────── build-server: runs-on: docker1 steps: - uses: actions/checkout@v4 - name: Login to Gitea Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build & push server uses: docker/build-push-action@v5 with: context: . file: server.Dockerfile push: true tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/server:latest ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/server:${{ gitea.sha }} cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/server:cache cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/server:cache,mode=max # ── BUILD WEBCLIENT ─────────────────────────────────────────────────────────── build-webclient: runs-on: docker1 steps: - uses: actions/checkout@v4 - name: Login to Gitea Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build & push webclient uses: docker/build-push-action@v5 with: context: . file: webclient.Dockerfile push: true tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/webclient:latest ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/webclient:${{ gitea.sha }} cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/webclient:cache cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/webclient:cache,mode=max # ── DEPLOY ──────────────────────────────────────────────────────────────────── deploy: runs-on: docker1 needs: [build-server, build-webclient] if: always() && !failure() && !cancelled() steps: - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts - name: Deploy run: | ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} bash << 'EOF' mkdir -p /opt/blockly3d cd /opt/blockly3d if [ ! -d .git ]; then git clone https://git.aggtaa.com/anton/blockly3d.git . else git pull origin main fi docker compose pull docker compose up -d --remove-orphans docker image prune -f EOF