Initial commit

This commit is contained in:
pmo-actions
2025-04-14 13:47:46 +02:00
commit 39dbe7490c
2 changed files with 158 additions and 0 deletions

66
README.md Normal file
View File

@@ -0,0 +1,66 @@
# L'action `healthchecks-ping`
Cette action permet denvoyer un *ping* vers un serveur [Healthchecks.io](https://healthchecks.io) (ou un serveur compatible).
Elle est conçue pour être utilisée dans des workflows Gitea avec des runners auto-hébergés.
---
## 🔧 Utilisation
```yaml
- name: Notify healthchecks
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
```
---
## 📥 Paramètres
| Nom | Obligatoire | Par défaut | Description |
|------------------|-------------|------------|-----------------------------------------------------------------------------|
| `check_server` | ✅ | | Adresse du serveur Healthchecks, incluant `https://`. |
| `check_uuid` | ✅ | | Identifiant UUID de la vérification. |
| `check_command` | ❌ | `stop` | Commande : `start`, `log`, `fail`, ou `stop`. |
| `check_message` | ❌ | `""` | Message transmis avec le ping (visible dans linterface Healthchecks). |
| `debug` | ❌ | `false` | Affiche des messages de debug détaillés si activé. |
---
## ▶️ Exemple de workflow
```yaml
- name: Notify healthchecks (start)
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: https://hc-ping.com
check_uuid: a1b2c3d4-1234-5678-9abc-def123456789
check_command: start
- name: Build my project
run: make build
- name: Notify healthchecks (stop)
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/healthchecks-ping@main
with:
check_server: https://hc-ping.com
check_uuid: a1b2c3d4-1234-5678-9abc-def123456789
check_message: "Build terminé avec succès ✅"
```
---
## ⚙️ Comportement
- Si `check_command: fail` est utilisé, **laction échoue volontairement** (`exit 1`).
- Si `curl` échoue, laction affiche lerreur et échoue également.
- LURL appelée par `curl` dépend de la commande :
- `https://<check_server>/ping/<uuid>` *(commande `stop` ou vide)*
- `https://<check_server>/ping/<uuid>/<check_command>` *(commande `start`, `log`, `fail`)*
---
## 🧡 À propos
Cette action fait partie des actions de la **Petite Maison Orange**.
Toutes les actions sont disponibles ici :
👉 [https://gargoton.petite-maison-orange.fr/pmo-actions/](https://gargoton.petite-maison-orange.fr/pmo-actions/)

92
action.yaml Normal file
View File

@@ -0,0 +1,92 @@
name: 'Ping a Healthchecks.io server'
description: 'Description de l action'
author: 'Eric Coissac'
inputs:
check_server:
description: 'Address of the Healthchecks server'
required: true
check_uuid:
description: 'Deuxième paramètre'
required: true
check_command:
description: 'Command to sen to the server can be nothing, start, log or fail'
required: false
default: 'stop'
check_message:
description: 'Message to log with the ping'
required: false
default: ''
debug:
description: 'Run the action in debug mode'
required: false
default: false
type: boolean
runs:
using: 'composite'
steps:
- name: Load bash library
uses: https://gargoton.petite-maison-orange.fr/pmo-actions/bash-library@main
- name: Set debug mode
if: ${{ inputs.debug == true }}
shell: bash
run: |
source "${{ github.action_path }}/../bashlib.sh"
export DEBUG="ON"
echo "DEBUG=ON" >> $GITEA_ENV
debug Debug switch on
- name: Ping the server
shell: bash
run: |
source "${{ github.action_path }}/../bashlib.sh"
check_command curl
SERVER="${{ inputs.check_server }}"
HEALTHPOINT="${{ inputs.check_server }}/ping/${{ inputs.check_uuid }}"
OPTIONS="-fsS -m 10 --retry 5"
MESSAGE="${{ inputs.check_message }}"
COMMAND="${{ inputs.check_command }}"
CURL_DATA=()
if [[ -n "$MESSAGE" ]]; then
CURL_DATA+=(--data-raw "$MESSAGE")
fi
case "$COMMAND" in
start|log|fail)
URL="${HEALTHPOINT}/$COMMAND"
;;
stop)
URL="${HEALTHPOINT}"
;;
*)
error Error "Invalid command: $COMMAND (must be start|log|fail|stop)"
;;
esac
curl_cmd=(
curl
$OPTIONS
"${CURL_DATA[@]}"
"$URL"
)
debug "Run command" "${curl_cmd[*]}"
result=$("${curl_cmd[@]}") \
&& success "Success" "$COMMAND ping sent to ${SERVER}" \
|| error "Error" "$COMMAND ping to ${SERVER} failed ${result}"
if [[ "$COMMAND" == "fail" ]] ; then
exit 1
fi
exit 0