Slack에 알리는 쉘 스크립트
4659 단어 ShellScriptslack-api
소개
응용 프로그램 배포가 완료되었음을 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}"
참고
Reference
이 문제에 관하여(Slack에 알리는 쉘 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/momotaro98/items/fe567041cbd2bd3f2281
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
슬랙 설정
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}"
참고
Reference
이 문제에 관하여(Slack에 알리는 쉘 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/momotaro98/items/fe567041cbd2bd3f2281
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Slack에 알리는 쉘 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/momotaro98/items/fe567041cbd2bd3f2281텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)