Update workflows-notify.yaml #6
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}" | |