From 35d4a20d11c4beff9d52c73b3eee21478342c19c Mon Sep 17 00:00:00 2001 From: pmo-actions <> Date: Mon, 14 Apr 2025 08:29:20 +0200 Subject: [PATCH] Initial commit --- README.md | 29 ++++++++++++++++++++++ action.yaml | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 README.md create mode 100644 action.yaml diff --git a/README.md b/README.md new file mode 100644 index 0000000..6d432f4 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# Les pmo-actions + +Les actions de la *petite maison orange* sont des actions réutilisables dans un environnement Gitea. +Elles sont avant tout faites pour me faciliter la vie dans la gestion de mon nuage personnel. + +Pour les inclures utiliser la syntaxe: + +```yaml + uses: https://gargoton.petite-maison-orange.fr/pmo-actions/ACTION@main +``` + +En remplaçant `ACTION` par l'action désirée. + +## L'action `healthchecks-ping` + +Elle a pour but d'envoyer un ping sur un serveur [`healthchecks.io`](https://healthchecks.io/). Elles acceptent +quatre valeurs en entrée, dont deux premières sont obligatoires. + +- `server`: l'adresse du serveur inclue le protocole + par exemple: `https://monserveur.mondomaine.io` +- `uuid`: l'identifiant hexadecimal du service. l'*uuid* sera combiné avec + l'adresse du serveur pour construire l'URL à sonner: + `$serveur/ping/$uuid` + +- `command`: cette valeur peut prendre 4 valeurs : `start`|`log`|`fail`|`stop`. + +- `message`: Le message qui sera logguer lors du ping sur le serveur [`healthchecks.io`](https://healthchecks.io/). + + diff --git a/action.yaml b/action.yaml new file mode 100644 index 0000000..b80a4d3 --- /dev/null +++ b/action.yaml @@ -0,0 +1,70 @@ +name: 'Ping a Healthchecks.io server' +description: 'Description de l action' +author: 'Eric Coissac' + +inputs: + server: + description: 'Address of the Healthchecks server' + required: true + uuid: + description: 'Deuxième paramètre' + required: true + command: + description: 'Command to sen to the server can be nothing, start, log or fail' + required: false + default: 'stop' + message: + description: 'Message to log with the ping' + required: false + default: '' + + +runs: + using: 'composite' + steps: + - name: Ping the server + shell: bash + run: | + HEALTHPOINT="${{ inputs.server }}/ping/${{ inputs.uuid }}" + OPTIONS="-fsS -m 10 --retry 5" + MESSAGE="${{ inputs.message }}" + COMMAND="${{ inputs.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}" + ;; + *) + echo "::error::Commande invalide: $COMMAND" + exit 1 + ;; + esac + + curl_cmd=( + curl + $OPTIONS + "${CURL_DATA[@]}" + "$URL" + ) + + echo "Commande exécutée: ${curl_cmd[*]}" + + "${curl_cmd[@]}" # Exécution sans eval + + if [[ "$COMMAND" == "fail" ]] ; then + exit 1 + fi + exit 0 + + + +