name: Build & Deploy on: [workflow_dispatch, push] env: REGISTRY: git.aggtaa.com # IMAGE_PREFIX: ${{ gitea.repository }} # set by a step jobs: # ── BUILD SERVER ────────────────────────────────────────────────────────────── build-app: runs-on: docker1 outputs: IMAGE_PREFIX: ${{ steps.prefix.outputs.IMAGE_PREFIX }} defaults: run: shell: sh working-directory: /workspace steps: - name: Checkout working-directory: / run: | mkdir -p /workspace cd /workspace if [ -d .git ]; then git remote set-url origin ${{ gitea.server_url }}/${{ gitea.repository }}.git else git init git remote add origin ${{ gitea.server_url }}/${{ gitea.repository }}.git fi git fetch --prune origin ${{ gitea.ref_name }} git checkout -f FETCH_HEAD git reset --hard FETCH_HEAD git clean -fdx - name: Set lowercase image prefix run: echo "IMAGE_PREFIX=$(echo '${{ gitea.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV - name: Build & push app run: | cd /workspace echo "${{ secrets.REGISTRY_PASSWORD }}" | \ docker login ${{ env.REGISTRY }} -u ${{ secrets.REGISTRY_USER }} --password-stdin /data/tools/docker-buildx build \ --cache-from type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/app:cache \ --cache-to type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/app:cache,mode=max \ --tag ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/app:latest \ --tag ${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}/app:${{ gitea.sha }} \ --file Dockerfile \ --push \ . # ── DEPLOY ──────────────────────────────────────────────────────────────────── deploy: runs-on: docker1 needs: [build-app] if: always() && !failure() && !cancelled() defaults: run: shell: sh steps: - name: Debug environment run: | hostname cat /etc/hostname docker --version docker compose version || echo "compose plugin missing here" ls /usr/libexec/docker/cli-plugins/ 2>/dev/null || echo "no plugins dir" mount | grep docker || true - 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 printf 'REGISTRY=%s\nIMAGE_PREFIX=%s\n' \ '${{ env.REGISTRY }}' \ '${{ needs.build-app.outputs.image_prefix }}' > .env /data/tools/docker-compose pull /data/tools/docker-compose up -d --remove-orphans docker image prune -f