diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 83e51ba..5068906 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,48 +2,49 @@ name: Docker Image CI on: push: + branches: + - main tags: - '*' jobs: docker-releases: runs-on: ubuntu-latest + env: RELEASE_VERSION: ${{ github.ref_name }} steps: - - name: Get release version - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + - name: Checkout + uses: actions/checkout@v4 - - name: Checkout - uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry + if: startsWith(github.ref, 'refs/tags/') + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Build and push for MAIN tags (X.X.X) - - name: Build and push Docker images - uses: docker/build-push-action@v6.9.0 - with: - context: ./ - push: true - tags: | - ghcr.io/zeecka/aperisolve:${{ env.RELEASE_VERSION }} - ghcr.io/zeecka/aperisolve:latest + - name: Build (and push on tag) + uses: docker/build-push-action@v6.9.0 + with: + context: . + push: ${{ startsWith(github.ref, 'refs/tags/') }} + tags: | + ghcr.io/zeecka/aperisolve:${{ env.RELEASE_VERSION }} + ghcr.io/zeecka/aperisolve:latest deploy: runs-on: ubuntu-latest needs: docker-releases + if: startsWith(github.ref, 'refs/tags/') environment: prod steps: @@ -52,7 +53,6 @@ jobs: with: fetch-depth: 0 - # wait for 120 seconds - name: Wait for image propagation run: | echo "Waiting 120 seconds for image to propagate in registry..." @@ -69,41 +69,32 @@ jobs: set -e cd /root/AperiSolve - # update code git pull cat .env.example | grep -v '^PROJECT_VERSION=' > .env - # create .env cat <> .env WEB_APP_PORT=${{ vars.WEB_APP_PORT }} - 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 }} REMOVAL_MIN_AGE_SECONDS=${{ vars.REMOVAL_MIN_AGE_SECONDS }} - GOOGLE_ADS_TXT=${{ vars.GOOGLE_ADS_TXT }} CUSTOM_EXTERNAL_SCRIPT=${{ vars.CUSTOM_EXTERNAL_SCRIPT }} - FLASK_DEBUG=${{ vars.FLASK_DEBUG }} - RQ_DASHBOARD_REDIS_URL=${{ vars.RQ_DASHBOARD_REDIS_URL }} - POSTGRES_DB=${{ secrets.POSTGRES_DB }} POSTGRES_USER=${{ secrets.POSTGRES_USER }} POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} DB_URI=${{ secrets.DATABASE_URL }} - SENTRY_DSN=${{ secrets.SENTRY_DSN }} SENTRY_TRACES_SAMPLE_RATE=${{ vars.SENTRY_TRACES_SAMPLE_RATE }} SENTRY_PROFILES_SAMPLE_RATE=${{ vars.SENTRY_PROFILES_SAMPLE_RATE }} - SENTRY_RELEASE=${{ vars.SENTRY_RELEASE }} + SENTRY_RELEASE=${{ github.ref_name }} SENTRY_ENVIRONMENT=${{ vars.SENTRY_ENVIRONMENT }} EOF - # Pull images and deploy docker compose pull docker compose down -v docker compose up -d