LoginSignup
3
1

More than 5 years have passed since last update.

ビルドの完了をSlackで通知するシェルスクリプトを雑に書いた

Posted at

概要

シェルスクリプトから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
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1