黃金俠

Ruby on Rails / Rubygems / Javascript / Git

CI server - Bigtuna (進階設定篇)

| Comments

上次提到專案在 bigtuna 上的設定
這次要示範:

  • 和 github 整合
  • 將 build 結果寄送 email
  • 安全性設定

一般的 github hook

專案的編輯頁面中, 有一個欄位叫 “Hook Name”
用於做 http post request trigger (其實後來發現get也可以)

舉例來說, bigtuna server 的 domain 假設是 bigtina.marsz.tw 的話 若專案的 hookname 設定為 “myapp”
則 trigger project build 的 url 則是

1
http://bigtuna.marsz.tw/hooks/build/myapp

因此只要到 github.com 的專案頁面裡 “Admin” -> “Service Hooks” -> “Post-Receive URLs” 填入該網址即可

github 會在每次該專案有 push code 上來時, 送 post 到該 url

但常見的情況是, 在 github 上的專案裡有多條分支, 而我們只想針對某條分支有 push 時才進行 trigger

針對不同分支的 github hook

參考: http://bigtuna.appelier.com/configuration.html 最下方區塊

到 bigtuna 的專案目錄下, 打開 config/bugtuna.yml 加入

config/bugtuna.yml
1
2
production:
  :github_secure: "abcabc"

重起 bigtuna 後, hook 在 github 上的 url 則改為

config/bugtuna.yml
1
http://bigtuna.marsz.tw/hooks/build/github/abcabc

“abcabc” 是你在 github_secure 填的值
因為 github 在送 post 到 url 時, 會帶上 push 的專案以及分支名稱
因此 bigtuna 會依據傳送過來的資訊找到對應的 github uri 和 branch 而啟動 build
而原先設定的 hook name 在這裡就沒有用到了
github_secure 的設定則是多一層簡單的安全性措施

email config

首先到 bigtuna 專案中設定 email smtp (以下為 gmail smtp 範例)

config/email.yml
1
2
3
4
5
6
7
8
production:
  :address: "smtp.gmail.com"
  :port: 587
  :domain: 'your domain'
  :user_name: 'your email'
  :password: 'ur password'
  :authentication: 'plain'
  :enable_starttls_auto: true

設定 email 內容中的 url host

config/bigtuna.yml
1
2
production:
  :url_host: "bigtuna.marsz.tw"

重起 delayed job

1
2
RAILS_ENV=production ./script/delayed_job stop
RAILS_ENV=production ./script/delayed_job start

在 project 中的 hook => mailer 打勾, 然後儲存

儲存後會發現原先打勾的地方多了 Configure

設定 email 時機與對象

注意: 若要寄給多人, 必須以半型逗號隔開, 不能用換行

1
foo@marsz.tw,bar@marsz.tw

其他安全性設定

最簡單的方式可以利用 htpasswd
相關設定請參考 htpasswd
設定完成後, github 的 hook url 也必須一同加上帳號密碼

1
http://user:pssword@bigtuna.marsz.tw/hooks/build/github/abcabc

Comments