name: Picsur Deploy on: pull_request: paths: - 'services/dockerino/picsur/**' push: branches: - main paths: - 'services/dockerino/picsur/**' env: DOCKERINO_HOST: 10.0.0.50 DOCKERINO_USER: root PICSUR_PATH: /root/dockerino/picsur jobs: # ============================================ # JOB 1: VALIDATE (roda em todo PR e Push) # ============================================ validate: name: Validate Picsur Compose runs-on: gitea-runner-hestia steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Docker Buildx uses: docker/setup-buildx-action@v3 - name: Validate docker-compose syntax run: | cd services/dockerino/picsur docker compose config --quiet echo "โœ… docker-compose.yml syntax is valid" - name: Pull image (dry-run) run: | cd services/dockerino/picsur docker compose pull --quiet echo "โœ… Docker image pull successful" - name: Show compose file run: | echo "๐Ÿ“„ docker-compose.yml content:" cat services/dockerino/picsur/docker-compose.yml # ============================================ # JOB 2: DEPLOY (sรณ roda no push to main) # ============================================ deploy: name: Deploy Picsur to Dockerino needs: validate runs-on: gitea-runner-hestia if: github.event_name == 'push' && github.ref == 'refs/heads/main' environment: production steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup SSH Key uses: webfactory/ssh-agent@v0.8.0 with: ssh-private-key: ${{ secrets.DOCKERINO_SSH_KEY }} - name: Add Dockerino to known hosts run: | ssh-keyscan -H ${{ env.DOCKERINO_HOST }} >> ~/.ssh/known_hosts - name: Create Picsur directory run: | ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ "mkdir -p ${{ env.PICSUR_PATH }}/data" - name: Sync docker-compose.yml to Dockerino run: | rsync -avz --progress \ services/dockerino/picsur/ \ ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }}:${{ env.PICSUR_PATH }}/ - name: Pull latest image on Dockerino run: | ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ "cd ${{ env.PICSUR_PATH }} && docker compose pull" - name: Restart Picsur service run: | ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ "cd ${{ env.PICSUR_PATH }} && docker compose up -d" - name: Verify container is running run: | ssh ${{ env.DOCKERINO_USER }}@${{ env.DOCKERINO_HOST }} \ "docker ps --filter name=picsur --format '{{.Names}}: {{.Status}}'" - name: Report Success run: | echo "โœ… Picsur deployed successfully!" echo "๐ŸŒ Access: https://picsur.hackerfortress.cc"