Skip to content

Daily macOS Monitor

Daily macOS Monitor #1

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Daily macOS Monitor
on:
schedule:
- cron: "17 3 * * *"
workflow_dispatch:
permissions:
contents: read
jobs:
monitor:
runs-on: macos-latest
env:
TAP_NAME: DebaA17/tap
FORMULA_NAME: cvecli
CVE_ID: CVE-2025-55182
steps:
- name: Initialize state
shell: bash
run: |
set -euo pipefail
echo "CVECLI_VERSION=unknown" >> "$GITHUB_ENV"
echo "TEST_STATUS=failed" >> "$GITHUB_ENV"
echo "CVE_OUTPUT_RETURNED=no" >> "$GITHUB_ENV"
echo "CVE_COMMAND=cvecli --id ${CVE_ID}" >> "$GITHUB_ENV"
- name: Install or update cvecli (Homebrew)
shell: bash
run: |
set -euo pipefail
brew --version
brew tap "${TAP_NAME}"
if brew list --formula "${FORMULA_NAME}" >/dev/null 2>&1; then
brew upgrade "${FORMULA_NAME}" || true
else
brew install "${FORMULA_NAME}"
fi
command -v cvecli
- name: Get version
shell: bash
run: |
set -euo pipefail
version="$(cvecli --version 2>/dev/null || true)"
version="$(echo "$version" | head -n 1 | tr -d '\r')"
if [ -z "$version" ]; then
version="unknown"
fi
echo "CVECLI_VERSION=${version}" >> "$GITHUB_ENV"
- name: Run CVE functional test
shell: bash
run: |
set -euo pipefail
set +e
output="$(cvecli --id "${CVE_ID}" 2>&1)"
rc=$?
set -e
printf '%s\n' "$output" > cve_output.txt
stripped="$(printf '%s' "$output" | tr -d '\r' | tr -d '[:space:]')"
lowered="$(printf '%s' "$output" | tr -d '\r' | tr '[:upper:]' '[:lower:]')"
if [ $rc -ne 0 ]; then
echo "TEST_STATUS=failed" >> "$GITHUB_ENV"
echo "CVE_OUTPUT_RETURNED=no" >> "$GITHUB_ENV"
elif [ -z "$stripped" ]; then
echo "TEST_STATUS=failed" >> "$GITHUB_ENV"
echo "CVE_OUTPUT_RETURNED=no" >> "$GITHUB_ENV"
elif printf '%s' "$lowered" | grep -q "^[[:space:]]*error:\|failed to fetch cve\|network error\|invalid json"; then
echo "TEST_STATUS=failed" >> "$GITHUB_ENV"
echo "CVE_OUTPUT_RETURNED=yes" >> "$GITHUB_ENV"
else
echo "TEST_STATUS=success" >> "$GITHUB_ENV"
echo "CVE_OUTPUT_RETURNED=yes" >> "$GITHUB_ENV"
fi
- name: Build Telegram message
if: always()
shell: bash
run: |
set -euo pipefail
if [ "${TEST_STATUS}" = "success" ]; then
STATUS="✅ Healthy"
else
STATUS="❌ Failed"
fi
MSG="$(printf '%s\n' \
"Monitor: macOS (Homebrew)" \
"Status: ${STATUS}" \
"Tap: ${TAP_NAME}" \
"Formula: ${FORMULA_NAME}" \
"Version: ${CVECLI_VERSION}" \
"CVE command: ${CVE_COMMAND}" \
"Output returned: ${CVE_OUTPUT_RETURNED}" \
"Repo: ${GITHUB_REPOSITORY}" \
"Run: #${GITHUB_RUN_NUMBER}" \
"SHA: ${GITHUB_SHA}" \
"Branch: ${GITHUB_REF_NAME}")"
echo "MESSAGE<<EOF" >> "$GITHUB_ENV"
echo "$MSG" >> "$GITHUB_ENV"
echo "EOF" >> "$GITHUB_ENV"
- name: Send Telegram notification
if: always()
shell: bash
env:
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
run: |
set -euo pipefail
curl -fsS --retry 3 --retry-all-errors \
-X POST "https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage" \
-d "chat_id=${TELEGRAM_CHAT_ID}" \
--data-urlencode "text=${MESSAGE}"
- name: Fail workflow if unhealthy
if: always()
shell: bash
run: |
set -euo pipefail
if [ "${TEST_STATUS}" != "success" ]; then
exit 1
fi