name: Deploy to production on: workflow_run: workflows: - Docker Image CI types: - completed jobs: check-and-deploy: if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest environment: production steps: - name: Checkout uses: actions/checkout@v4 with: ref: ${{ github.event.workflow_run.head_sha }} fetch-depth: 0 - name: Check if tag is from prod branch id: check run: | TAG_REF="${{ github.event.workflow_run.head_branch }}" echo "Tag/Branch: $TAG_REF" # Récupère les branches contenant ce commit BRANCHES=$(git branch -r --contains ${{ github.event.workflow_run.head_sha }}) echo "Branches containing this commit: $BRANCHES" if echo "$BRANCHES" | grep -q "origin/prod"; then echo "is_prod=true" >> $GITHUB_OUTPUT echo "✅ Tag is from prod branch - will deploy" else echo "is_prod=false" >> $GITHUB_OUTPUT echo "❌ Tag is not from prod branch - skipping deployment" fi - name: Deploy to production server if: steps.check.outputs.is_prod == 'true' uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.PROD_SSH_HOST }} username: ${{ secrets.PROD_SSH_USER }} key: ${{ secrets.PROD_SSH_KEY }} script: | set -e cd /root/AperiSolve # update code git pull # create .env cat < .env MAX_CONTENT_LENGTH=${{ vars.MAX_CONTENT_LENGTH }} MAX_PENDING_TIME=${{ vars.MAX_PENDING_TIME }} MAX_STORE_TIME=${{ vars.MAX_STORE_TIME }} CLEAR_AT_RESTART=${{ vars.CLEAR_AT_RESTART }} SKIP_IHDR_FILL=${{ vars.SKIP_IHDR_FILL }} FLASK_DEBUG=${{ vars.FLASK_DEBUG }} FLASK_ENV=${{ vars.FLASK_ENV }} RQ_DASHBOARD_REDIS_URL=${{ secrets.REDIS_URL }} POSTGRES_USER=${{ secrets.POSTGRES_USER }} POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} POSTGRES_DB=${{ secrets.POSTGRES_DB }} DB_URI=${{ secrets.DATABASE_URL }} SENTRY_DSN=${{ secrets.SENTRY_DSN }} SENTRY_TRACES_SAMPLE_RATE=${{ secrets.SENTRY_TRACES_SAMPLE_RATE }} SENTRY_PROFILES_SAMPLE_RATE=${{ secrets.SENTRY_PROFILES_SAMPLE_RATE }} SENTRY_RELEASE=${{ secrets.SENTRY_RELEASE }} SENTRY_ENVIRONMENT=${{ secrets.SENTRY_ENVIRONMENT }} EOF # Pull images and deploy docker compose pull docker compose down docker compose up -d docker image prune -f