mirror of
https://github.com/munin-monitoring/contrib.git
synced 2025-07-21 10:39:53 +00:00
add plugin: drone (#1367)
* add drone-cicd plugin * optimize loops * silencing curl * docs * housekeeping * add count * add links * fix if * add link * areastack * shellcheck
This commit is contained in:
parent
a49e70566f
commit
549c127d7d
1 changed files with 122 additions and 0 deletions
122
plugins/cicd/drone
Normal file
122
plugins/cicd/drone
Normal file
|
@ -0,0 +1,122 @@
|
|||
#!/bin/bash
|
||||
#%# family=auto
|
||||
|
||||
: << EOF
|
||||
=head1 NAME
|
||||
gitea_commit_time_diff - Plugin to monitor the time since the last commit for a gitea repository.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
[drone]
|
||||
env.url http://docker10.grote.lan:81/api/user/repos?latest=true
|
||||
env.token WXXXXXXXXXXXXXX
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Michael Grote (michael.grote@posteo.de)
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
|
||||
=head1 LICENSE
|
||||
|
||||
GPLv3 or later
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
=cut
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if ! command -v jq &> /dev/null; then
|
||||
echo "no (jq could not be found)"
|
||||
elif ! command -v curl &> /dev/null; then
|
||||
echo "no (curl could not be found)"
|
||||
elif ! command -v sed &> /dev/null; then
|
||||
echo "no (sed could not be found)"
|
||||
elif ! command -v cut &> /dev/null; then
|
||||
echo "no (cut could not be found)"
|
||||
elif ! command -v tr &> /dev/null; then
|
||||
echo "no (tr could not be found)"
|
||||
else
|
||||
echo "yes"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# get data
|
||||
data=$(curl --silent -X GET "$url" -H "Authorization: Bearer $token")
|
||||
|
||||
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
# setze optionen
|
||||
echo "multigraph drone_build_status"
|
||||
echo "graph_title Drone CI/CD build Status per project"
|
||||
echo "graph_vlabel Error"
|
||||
echo "graph_category devel"
|
||||
echo "graph_printf %6.0lf"
|
||||
echo "graph_args -l 0 --base 1000"
|
||||
echo "graph_info This graph displays the actual state per project."
|
||||
|
||||
echo "$data" | jq -r '.[] | select(.active == true) | "\(.slug) \(.namespace) \(.name) \(.link)"' | while read -r line
|
||||
do
|
||||
slug=$(echo "$line" | cut -f1 -d" " | sed 's/[\/-]/_/g' | tr '[:upper:]' '[:lower:]')
|
||||
namespace=$(echo "$line" | cut -f2 -d" ")
|
||||
name=$(echo "$line" | cut -f3 -d" ")
|
||||
link=$(echo "$line" | cut -f4 -d" ")
|
||||
|
||||
echo "$slug".label "$namespace"/"$name"
|
||||
echo "$slug".warn 1
|
||||
echo "$slug".critical 2
|
||||
echo "$slug".info "$link"
|
||||
done
|
||||
|
||||
echo "multigraph drone_build_count"
|
||||
echo "graph_title Drone CI/CD build count per project"
|
||||
echo "graph_vlabel Count"
|
||||
echo "graph_category devel"
|
||||
echo "graph_printf %6.0lf"
|
||||
echo "graph_args -l 0 --base 1000"
|
||||
echo "graph_info This graph displays the build count per project."
|
||||
|
||||
echo "$data" | jq -r '.[] | select(.active == true) | "\(.slug) \(.namespace) \(.name) \(.link)"' | while read -r line
|
||||
do
|
||||
slug=$(echo "$line" | cut -f1 -d" " | sed 's/[\/-]/_/g' | tr '[:upper:]' '[:lower:]')
|
||||
namespace=$(echo "$line" | cut -f2 -d" ")
|
||||
name=$(echo "$line" | cut -f3 -d" ")
|
||||
link=$(echo "$line" | cut -f4 -d" ")
|
||||
|
||||
echo "$slug".label "$namespace"/"$name"
|
||||
echo "$slug".info "$link"
|
||||
echo "$slug".draw AREASTACK
|
||||
done
|
||||
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "multigraph drone_build_status"
|
||||
echo "$data" | jq -r '.[] | select(.active == true) | "\(.slug) \(.build.status)"' | while read -r line
|
||||
do
|
||||
slug=$(echo "$line" | cut -f1 -d" " | sed 's/[\/-]/_/g' | tr '[:upper:]' '[:lower:]')
|
||||
if [ "$(echo "$line" | cut -f2 -d" ")" = "success" ] ; then
|
||||
rc=0
|
||||
else
|
||||
rc=1
|
||||
fi
|
||||
echo "$slug".value "$rc"
|
||||
done
|
||||
|
||||
echo "multigraph drone_build_count"
|
||||
echo "$data" | jq -r '.[] | select(.active == true) | "\(.slug) \(.counter)"' | while read -r line
|
||||
do
|
||||
slug=$(echo "$line" | cut -f1 -d" " | sed 's/[\/-]/_/g' | tr '[:upper:]' '[:lower:]')
|
||||
count=$(echo "$line" | cut -f2 -d" " )
|
||||
# wenn $2 != success, dann gebe 1 zurück
|
||||
echo "$slug".value "$count"
|
||||
done
|
Loading…
Add table
Add a link
Reference in a new issue