iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 8
1

經過好幾天的了解理論與使用方法後,終於可以開始設定我們第一個 Pipeline 了!

這次我們會做兩個測試,一個是讓 Concourse 顯示出 Hello World 的訊息,另一個則是定時重複運行某個動作。

fly -t lite login -c http://192.168.100.4:8080

在開始之前,我們先登入 Concourse 來獲取權限。不要忘記把 192.168.100.4 換成正確的伺服器位置。

接下來,我們新增一個叫做 hello.yml 的檔案,並且放入下面這些內容。

jobs:
- name: hello-world
  plan:
  - task: say-hello
    config:
      platform: linux
      image_resource:
        type: docker-image
        source: {repository: ubuntu}
      run:
        path: echo
        args: ["Hello, world!"]

這個檔案定義了一個叫做 hello-word 的工作,而這個工作的計劃(一堆任務)裡面則定義了一個叫做 say-hello 的任務。
而為了執行這個任務,我們給他一些設定:

  • 平台:Linux
  • 鏡像來源: Docker / Ubuntu 鏡像
  • 執行動作:echo
  • 動作參數:"Hello, world!"

比較特別的是 image_resource 的設定,雖然大多數情況都是使用 Docker 但是官方也預想到有其他情況,所以仍保留了對應其他情境的設計。

fly -t lite set-pipeline -p hello-world -c hello.yml

存檔後用 set-pipeline 指令上傳,到網頁介面 (要記得登入)就能看到 hello-world 這個工作了!

http://ithelp.ithome.com.tw/upload/images/20161208/20065771mqDRXpR5X2.png

因為目前沒有觸發工作的設定,也不會自動啟動 Pipeline 所以我們要用 unpause-pipeline 來啟動這個 Pipeline 。

fly -t lite unpause-pipeline -p hello-world

不過因為 Pipeline 沒有任何觸發機制,還是要手動觸發工作才能看到效果。試著在網頁介面啟動吧!

接下來,我們再新增一個叫做 navi-pipeline.yml 的檔案,官方用這個來介紹觸發器以及資源的應用。

resources:
- name: every-1m
  type: time
  source: {interval: 1m}

jobs:
- name: navi
  plan:
  - get: every-1m
    trigger: true
  - task: annoy
    config:
      platform: linux
      image_resource:
        type: docker-image
        source: {repository: ubuntu}
      run:
        path: echo
        args: ["Hey! Listen!"]

和剛剛相比,又多了一些東西。

首先是資源的定義,我們使用了官方內建的 time 類型資源,透過 source 給予參數(每一分鐘)所以也理所當然的用 every-1m 來做命名。

接下來工作的計畫裡面,多了一些東西。那就是我們對 every-1m 這個資源做了 get 的動作,並且啟用了觸發功能。
其他基本上和原本的沒有變化,但是多了取的資源跟觸發的功能後,每當 Concourse 檢查這個資源發現有差異的時候,就會自動啟動這個工作了。

關於資源的運作會在後面介紹,現在只要簡單了解資源和觸發的關係就可以了。

下一篇會介紹怎麼使用任務。


上一篇
07 - 團隊與認證
下一篇
09 - 任務
系列文
不一樣的 CI/CD 工具:Concourse 初探30

尚未有邦友留言

立即登入留言