JT's Blog

Do the right things and do the things right.

Continuous Integration With Circle CI and Integrate Slack

| Comments

持續整合 / 持續交付&持續部署

持續整合 (Continuous Integration),簡稱 CI。

持續交付&持續部署 (Continuous Delivery & Continuous Deployment),簡稱 CD。

CI & CD 簡單來說就是盡量減少手動人力,將一些日常工作交給自動化工具。例如:環境建置、單元測試、日誌紀錄、產品部署。

流程規劃

work flow

Circle CI Configuration

Circle CI 使用的描述檔 circle.yml,描述如何安裝套件、執行測試、建置、部署等工作

提供三種設定方式

  1. 由 CircleCI 根據不同語言自動產生設定
  2. 透過 Web UI 設定
  3. 自行撰寫 circle.yml 可以參考 CircleCI Configuration
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# circle.yml

machine:
  timezone:
    Asia/Taipei
  ruby:
    version: 2.4.1
  services:
    - redis

dependencies:
  pre:
    - rvm use 2.2.5
    - gem install bundler
    - gem install rubocop
  post:
    - gem update rake

database:
  override:
    - cp config/database.yml.example config/database.yml
    - rake db:create db:migrate --trace

test:
  override:
    - bundle exec rspec --color

deployment:
  staging:
    branch: develop
    commands:
      - bundle exec cap staging deploy

test 描述要執行的測試

depolyment 描述要執行的部署

使用 sidekiq,machine 要加入 redis

Circle CI

選擇 Project

select gh project

點選 Build project 會自動執行第一次建構

設定 AWS CodeDeploy

  • [AWS] 建立 User
  • [AWS] Attach Pollcy (AmazonEC2FullAccess)
  • [CircleCI] Project Settings > AWS CodeDeploy 貼上 AWS Key ID / Secret Access Key

Slack Integration

參考 slack integration 教學

將 Webhook URL 貼到 Project Settings > NOTIFICATIONS > Chat Notifications > Slack

運行

GH 建立 PR 就會自動執行 RSpec 測試,測試通過即可點選 Merge

running status

Slack 通知執行結果

slack notification

Reference

Comments