From 1cc9320cda83b6dfc3bfb8c1b5fb181f8ea258a6 Mon Sep 17 00:00:00 2001 From: Ming Di Leom <2809763-curben@users.noreply.gitlab.com> Date: Sat, 19 Mar 2022 05:39:05 +0000 Subject: [PATCH] build: check last pipeline status - using pipeline badge - https://docs.gitlab.com/ee/ci/pipelines/settings.html#pipeline-status-badge --- src/build.js | 12 ++++++++++++ src/gitlab_status.sh | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/build.js b/src/build.js index 6072ab3..c4ecb95 100644 --- a/src/build.js +++ b/src/build.js @@ -3,6 +3,7 @@ // for deployment outside of GitLab CI, e.g. Cloudflare Pages and Netlify const { stream: gotStream } = require('got') +const got = require('got') const unzip = require('extract-zip') const { join } = require('path') const { mkdir } = require('fs/promises') @@ -14,8 +15,18 @@ const tmpPath = join(rootPath, 'tmp') const publicPath = join(rootPath, 'public') const zipPath = join(tmpPath, 'artifacts.zip') const artifactsUrl = 'https://gitlab.com/curben/tracking-filter/-/jobs/artifacts/main/download?job=pages' +const pipelineUrl = 'https://gitlab.com/curben/tracking-filter/badges/main/pipeline.svg' const ghMirror = 'https://nightly.link/curbengh/tracking-filter/workflows/pages/main/public.zip' +const pipelineStatus = async (url) => { + try { + const svg = await got(url).text() + if (!svg.includes('passed')) throw new Error('last gitlab pipeline failed') + } catch ({ message }) { + throw new Error(message) + } +} + const f = async () => { let isMirror = false @@ -27,6 +38,7 @@ const f = async () => { gotStream(artifactsUrl), createWriteStream(zipPath) ) + await pipelineStatus(pipelineUrl) } catch ({ message }) { console.error(JSON.stringify({ error: message, diff --git a/src/gitlab_status.sh b/src/gitlab_status.sh index e828604..c777ec0 100644 --- a/src/gitlab_status.sh +++ b/src/gitlab_status.sh @@ -1,9 +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") +ARTIFACT_STATUS=$(curl -sSIL "https://gitlab.com/curben/tracking-filter/-/jobs/artifacts/main/download?job=pages" | grep -F "HTTP/2 200") +PIPELINE_STATUS=$(curl -sSL "https://gitlab.com/curben/tracking-filter/badges/main/pipeline.svg" | grep -F "failed") GITLAB_STATUS="up" -if [ -z "$CURL_STATUS" ]; then +if [ -z "$ARTIFACT_STATUS" ] || [ -n "$PIPELINE_STATUS" ]; then GITLAB_STATUS="down" fi