2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CircleCIでビルドの結果をslackで通知する。5分でできます。

Posted at

CircleCIのjobの結果をslackに通知する

本記事では何かしらの自動テストや、自動デプロイの結果をslackに通知する方法記事にしております。簡単にわかりやすく、そして早くできるようにまとめましたので、すぐ終わらせて違う作業をしましょう!!

##環境

CircleCI 2.1
orbs: slack: circleci/slack@3.4.2

##条件

  1. すでに何らかのjobを作成済みである。
  2. 正常にビルドができる。
  3. slackを使っている

これらの条件に当てはまっていたら、手順通り初めてください。
当てはまっていない場合は、エラーが発生した時に混乱を引き起こしてしまう可能性があるので、ご注意ください!

##工程
 1. webhook取得
 2. CircleCIにて環境変数を設定
 3. config.ymlファイルに必要なソースを記述

1. Webhookを取得

⬆️⬆️上記のURLにて環境変数に設定するためのURLを取得してください。
指定するアカウントにログインし、通知するチャンネルを指定したらURLが発行されます。
slack.png

ログインすると上記の写真でチャンネルを選択する画面が出てくるので選択。
次の画面でURLが出てくるので、コピーして控えておく

##2.CircleCIにで環境変数を設定
CircleCIにて環境変数の設定を行います。
プロジェクトの設定画面にて環境変数の登録をする
プロジェクトを選択しinportする
circleci.png

nameは_SLACK_WEBHOOK_として
Valueは先ほど控えたURLをコピペする

##3. /.circleci/config.ymlファイルに通知パラメータを設定

config.yml

orbs:
  slack: circleci/slack@3.3.0
    

# 省略

    - slack/status:
        success_message: ':circleci-pass: $CIRCLE_BRANCH のビルドが完了しました\n:github_octocat: User:$CIRCLE_USERNAME'
        failure_message: ':circleci-fail: $CIRCLE_BRANCH のビルドが失敗しました\n:github_octocat: User:$CIRCLE_USERNAME'
        webhook: '${SLACK_WEBHOOK}'

この2種類の記述をする

私の場合

config.yml
version: 2.1

orbs:
  slack: circleci/slack@3.3.0

jobs:
  build:
    docker:
    - image: circleci/ruby:2.6.5-node-browsers
      environment:
        - BUNDLER_VERSION: 2.2.3
        - RAILS_ENV: 'test'
    - image: circleci/mysql:5.7
      environment:
        - MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
        - MYSQL_ROOT_HOST: '127.0.0.1'

    working_directory: **


    steps:
    - checkout

    - restore_cache:
        keys:
        - v1-dependencies-{{ checksum "Gemfile.lock" }}
        - v1-dependencies-

    - run:
        name: install dependencies
        command: |
          gem install bundler -v 2.2.0
          bundle install --jobs=4 --retry=3 --path vendor/bundle

    - save_cache:
        paths:
        - ./vendor/bundle
        key: v1-dependencies-{{ checksum "Gemfile.lock" }}

    # Database setup
    - run: mv ./config/database.yml.ci ./config/database.yml

    # Database setup
    - run:
        name: DatabaseSetup
        command: |
           bundle exec rake db:create
           bundle exec rake db:schema:load

    # yarn install
    - run:
        name: yarn Install
        command: yarn install


    - run: bundle exec bin/webpack

    # run tests!
    - run:
        name: RSpec 並列実行
        command: |
          mkdir /tmp/test-results
          TEST_FILES="$(circleci tests glob " **/spec/**/*_spec.rb" | circleci tests split --split-by=timings)"

          bundle exec rspec --format progress \
                          --out /tmp/test-results/rspec.xml \
                          --format progress \
                          $TEST_FILES

    # collect reports
    - store_test_results:
        path: /tmp/test-results
    - store_artifacts:
        path: /tmp/test-results
        destination: test-results

          #ssh接続
    - add_ssh_keys:
        fingerprints:
          - "**"

      #デプロイ
    - deploy:
        name: Capistrano deploy
        command: |
          if [ "${CIRCLE_BRANCH}" != "master" ]; then
            exit 0
          fi
            bundle exec cap production deploy

    - slack/status:
        success_message: ':circleci-pass: $CIRCLE_BRANCH のビルドが完了しました\n:github_octocat: User:$CIRCLE_USERNAME'
        failure_message: ':circleci-fail: $CIRCLE_BRANCH のビルドが失敗しました\n:github_octocat: User:$CIRCLE_USERNAME'
        webhook: '${SLACK_WEBHOOK}'

これでjobを走らせて見て通知がきたら成功です。
slack.png

この通知がきたら完成です。
お疲れ様でした!!

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?