build: check last pipeline status

- using pipeline badge
- https://docs.gitlab.com/ee/ci/pipelines/settings.html#pipeline-status-badge
This commit is contained in:
Ming Di Leom 2022-03-19 05:39:05 +00:00
parent 3e9e607604
commit 1cc9320cda
No known key found for this signature in database
GPG Key ID: 32D3E28E96A695E8
2 changed files with 15 additions and 2 deletions

View File

@ -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,

View File

@ -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