mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-11 03:41:06 +00:00
CI: Release - monitor gitlab pipeline (#5460)
* Initial commit of gitlab pipeline monitoring * increase max job time * Improve debug output * s/PR/issue/ Co-authored-by: Benjamin Kampmann <ben@parity.io>
This commit is contained in:
+9
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: Release failure for {{ ref }}
|
||||
---
|
||||
|
||||
Pipeline for release {{ ref }} failed. Please investigate.
|
||||
|
||||
If the pipeline has failed before pushing to crates.io, delete the release tag
|
||||
and fix the release as necessary, retagging after complete. If the pipeline has
|
||||
failed after pushing to crates.io, create a new tag incrementing the version.
|
||||
@@ -0,0 +1,30 @@
|
||||
# A github action to track the status of the gitlab pipeline for tagged
|
||||
# releases, and cancel the release/create a new issue if it fails
|
||||
|
||||
name: Monitor gitlab pipeline status
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- v*
|
||||
- ci-release-*
|
||||
|
||||
jobs:
|
||||
monitor:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Monitor pipeline
|
||||
run: env; ./.maintain/github/check_gitlab_pipeline.sh
|
||||
id: monitor_pipeline
|
||||
env:
|
||||
TAGGER: ${{ github.event.pusher.name }}
|
||||
- name: Create Issue
|
||||
if: failure()
|
||||
uses: JasonEtco/create-an-issue@v2
|
||||
with:
|
||||
filename: .github/ISSUE_TEMPLATE/release.md
|
||||
assignees: ${{ github.event.pusher.name }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
SUBSTRATE_API_BASEURL="https://gitlab.parity.io/api/v4/projects/145"
|
||||
|
||||
TAG_NAME=$(echo "$GITHUB_REF" | sed -E 's_refs/tags/(.*)_\1_')
|
||||
PIPELINE_ID=$(curl -s $SUBSTRATE_API_BASEURL/pipelines | jq -r "map(select(.ref==\"$TAG_NAME\")) | .[0] | .id")
|
||||
if [ "$PIPELINE_ID" == "null" ]; then
|
||||
echo "[!] Pipeline for $TAG_NAME not found. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[+] Pipeline path: https://gitlab.parity.io/parity/substrate/pipelines/$PIPELINE_ID"
|
||||
|
||||
# 130 minute job max
|
||||
for (( c=0; c < 130; c++ )); do
|
||||
out=$(curl -s "$SUBSTRATE_API_BASEURL/pipelines/$PIPELINE_ID" | jq -r .status)
|
||||
case $out in
|
||||
"success")
|
||||
echo "[+] Pipeline $PIPELINE_ID for $TAG_NAME succeeded!"
|
||||
exit 0
|
||||
;;
|
||||
"failed")
|
||||
echo "[!] Pipeline $PIPELINE_ID for $TAG_NAME failed. Cannot proceed. Check job output on gitlab!"
|
||||
exit 1
|
||||
;;
|
||||
"cancelled")
|
||||
echo "[!] Pipeline $PIPELINE_ID for $TAG_NAME was cancelled. Cannot proceed!"
|
||||
exit 1
|
||||
;;
|
||||
"running")
|
||||
echo "[-] Pipeline $PIPELINE_ID for $TAG_NAME still in progress..."
|
||||
esac
|
||||
sleep 60
|
||||
done
|
||||
# If we reach here, we timed out after 30 minutes
|
||||
echo "[!] Pipeline $PIPELINE_ID for $TAG_NAME timed out! Cannot proceed"
|
||||
echo "::set-output name=pipeline_status::timedout"
|
||||
exit 1
|
||||
Reference in New Issue
Block a user