name: Build & Deploy on: push env: REGISTRY: git.aggtaa.com IMAGE_PREFIX: ${{ gitea.repository }} jobs: # ── BUILD SERVER ────────────────────────────────────────────────────────────── build-server: runs-on: docker1 defaults: run: working-directory: /workspace steps: - name: Check docker run: | echo "HOME=$HOME" echo "DOCKER_CONFIG=$DOCKER_CONFIG" echo "PATH=$PATH" docker info --format '{{.ClientInfo.Plugins}}' - name: Checkout working-directory: / run: | mkdir -p /workspace if [ -d /workspace/.git ]; then cd /workspace && git fetch origin && git reset --hard origin/${{ gitea.ref_name }} else git clone ${{ gitea.server_url }}/${{ gitea.repository }}.git /workspace fi - name: Build & push server run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | \ docker login ${{ env.REGISTRY }} -u ${{ secrets.REGISTRY_USER }} --password-stdin docker buildx build \ --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 \ --tag ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/server:latest \ --tag ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/server:${{ gitea.sha }} \ --file server.Dockerfile \ --push \ . # ── BUILD WEBCLIENT ─────────────────────────────────────────────────────────── build-webclient: runs-on: docker1 defaults: run: working-directory: /workspace steps: - name: Checkout working-directory: / run: | mkdir -p /workspace if [ -d /workspace/.git ]; then cd /workspace && git fetch origin && git reset --hard origin/${{ gitea.ref_name }} else git clone ${{ gitea.server_url }}/${{ gitea.repository }}.git /workspace fi - name: Build & push webclient run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | \ docker login ${{ env.REGISTRY }} -u ${{ secrets.REGISTRY_USER }} --password-stdin docker buildx build \ --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 \ --tag ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/webclient:latest \ --tag ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/webclient:${{ gitea.sha }} \ --file webclient.Dockerfile \ --push \ . # ── DEPLOY ──────────────────────────────────────────────────────────────────── deploy: runs-on: docker1 needs: [build-server, build-webclient] if: always() && !failure() && !cancelled() steps: - name: Deploy run: | mkdir -p "/app-cache/${{ gitea.repository }}" cd "/app-cache/${{ gitea.repository }}" if [ ! -d .git ]; then git clone ${{ gitea.server_url }}/${{ gitea.repository }}.git . else git pull origin main fi docker compose pull docker compose up -d --remove-orphans docker image prune -f