經過好幾天的了解理論與使用方法後,終於可以開始設定我們第一個 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
的任務。
而為了執行這個任務,我們給他一些設定:
比較特別的是 image_resource
的設定,雖然大多數情況都是使用 Docker 但是官方也預想到有其他情況,所以仍保留了對應其他情境的設計。
fly -t lite set-pipeline -p hello-world -c hello.yml
存檔後用 set-pipeline
指令上傳,到網頁介面 (要記得登入)就能看到 hello-world
這個工作了!
因為目前沒有觸發工作的設定,也不會自動啟動 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 檢查這個資源發現有差異的時候,就會自動啟動這個工作了。
關於資源的運作會在後面介紹,現在只要簡單了解資源和觸發的關係就可以了。
下一篇會介紹怎麼使用任務。