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}"

참고

좋은 웹페이지 즐겨찾기