發現原來還有關於資源的設定項目沒有寫到,不過已經將近半個月都沒有實作。既然都預告會有實作,那就先來體驗看看用 Concourse 對 RSpec 做測試,再回去看關於資源的設定吧!
對 Concourse 來說,要運行一個測試需要以下要素:
因為這次只是要對 RSpec 做測試,所以我們只需要最基本的 Git Repoistory 來當作資源。
範例專案在此,可以使用這個專案練習。
Github: https://github.com/elct9620/concourse-example-rspec
我們的工作也很簡單,只要將專案下載下來後,用有 Ruby 的環境安裝完畢後執行 rspec
指令就可以了。
要運行測試當然要有 Concourse 的伺服器摟,如果還沒架設的話趕緊看看前面架設的文章架設一個吧!
這次的練習因為步驟很少,所以直接用一個 Pipeline 設定檔解決吧!
首先,我們需要定義資源。
resources:
- name: rspec-example
type: git
source:
uri: https://github.com/elct9620/concourse-example-rspec.git
因為是公開的專案,為了避免需要設定 SSH Key 就直接用 HTTPS 的方式設定。
接下來我們要定義所需的工作和建置計畫。
jobs:
- name: run-test
plan:
- get: rspec-example
trigger: true
- task: rspec
config:
platform: linux
image_resource:
type: docker-image
source: { repository: ruby, tag: 2.3-alpine }
inputs:
- name: rspec-example
run:
path: sh
args:
- -exc
- |
cd rspec-example
bundle install
rspec
這次的工作設定跟一開始嘗試的 Hello World 非常相似,不過有一個不太一樣的地方。
這次有需要使用 Git Repository 所以使用了 get
但是如果我們沒有用 inputs
告訴任務要將取得的資源放到哪裡的話,就沒辦法拿到檔案了。
完成之後,我們用 fly -t lite sp -p rspec-example -c rspec-pipeline.yml
將這個 Pipeline 設定到 Concourse 裡面。
接著再用 fly -t lite up -p rspec-example
將這個 Pipeline 啟動,之後等待幾秒後 Concourse 就會去下載最新版本的專案,並且開始執行測試。
如果成功執行的話,會得到像筆者一樣的畫面。
那麼,下一篇會回去討論一下關於資源。這是筆者認為 Concourse 最特別的部分,而且也會在之後的實作上使用到。