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

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

##環境
```r
CircleCI 2.1
orbs: slack: circleci/slack@3.4.2
```

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

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


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


## 1. Webhookを取得
https://slack.com/services/new/incoming-webhook

⬆️⬆️上記のURLにて環境変数に設定するためのURLを取得してください。
指定するアカウントにログインし、通知するチャンネルを指定したらURLが発行されます。
![slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825677/93a26422-5c3a-a742-4166-4a945cf80876.png)

ログインすると上記の写真でチャンネルを選択する画面が出てくるので選択。
次の画面でURLが出てくるので、コピーして控えておく
 
##2.CircleCIにで環境変数を設定
CircleCIにて環境変数の設定を行います。
プロジェクトの設定画面にて環境変数の登録をする
プロジェクトを選択しinportする
![circleci.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825677/a7a9461f-c44b-852e-6550-b831aed8d6bf.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}'
```
この２種類の記述をする

私の場合
##
```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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/825677/f2c0cea9-0fb9-2d9e-8bc3-78cbcf28e369.png)

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