Skip to content

Update workflows-notify.yaml #6

Update workflows-notify.yaml

Update workflows-notify.yaml #6

name: Workflows notify
on:
schedule:
- cron: "30 6 * * *"
push:
branches:
- feature/workflows-notify
jobs:
check-workflows:
runs-on: ubuntu-latest
steps:
- name: Notify failed runs
env:
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
TELEGRAM_CHAT_ID: 226855156
WORKFLOWS: |
DocSpace-buildtools|build_packages.yml|Build packages
DocSpace-buildtools|ci-oci-docker-install.yml|Install OneClickInstall Docker
DocSpace-buildtools|ci-oci-install.yml|Install OneClickInstall DocSpace
DocSpace-buildtools|oci-release.yml|Upload OneClickInstall scripts on S3
DocSpace-buildtools|offline-release.yml|Upload offline self-extracting archive
OneClickInstall-Workspace|ci.yml|Installation test OneClickInstall-Workspace
OneClickInstall-Workspace|ci-update.yml|OneClickTests-Update
OneClickInstall-Workspace|s3-release.yml|Upload scripts on S3
OneClickInstall-Docs|ci-docs-test.yml|OneClickDocs-Install
OneClickInstall-Docs|ci-update.yml|OneClickDocs-Update
OneClickInstall-Docs|scripts-upload-s3.yml|Upload on S3
run: |
declare -A REPO_STATUS
declare -A REPO_LIST
while IFS='|' read -r REPO WORKFLOW WORKFLOW_NAME; do
[[ -z "$REPO" || -z "$WORKFLOW" || -z "$WORKFLOW_NAME" ]] && continue
FULL_REPO="ONLYOFFICE/$REPO"
REPO_LIST["$REPO"]=1
WORKFLOW_URL="https://github.com/$FULL_REPO/actions/workflows/$WORKFLOW"
RUNS_API_URL="https://api.github.com/repos/$FULL_REPO/actions/workflows/$WORKFLOW/runs?per_page=100"
RUNS_RESPONSE="$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "$RUNS_API_URL")"
[[ ! $(echo "$RUNS_RESPONSE" | jq -e .workflow_runs) ]] && continue
RUNS=$(echo "$RUNS_RESPONSE" | jq --arg start "$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)" '[.workflow_runs[]
| select(.created_at >= $start)
| select(.head_branch | test("^(master|release/.+|hotfix/.+|develop)$"))]')
TOTAL_COUNT=$(echo "$RUNS" | jq 'length')
FAIL_COUNT=$(echo "$RUNS" | jq '[.[] | select((.conclusion? // "failure") | test("failure|failed|error|startup_failure"))] | length')
STATUS=$([[ $TOTAL_COUNT -eq 0 ]] && echo "\u26AA" || ([[ $FAIL_COUNT -gt 0 ]] && echo "\uD83D\uDD34" || echo "\uD83D\uDFE2"))
REPO_STATUS["$REPO"]+="$STATUS [$WORKFLOW_NAME]($WORKFLOW_URL)\n"
done <<< "$WORKFLOWS"
for REPO in "${!REPO_LIST[@]}"; do
[[ -n "${REPO_STATUS[$REPO]}" ]] && RESULT+="*$REPO*\n${REPO_STATUS[$REPO]}\n"
done
[[ -n "$RESULT" ]] && curl -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-H "Content-Type: application/json" \
-d "{\"chat_id\": \"${TELEGRAM_CHAT_ID}\", \"text\": \"$RESULT\", \"parse_mode\": \"Markdown\", \"disable_web_page_preview\": true}"
# [[ -n "$RESULT" ]] && curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getUpdates" | jq -r '.result[].message.chat.id' | sort -u | \
# xargs -I {} curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" -H "Content-Type: application/json" \
# -d "{\"chat_id\": \"{}\", \"text\": \"$RESULT\", \"parse_mode\": \"Markdown\", \"disable_web_page_preview\": true}"