146 lines
5.1 KiB
Bash
Executable File
146 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo 'Content-Type: text/plain'
|
|
echo ''
|
|
# echo "PROJECT: $PROJECT"
|
|
|
|
object () {
|
|
# e.g account
|
|
kind=$1
|
|
|
|
# e.g leandroAccount
|
|
self=$2
|
|
|
|
shift
|
|
shift
|
|
|
|
# iterates over the remaining args
|
|
for arg in "$@"; do
|
|
# e.g name=Leandro becomes ARG_KEY=name ARG_VALUE=Leandro
|
|
read ARG_KEY ARG_VALUE <<< $(echo "$arg" | sed -E "s/(\w+)=(.*?)/\1 \2/")
|
|
|
|
if [[ ! -z "$ARG_KEY" ]] && [[ ! -z "$ARG_VALUE" ]]; then
|
|
# declare the object's state!!!!
|
|
# e.g export leandroAccount_balance=100
|
|
export ${self}_$ARG_KEY="$ARG_VALUE"
|
|
fi
|
|
done
|
|
}
|
|
|
|
notify () {
|
|
for i in `seq 1 30`;
|
|
do
|
|
local RESPONSE_HTTP_CODE=$(curl --max-time 5 -s -o /dev/null -i -w "%{http_code}" -X POST -H "Authorization: Bearer ${1}" -d "message=${3}" "https://notify-api.line.me/api/notify")
|
|
[[ "${RESPONSE_HTTP_CODE}" == "200" ]] && break
|
|
sleep 2
|
|
done
|
|
curl -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"content\": \"$(echo ${3}| sed 's/%0A/\\n/g')\"}" https://discord.com/api/webhooks/${2}
|
|
}
|
|
|
|
cicd () {
|
|
local LINE_TOKEN=$1
|
|
local DISCORD_TOKEN=$2
|
|
local repoNameOrigin=$4
|
|
local branchName=$5
|
|
local BUILD_NUMBER=$6
|
|
local buildVersion=$7
|
|
local GIT_COMMIT=$8
|
|
local JOB_URL=$9
|
|
local BUILD_URL=${10}
|
|
|
|
case "$3" in
|
|
"success")
|
|
local MESSAGE_OPTION="✅✅✅✅✅%0A*CI DONE*"
|
|
;;
|
|
"unstable")
|
|
local MESSAGE_OPTION="💥💥💥💥💥💥%0A*CI Unstable*"
|
|
;;
|
|
"failure")
|
|
local MESSAGE_OPTION="🔥🔥🔥🔥🔥🔥%0A*CI Fail*"
|
|
;;
|
|
esac
|
|
|
|
notify ${LINE_TOKEN} ${DISCORD_TOKEN} "${MESSAGE_OPTION}%0ARepositories: ${repoNameOrigin}%0ABranch: ${branchName}%0ABuild Number: ${BUILD_NUMBER}%0AImage Tag: ${buildVersion}%0ACommit ID: ${GIT_COMMIT}%0AJob URL: ${JOB_URL}%0ABuild Log: ${BUILD_URL}console"
|
|
}
|
|
|
|
pod () {
|
|
local LINE_TOKEN=$1
|
|
local DISCORD_TOKEN=$2
|
|
local POD_NAME=$4
|
|
local POD_IP=$5
|
|
local IMAGE_TAG=$6
|
|
local NODE=$7
|
|
case "$3" in
|
|
"start")
|
|
local MESSAGE_OPTION="🔆🟢🔆🟢🔆🟢🔆 Service UP"
|
|
;;
|
|
"stop")
|
|
local MESSAGE_OPTION="☠️🔴☠️🔴☠️🔴☠️ Service DOWN"
|
|
;;
|
|
esac
|
|
notify ${LINE_TOKEN} ${DISCORD_TOKEN} "${MESSAGE_OPTION}%0APod NAME: ${POD_NAME}%0APod IP: ${POD_IP}%0AImage Tag: ${IMAGE_TAG}%0ANode: ${NODE}"
|
|
}
|
|
|
|
networkOutbound () {
|
|
local LINE_TOKEN=$1
|
|
local DISCORD_TOKEN=$2
|
|
local DURATION_MIN=$3
|
|
local DURATION_SEC=$4
|
|
local NOTIFY_RESPONSE=$(echo $5 | sed 's/-ONLINE/ ✅✅✅✅✅✅/g;s/-OFFLINE/ 🔥🔥🔥🔥🔥🔥/g;s/-:-/ : /g;s/-/ /g;')
|
|
notify ${LINE_TOKEN} ${DISCORD_TOKEN} "${DURATION_MIN} min ${DURATION_SEC} sec${NOTIFY_RESPONSE}"
|
|
}
|
|
|
|
action () {
|
|
local LINE_TOKEN=$(eval echo \${${PROJECT}_line_${HTTP_ACTION}})
|
|
local DISCORD_TOKEN=$(eval echo \${${PROJECT}_discord_${HTTP_ACTION}})
|
|
case "${HTTP_ACTION}" in
|
|
"cicd")
|
|
cicd ${LINE_TOKEN} ${DISCORD_TOKEN} ${HTTP_ACTIONVAL} ${HTTP_REPO} ${HTTP_BRANCH} ${HTTP_BUILDNUM} ${HTTP_BUILDVER} ${HTTP_COMMIT} ${HTTP_JOBURL} ${HTTP_BUILDURL}
|
|
;;
|
|
"pod")
|
|
pod ${LINE_TOKEN} ${DISCORD_TOKEN} ${HTTP_ACTIONVAL} ${HTTP_PODNAME} ${HTTP_PODIP} ${HTTP_IMAGETAG} ${HTTP_NODE}
|
|
;;
|
|
"networkOutbound")
|
|
networkOutbound ${LINE_TOKEN} ${DISCORD_TOKEN} ${HTTP_DURATIONMIN} ${HTTP_DURATIONSEC} ${HTTP_NOTIFYRESPONSE}
|
|
;;
|
|
*)
|
|
echo '{"status":404,"message":"action type not found"}'
|
|
exit 0
|
|
;;
|
|
esac
|
|
}
|
|
|
|
case "${PROJECT}" in
|
|
"clm")
|
|
object lineToken \
|
|
${PROJECT}_line \
|
|
cicd=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
|
|
pod=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
|
|
networkOutbound=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da
|
|
object discordToken \
|
|
${PROJECT}_discord \
|
|
cicd=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
|
|
pod=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
|
|
networkOutbound=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta
|
|
action
|
|
;;
|
|
"ncs")
|
|
object lineToken \
|
|
${PROJECT}_line \
|
|
cicd=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
|
|
pod=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da \
|
|
networkOutbound=ZcjlGQUzDqJXHSuh1GQACy6dDGMj32CdMW0MLwwA9da
|
|
object discordToken \
|
|
${PROJECT}_discord \
|
|
cicd=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
|
|
pod=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta \
|
|
networkOutbound=1270450815580111043/29nP43fgoajLtAHiSbRxRdPjgeE3i-4j4gw5ND4s3mzOsnHjOIeKZS2aZGwlMVkusmta
|
|
action
|
|
;;
|
|
*)
|
|
echo '{"status":404,"message":"project not found"}'
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
echo '{"status":200,"message":"ok"}' |