Un veilleur HORS de Prometheus — le silence de trois jours devient du bruit en ≤ 8 min #39
@@ -170,6 +170,52 @@ jobs:
|
|||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# ⚠⚠ UNE GATE QUI N'EST CÂBLÉE NULLE PART N'EXISTE PAS (tools#36) — et une
|
||||||
|
# gate placée APRÈS une étape qui échoue toujours n'existe pas non plus :
|
||||||
|
# elle sort `Skipped`, ni rouge ni absente, rien ne dépasse. Le banc du
|
||||||
|
# veilleur passe donc AVANT le téléchargement des dépendances, qui a besoin
|
||||||
|
# du réseau et du registre Helm interne. Il n'a besoin d'aucun des deux :
|
||||||
|
# stdlib Python seule, plus `yq`/`jq` déjà présents.
|
||||||
|
- name: Banc du veilleur (chart prometheus)
|
||||||
|
if: >-
|
||||||
|
${{
|
||||||
|
matrix.chart == 'prometheus'
|
||||||
|
&& (
|
||||||
|
contains(fromJSON('["","pull_request"]'), github.event_name)
|
||||||
|
|| github.ref != 'refs/heads/main'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
python3 -m unittest discover -s prometheus/veilleur -v
|
||||||
|
|
||||||
|
# Le témoin toujours allumé ne doit JAMAIS partir sur Telegram : sans
|
||||||
|
# sa route vers le récepteur vide il sonnerait toutes les 3 h, et un
|
||||||
|
# témoin qui sonne est un témoin qu'on coupe.
|
||||||
|
yq -o=json eval '.prometheus.alertmanager.config' prometheus/values.yaml > /tmp/am.json
|
||||||
|
jq -e '[.route.routes[] | select(.matchers[0] == "alertname=\"Veilleur\"") | .receiver] == ["neant"]' /tmp/am.json
|
||||||
|
jq -e '[.receivers[] | select(.name == "neant") | keys] == [["name"]]' /tmp/am.json
|
||||||
|
|
||||||
|
# ⚠ RELEVÉ, PAS UNE GATE — il ne peut pas faire échouer le job. Le premier
|
||||||
|
# run du job `Application charts prometheus` (le tout premier depuis que
|
||||||
|
# #32 a énuméré les charts) est mort ICI, `curl` code 6 : le runner ne
|
||||||
|
# RÉSOUT PAS l'hôte de la dépendance. Sept charts sur dix dépendent du
|
||||||
|
# registre Helm interne `gitea.arcodange.lab` — donc sept jobs sur dix ne
|
||||||
|
# peuvent pas passer, quel que soit leur contenu. Ce relevé nomme lequel
|
||||||
|
# des deux hôtes tombe, pour que la prochaine session n'ait pas à le
|
||||||
|
# deviner. À retirer quand le trou est bouché.
|
||||||
|
- name: RELEVÉ — ce que le runner sait résoudre
|
||||||
|
run: |
|
||||||
|
set +e
|
||||||
|
echo "GITHUB_SERVER_URL=${GITHUB_SERVER_URL:-<vide>}"
|
||||||
|
for hote in gitea.arcodange.lab prometheus-community.github.io; do
|
||||||
|
echo "--- $hote ---"
|
||||||
|
getent hosts "$hote" || echo " PAS DE RÉSOLUTION (getent code $?)"
|
||||||
|
curl -sS -o /dev/null -m 10 -w " http=%{http_code}\n" "https://$hote/" \
|
||||||
|
|| echo " curl code $?"
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
|
||||||
- run: *helm_install_dependencies_sh
|
- run: *helm_install_dependencies_sh
|
||||||
|
|
||||||
- name: Install Helm for test
|
- name: Install Helm for test
|
||||||
@@ -193,31 +239,6 @@ jobs:
|
|||||||
}}
|
}}
|
||||||
run: helm template $chart --debug
|
run: helm template $chart --debug
|
||||||
|
|
||||||
# ⚠⚠ UNE GATE QUI N'EST CÂBLÉE NULLE PART N'EXISTE PAS (tools#36). Le banc
|
|
||||||
# du veilleur — celui qui rejoue les trois modes de la panne du 4 au 7
|
|
||||||
# septembre — tourne donc ICI, dans le job qui construit déjà le chart
|
|
||||||
# prometheus, à chaque PR qui le touche. Stdlib Python seule : rien à
|
|
||||||
# installer, rien à télécharger.
|
|
||||||
- name: Banc du veilleur (chart prometheus)
|
|
||||||
if: >-
|
|
||||||
${{
|
|
||||||
matrix.chart == 'prometheus'
|
|
||||||
&& (
|
|
||||||
contains(fromJSON('["","pull_request"]'), github.event_name)
|
|
||||||
|| github.ref != 'refs/heads/main'
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
python3 -m unittest discover -s prometheus/veilleur -v
|
|
||||||
|
|
||||||
# Le témoin toujours allumé ne doit JAMAIS partir sur Telegram : sans
|
|
||||||
# sa route vers le récepteur vide il sonnerait toutes les 3 h, et un
|
|
||||||
# témoin qui sonne est un témoin qu'on coupe.
|
|
||||||
yq -o=json eval '.prometheus.alertmanager.config' prometheus/values.yaml > /tmp/am.json
|
|
||||||
jq -e '[.route.routes[] | select(.matchers[0] == "alertname=\"Veilleur\"") | .receiver] == ["neant"]' /tmp/am.json
|
|
||||||
jq -e '[.receivers[] | select(.name == "neant") | keys] == [["name"]]' /tmp/am.json
|
|
||||||
|
|
||||||
- name: publish ${{ matrix.chart }} helm chart
|
- name: publish ${{ matrix.chart }} helm chart
|
||||||
if: ${{ contains(fromJSON('["","push"]'), github.event_name) && github.ref == 'refs/heads/main' }}
|
if: ${{ contains(fromJSON('["","push"]'), github.event_name) && github.ref == 'refs/heads/main' }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
Reference in New Issue
Block a user