name: Deploy Stack (Dev) on: push: branches: - dev paths: - 'backend/**' - 'backoffice/**' - 'frontend/**' env: REGISTRY: in.gohorsejobs.com NAMESPACE: gohorsejobsdev jobs: # Job: Deploy no Servidor (Pull das imagens do Forgejo) deploy-dev: runs-on: docker steps: - name: Checkout code uses: https://github.com/actions/checkout@v4 with: fetch-depth: 2 - name: Check changed files id: check run: | if git diff --name-only HEAD~1 HEAD | grep -q "^backend/"; then echo "backend=true" >> $GITHUB_OUTPUT else echo "backend=false" >> $GITHUB_OUTPUT fi if git diff --name-only HEAD~1 HEAD | grep -q "^frontend/"; then echo "frontend=true" >> $GITHUB_OUTPUT else echo "frontend=false" >> $GITHUB_OUTPUT fi if git diff --name-only HEAD~1 HEAD | grep -q "^backoffice/"; then echo "backoffice=true" >> $GITHUB_OUTPUT else echo "backoffice=false" >> $GITHUB_OUTPUT fi if git diff --name-only HEAD~1 HEAD | grep -q "^seeder-api/"; then echo "seeder=true" >> $GITHUB_OUTPUT else echo "seeder=false" >> $GITHUB_OUTPUT fi - name: Deploy via SSH uses: https://github.com/appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} key: ${{ secrets.SSH_KEY }} port: ${{ secrets.PORT || 22 }} script: | # Login no Forgejo Registry (usando segredos do Drone/Forgejo) echo "${{ secrets.HARBOR_PASSWORD }}" | podman login ${{ env.REGISTRY }} -u ${{ secrets.HARBOR_USERNAME }} --password-stdin # --- DEPLOY DO BACKEND --- if [ "${{ steps.check.outputs.backend }}" == "true" ]; then echo "Pulling e reiniciando Backend..." # Nome da imagem no Drone: gohorsejobs-backend podman pull ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gohorsejobs-backend:latest podman tag ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gohorsejobs-backend:latest localhost/gohorsejobs-backend-dev:latest sudo systemctl restart gohorsejobs-backend-dev fi # --- DEPLOY DO FRONTEND --- if [ "${{ steps.check.outputs.frontend }}" == "true" ]; then echo "Pulling e reiniciando Frontend..." # Assumindo gohorsejobs-frontend no mesmo namespace podman pull ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gohorsejobs-frontend:latest podman tag ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gohorsejobs-frontend:latest localhost/gohorsejobs-frontend-dev:latest sudo systemctl restart gohorsejobs-frontend-dev fi # --- DEPLOY DO BACKOFFICE --- if [ "${{ steps.check.outputs.backoffice }}" == "true" ]; then echo "Pulling e reiniciando Backoffice..." # Nome no Drone: backoffice podman pull ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/backoffice:latest podman tag ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/backoffice:latest localhost/gohorsejobs-backoffice-dev:latest sudo systemctl restart gohorsejobs-backoffice-dev fi # --- DEPLOY DO SEEDER --- if [ "${{ steps.check.outputs.seeder }}" == "true" ]; then echo "Pulling e reiniciando Seeder..." # Assumindo gohorsejobs-seeder podman pull ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gohorsejobs-seeder:latest podman tag ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gohorsejobs-seeder:latest localhost/gohorsejobs-seeder-dev:latest sudo systemctl restart gohorsejobs-seeder-dev fi # --- LIMPEZA --- echo "Limpando imagens antigas..." podman image prune -f || true