iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 16
0
DevOps

不一樣的 CI/CD 工具:Concourse 初探系列 第 16

16 - 用 Concourse 跑 RSpec 測試

  • 分享至 

  • twitterImage
  •  

發現原來還有關於資源的設定項目沒有寫到,不過已經將近半個月都沒有實作。既然都預告會有實作,那就先來體驗看看用 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 就會去下載最新版本的專案,並且開始執行測試。

如果成功執行的話,會得到像筆者一樣的畫面。

http://ithelp.ithome.com.tw/upload/images/20161216/20065771xBczIU2B3s.png

那麼,下一篇會回去討論一下關於資源。這是筆者認為 Concourse 最特別的部分,而且也會在之後的實作上使用到。


上一篇
15 - 建置計畫 (3)
下一篇
17 - 資源
系列文
不一樣的 CI/CD 工具:Concourse 初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言