name: Deploy on: push: branches: [main] workflow_dispatch: jobs: deploy: runs-on: self-hosted steps: - name: Checkout manual (runner sin node) run: | set -euo pipefail git config --global http.extraheader "Authorization: token ${{ secrets.GITHUB_TOKEN }}" rm -rf /tmp/deploy-${{ github.event.repository.name }} git clone --depth 1 -b main "https://git.exiademos.duckdns.org/${{ github.repository }}.git" /tmp/deploy-${{ github.event.repository.name }} cd /tmp/deploy-${{ github.event.repository.name }} rm -f NUL - name: Build y deploy env: DOMAIN: demo.exiademos.duckdns.org run: | set -euo pipefail REPO_NAME="$(echo "${GITHUB_REPOSITORY##*/}" | tr '[:upper:]' '[:lower:]')" cd /tmp/deploy-${{ github.event.repository.name }} docker build -t "$REPO_NAME:latest" . docker stop "$REPO_NAME-app" 2>/dev/null || true docker rm "$REPO_NAME-app" 2>/dev/null || true docker run -d --name "$REPO_NAME-app" --network proxy --restart unless-stopped \ --label "caddy_0=$DOMAIN" \ --label "caddy_0.reverse_proxy={{upstreams 80}}" \ "$REPO_NAME:latest" for i in $(seq 1 60); do if docker logs "$REPO_NAME-app" 2>&1 | grep -q "ready for start up"; then echo "App desplegada: https://$DOMAIN" exit 0 fi docker inspect -f '{{.State.Running}}' "$REPO_NAME-app" 2>/dev/null | grep -q true \ || { docker logs --tail 60 "$REPO_NAME-app"; exit 1; } sleep 3 done docker logs --tail 60 "$REPO_NAME-app" exit 1