延續上ㄧ篇,這篇會繼續討論 Pipeline 在執行工作上的設定。
在 Concourse 裡面,工作定義了 Pipeline 所需要執行的動做以及資源被處理的過程,和其他可見的部分。
以下是一個例子,來表示一個 Pipeline 中定義的工作。
jobs:
- name: atc-unit
plan:
- get: concourse
- task: unit
file: concourse/ci/atc.yml
jobs
接受的是一個陣列,這也表示每一個 Pipeline 是可以處理多項工作的。
每一個工作的設定都會帶有下面這些屬性。
工作的名稱,必須要做夠簡短因為會被當作是網址的一部份。
接受布林值,用來定義工作是序列執行還是平行執行的。沒有特別定義的情況下會平行的執行工作以減少運作時間。
要保留幾行建置的紀錄,由結尾開始計算。如果建置的紀錄並不重要,或者在一段時間後不重要,可以設定要保留的行數來減少儲存的紀錄。
和 serial
類似,但是可以進行分組,在同一組的工作會被依序執行。
下面是一個分組的例子。
jobs:
- name: job-a
serial_groups: [some-tag]
- name: job-b
serial_groups: [some-tag, some-other-tag]
- name: job-c
serial_groups: [some-other-tag]
上面 job-a
和 job-c
會一起執行,但是 job-b
會等其他人執行完畢後才能夠執行。在執行順序上對 Concourse 來說,先定義的任務會先被執行。
設定可以同時執行的工作數量,如果啟用的 serial
或者 serial_groups
的設定,那麼會被強制設定為 1
是否公開可見,這邊的公開是只「沒有認證的使用者」可見,所有建置紀錄等都能夠被訪客所看到。
在 Concourse 可以透過網頁介面或者指令觸發工作,如果這個工作不應該被手動觸發,可以將其設定為 true
來關閉這個功能。
當工作執行成功時要執行的動作。
跟 on_success
相同的設定,但是是在失敗時執行。
同上,不論成敗都會在每次工作執行完執行。
建置計畫,用來執行這個工作的主體。可以接受多個動作指令(一般會整理成成一個建置計畫)
一個 Pipeline 中可能會存在多個不同類型的群組,透過群組的設定可以把一些共通的資源設定提取出來共用,來減少重複的設定撰寫。
以下是一個簡單的群組範例。
groups:
- name: tests
jobs:
- controller-mysql
- controller-postgres
- worker
- integration
- name: deploy
jobs:
- deploy
在這個設定會讓網頁介面呈現兩個分頁,分別顯示 tests
和 deploy
兩個群組。當設定了群組後,我們必須確保所有的工作都被列在群組的設定中,否則我們會無法看到這一個工作。
群組的名稱,會作為網頁介面的分頁名稱所顯示,必須是簡短而且易於理解的。
在群組中的工作列表,一個工作可以被加入到多個群組裡面。
如果這個群組會共用某些資源,可以透過在群組中設定。如此一來,即使工作沒有明確指明使用哪些資源,也會被自動的設定給這些在群組中的工作。
關於 Pipeline 的設定就到此為止,下一篇會討論建置計畫。