diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 09de57e3..5e4c8f21 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -25,6 +25,7 @@ jobs: traefik_host: ${{ steps.determine.outputs.traefik_host }} next_public_base_url: ${{ steps.determine.outputs.next_public_base_url }} directus_url: ${{ steps.determine.outputs.directus_url }} + directus_host: ${{ steps.determine.outputs.directus_host }} is_prod: ${{ steps.determine.outputs.is_prod }} gotify_title: ${{ steps.determine.outputs.gotify_title }} gotify_priority: ${{ steps.determine.outputs.gotify_priority }} @@ -48,9 +49,10 @@ jobs: TARGET="testing" IMAGE_TAG="main-${SHORT_SHA}" ENV_FILE=".env.testing" - TRAEFIK_HOST="\`testing.klz-cables.com\`" + TRAEFIK_HOST='testing.klz-cables.com' NEXT_PUBLIC_BASE_URL="https://testing.klz-cables.com" DIRECTUS_URL="https://cms-testing.klz-cables.com" + DIRECTUS_HOST='cms-testing.klz-cables.com' IS_PROD="false" GOTIFY_TITLE="๐Ÿงช Testing-Deploy" GOTIFY_PRIORITY=4 @@ -59,9 +61,10 @@ jobs: TARGET="production" IMAGE_TAG="$TAG" ENV_FILE=".env.prod" - TRAEFIK_HOST="\`klz-cables.com\`, \`www.klz-cables.com\`" + TRAEFIK_HOST="klz-cables.com', 'www.klz-cables.com" NEXT_PUBLIC_BASE_URL="https://klz-cables.com" DIRECTUS_URL="https://cms.klz-cables.com" + DIRECTUS_HOST='cms.klz-cables.com' IS_PROD="true" GOTIFY_TITLE="๐Ÿš€ Production-Release" GOTIFY_PRIORITY=6 @@ -69,9 +72,10 @@ jobs: TARGET="staging" IMAGE_TAG="$TAG" ENV_FILE=".env.staging" - TRAEFIK_HOST="\`staging.klz-cables.com\`" + TRAEFIK_HOST='staging.klz-cables.com' NEXT_PUBLIC_BASE_URL="https://staging.klz-cables.com" DIRECTUS_URL="https://cms-staging.klz-cables.com" + DIRECTUS_HOST='cms-staging.klz-cables.com' IS_PROD="false" GOTIFY_TITLE="๐Ÿงช Staging-Deploy (Pre-Release)" GOTIFY_PRIORITY=5 @@ -90,6 +94,7 @@ jobs: echo "traefik_host=$TRAEFIK_HOST" >> $GITHUB_OUTPUT echo "next_public_base_url=$NEXT_PUBLIC_BASE_URL" >> $GITHUB_OUTPUT echo "directus_url=$DIRECTUS_URL" >> $GITHUB_OUTPUT + echo "directus_host=$DIRECTUS_HOST" >> $GITHUB_OUTPUT echo "is_prod=$IS_PROD" >> $GITHUB_OUTPUT echo "gotify_title=$GOTIFY_TITLE" >> $GITHUB_OUTPUT echo "gotify_priority=$GOTIFY_PRIORITY" >> $GITHUB_OUTPUT @@ -114,6 +119,14 @@ jobs: node-version: 20 cache: 'npm' + - name: ๐Ÿ“ฆ Restore npm cache + uses: actions/cache@v4 + with: + path: ~/.npm + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node- + - name: Install dependencies run: npm ci @@ -158,6 +171,8 @@ jobs: --build-arg NEXT_PUBLIC_UMAMI_SCRIPT_URL="$NEXT_PUBLIC_UMAMI_SCRIPT_URL" \ --build-arg DIRECTUS_URL="$DIRECTUS_URL" \ -t registry.infra.mintel.me/mintel/klz-cables.com:$IMAGE_TAG \ + --cache-from type=registry,ref=registry.infra.mintel.me/mintel/klz-cables.com:buildcache \ + --cache-to type=registry,ref=registry.infra.mintel.me/mintel/klz-cables.com:buildcache,mode=max \ --push . # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ @@ -183,6 +198,7 @@ jobs: MAIL_FROM: ${{ secrets.MAIL_FROM }} MAIL_RECIPIENTS: ${{ secrets.MAIL_RECIPIENTS }} DIRECTUS_URL: ${{ needs.prepare.outputs.directus_url }} + DIRECTUS_HOST: ${{ needs.prepare.outputs.directus_host }} DIRECTUS_KEY: ${{ secrets.DIRECTUS_KEY }} DIRECTUS_SECRET: ${{ secrets.DIRECTUS_SECRET }} DIRECTUS_ADMIN_EMAIL: ${{ secrets.DIRECTUS_ADMIN_EMAIL }} @@ -220,6 +236,7 @@ jobs: # Directus DIRECTUS_URL=$DIRECTUS_URL + DIRECTUS_HOST=$DIRECTUS_HOST DIRECTUS_KEY=$DIRECTUS_KEY DIRECTUS_SECRET=$DIRECTUS_SECRET DIRECTUS_ADMIN_EMAIL=$DIRECTUS_ADMIN_EMAIL @@ -237,7 +254,7 @@ jobs: scp -o StrictHostKeyChecking=accept-new /tmp/klz-cables.env root@alpha.mintel.me:/home/deploy/sites/klz-cables.com/$ENV_FILE scp -o StrictHostKeyChecking=accept-new docker-compose.yml root@alpha.mintel.me:/home/deploy/sites/klz-cables.com/docker-compose.yml - ssh -o StrictHostKeyChecking=accept-new root@alpha.mintel.me IMAGE_TAG="$IMAGE_TAG" ENV_FILE="$ENV_FILE" TRAEFIK_HOST="$TRAEFIK_HOST" bash << 'EOF' + ssh -o StrictHostKeyChecking=accept-new root@alpha.mintel.me IMAGE_TAG="$IMAGE_TAG" ENV_FILE="$ENV_FILE" bash << 'EOF' set -e cd /home/deploy/sites/klz-cables.com chmod 600 "$ENV_FILE" diff --git a/docker-compose.yml b/docker-compose.yml index a6db4971..9e55f704 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,11 +9,11 @@ services: labels: - "traefik.enable=true" # HTTP โ‡’ HTTPS redirect - - "traefik.http.routers.klz-cables-web.rule=Host(${TRAEFIK_HOST}) && !PathPrefix(`/.well-known/acme-challenge/`)" + - "traefik.http.routers.klz-cables-web.rule=Host('${TRAEFIK_HOST}') && !PathPrefix(`/.well-known/acme-challenge/`)" - "traefik.http.routers.klz-cables-web.entrypoints=web" - "traefik.http.routers.klz-cables-web.middlewares=redirect-https" # HTTPS router - - "traefik.http.routers.klz-cables.rule=Host(${TRAEFIK_HOST})" + - "traefik.http.routers.klz-cables.rule=Host('${TRAEFIK_HOST}')" - "traefik.http.routers.klz-cables.entrypoints=websecure" - "traefik.http.routers.klz-cables.tls.certresolver=le" - "traefik.http.routers.klz-cables.tls=true" @@ -51,7 +51,7 @@ services: - ./directus/extensions:/directus/extensions labels: - "traefik.enable=true" - - "traefik.http.routers.klz-directus.rule=Host(`cms.klz-cables.com`) || Host(`cms-staging.klz-cables.com`)" + - "traefik.http.routers.klz-directus.rule=Host('${DIRECTUS_HOST}')" - "traefik.http.routers.klz-directus.entrypoints=websecure" - "traefik.http.routers.klz-directus.tls.certresolver=le" - "traefik.http.routers.klz-directus.tls=true"