diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 39546e9..44350a3 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -16,7 +16,7 @@ jobs: apk update apk add brotli curl git grep - name: Build - run: sh src/script.sh + run: sh ./src/script.sh - name: Compress run: | find public -type f -regex '.*\.\(txt\|conf\|tpl\|rules\)$' -exec gzip -f -k -9 {} \; @@ -39,3 +39,23 @@ jobs: name: tmp path: ./tmp retention-days: 30 + - name: Check GitLab Status + env: + GITHUB_ENV: ${{ env.GITHUB_ENV }} + run: sh ./src/gitlab_status.sh + - name: Cloudflare Pages + env: + CLOUDFLARE_BUILD_HOOK: ${{ secrets.CLOUDFLARE_BUILD_HOOK }} + if: ${{ env.CLOUDFLARE_BUILD_HOOK != 0 && env.GITLAB_STATUS == 'down' }} + run: curl -X POST "https://api.cloudflare.com/client/v4/pages/webhooks/deploy_hooks/${{ env.CLOUDFLARE_BUILD_HOOK }}" + - name: Netlify + env: + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + if: ${{ env.NETLIFY_SITE_ID != 0 && env.GITLAB_STATUS == 'down' }} + run: | + npm install + npm install netlify-cli -g + netlify --telemetry-disable + npm run build + netlify deploy --dir=public --prod diff --git a/src/gitlab_status.sh b/src/gitlab_status.sh new file mode 100644 index 0000000..e828604 --- /dev/null +++ b/src/gitlab_status.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +CURL_STATUS=$(curl -sSIL "https://gitlab.com/curben/tracking-filter/-/jobs/artifacts/main/download?job=pages" | grep -F "HTTP/2 200") +GITLAB_STATUS="up" + +if [ -z "$CURL_STATUS" ]; then + GITLAB_STATUS="down" +fi + +echo "GITLAB_STATUS=$GITLAB_STATUS" >> "$GITHUB_ENV"