Slackに通知する用シェルスクリプト
4901 ワード
はじめに
アプリケーションのデプロイが完了したことをSlackに通知するためのシェルスクリプトを作りました。
本記事の例では、以下のような通知がSlackに来ます。
手順
Slack設定
Slack APIのIncoming Webhooksの機能が一番シンプルだとわかったので利用しました。
上記リンクの箇所にてStep1~3をすれば、対象のワークスペースのチャネルへと通知するAPIを叩くためのURL(下記スクリプトの${SLACK_WEBHOOK_URL}
にあたる)が得られ、準備OKになります。
シェルスクリプトの作成
上記通知の例では以下のスクリプトを利用しています。
#!/bin/bash
set -eu
# gen_post_dataで使われる。チェックアウト中のブランチ名をもとにデプロイ対象環境を返す。
get_deploy_env()
{
branch_name=$(git symbolic-ref --short -q HEAD 2>/dev/null)
if [ "$branch_name" = "master" ]; then
echo "Prod"
elif [ "$branch_name" = "develop" ]; then
echo "STG"
else
echo "error current branch is invalid"
exit 1
fi
}
# Slack Webhook IncomingのAPIへの通知メッセージ用のJSONを作る。
gen_post_data()
{
service="my-service"
env=$(get_deploy_env) # ex: STG
orgpath=$(git remote get-url origin | awk -F "@" '{print $2}') # ex: github.com/username/my-service
hash=$(git rev-parse HEAD) # ex: a5e28da048e8eed21a77ec7c15037018
cat <<EOF
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*${service}* has been deployed to *${env}*\nDeployed commit hash: <https://${orgpath}/commit/${hash}|${hash}>"
}
}
]
}
EOF
}
# 作ったメッセージを付けてSlack Webhook IncomingのAPIを叩く。
curl -i -H "Content-type: application/json" -s -S -X POST -d "$(gen_post_data)" "${SLACK_WEBHOOK_URL}"
参考
Author And Source
この問題について(Slackに通知する用シェルスクリプト), 我々は、より多くの情報をここで見つけました https://qiita.com/momotaro98/items/fe567041cbd2bd3f2281著者帰属:元の著者の情報は、元の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 .