ビルドの完了をSlackで通知するシェルスクリプトを雑に書いた
5885 ワード
概要
シェルスクリプトからSlackに通知を送りたいときのメモ。
シェルからAttachment(JSON)を扱うのが結構面倒くさい。
詳細
- AWS CodeBuild でビルドの完了を通知するスクリプト
- 通知投げるスクリプトとテンプレート相当のスクリプトを作った
コード
notify.sh
#!/bin/sh
set -eu
SLACK_WEBHOOK_URL=""
usage_exit() {
echo "Usage: $0 [message]" 1>&2
exit 0
}
case $1 in
build_start)
ATTACHMENTS=$(sh ./lib/scripts/notify/templates/build.sh start)
;;
build_complete)
ATTACHMENTS=$(sh ./lib/scripts/notify/templates/build.sh complete)
;;
\?)
usage_exit
;;
esac
curl -X POST $SLACK_WEBHOOK_URL -d "$ATTACHMENTS"
templates/build.sh
#!/bin/sh
set -eu
SLACK_CHANNEL="#notice"
SLACK_USERNAME="AWS CodeBuild"
SLACK_ICON=":yuki:"
BUILD_ID=${CODEBUILD_BUILD_ID:-"BUILD_ID"}
BUILD_LOG_URL=""
SOURCE_REPOSITORY_NAME=""
SOURCE_VERSION=`git ls-remote https://github.com/${SOURCE_REPOSITORY_NAME} | cut -f 1`
BUILD_ARN=${CODEBUILD_BUILD_ARN:-"BUILD_ARN"}
case $1 in
start)
MESSAGE="イメージのビルドが開始されました"
COLOR="#2d9ee0"
;;
complete)
MESSAGE="イメージのビルドが完了しました"
COLOR="#7CD197"
;;
esac
ATTACHMENTS=`cat << EOS
{
"channel": "${SLACK_CHANNEL}",
"username": "${SLACK_USERNAME}",
"icon_emoji": "${SLACK_ICON}",
"attachments": [
{
"fields": [
{
"title": "${MESSAGE}",
"short": true
}
],
"actions": [
{
"type": "button",
"name": "build_log",
"text": "Build Log 🛫",
"url": "${BUILD_LOG_URL}",
"style": "primary"
}
],
"color": "${COLOR}"
},
{
"fields": [
{
"title": "Source Repository",
"value": "${SOURCE_REPOSITORY_NAME}",
"short": true
},
{
"title": "Source Version",
"value": "${SOURCE_VERSION}",
"short": true
},
{
"title": "Build ARN",
"value": "${BUILD_ARN}",
"short": false
}
]
}
]
}
EOS`
echo $ATTACHMENTS
Author And Source
この問題について(ビルドの完了をSlackで通知するシェルスクリプトを雑に書いた), 我々は、より多くの情報をここで見つけました https://qiita.com/cohakim/items/2ee67015f96a9b8ea13a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .