iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 12
0

延續上ㄧ篇,這篇會繼續討論 Pipeline 在執行工作上的設定。

在 Concourse 裡面,工作定義了 Pipeline 所需要執行的動做以及資源被處理的過程,和其他可見的部分。

以下是一個例子,來表示一個 Pipeline 中定義的工作。

jobs:
- name: atc-unit
  plan:
  - get: concourse
  - task: unit
    file: concourse/ci/atc.yml

jobs 接受的是一個陣列,這也表示每一個 Pipeline 是可以處理多項工作的。

工作

每一個工作的設定都會帶有下面這些屬性。

name (必要)

工作的名稱,必須要做夠簡短因為會被當作是網址的一部份。

serial

接受布林值,用來定義工作是序列執行還是平行執行的。沒有特別定義的情況下會平行的執行工作以減少運作時間。

build_logs_to_retain

要保留幾行建置的紀錄,由結尾開始計算。如果建置的紀錄並不重要,或者在一段時間後不重要,可以設定要保留的行數來減少儲存的紀錄。

serial_groups

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-ajob-c 會一起執行,但是 job-b 會等其他人執行完畢後才能夠執行。在執行順序上對 Concourse 來說,先定義的任務會先被執行。

max_in_flight

設定可以同時執行的工作數量,如果啟用的 serial 或者 serial_groups 的設定,那麼會被強制設定為 1

public

是否公開可見,這邊的公開是只「沒有認證的使用者」可見,所有建置紀錄等都能夠被訪客所看到。

disable_manual_trigger

在 Concourse 可以透過網頁介面或者指令觸發工作,如果這個工作不應該被手動觸發,可以將其設定為 true 來關閉這個功能。

on_success

當工作執行成功時要執行的動作。

on_failure

on_success 相同的設定,但是是在失敗時執行。

ensure

同上,不論成敗都會在每次工作執行完執行。

plan (必要)

建置計畫,用來執行這個工作的主體。可以接受多個動作指令(一般會整理成成一個建置計畫)

群組

一個 Pipeline 中可能會存在多個不同類型的群組,透過群組的設定可以把一些共通的資源設定提取出來共用,來減少重複的設定撰寫。

以下是一個簡單的群組範例。

groups:
- name: tests
  jobs:
  - controller-mysql
  - controller-postgres
  - worker
  - integration
- name: deploy
  jobs:
  - deploy

在這個設定會讓網頁介面呈現兩個分頁,分別顯示 testsdeploy 兩個群組。當設定了群組後,我們必須確保所有的工作都被列在群組的設定中,否則我們會無法看到這一個工作。

name (必要)

群組的名稱,會作為網頁介面的分頁名稱所顯示,必須是簡短而且易於理解的。

jobs

在群組中的工作列表,一個工作可以被加入到多個群組裡面。

resources

如果這個群組會共用某些資源,可以透過在群組中設定。如此一來,即使工作沒有明確指明使用哪些資源,也會被自動的設定給這些在群組中的工作。

關於 Pipeline 的設定就到此為止,下一篇會討論建置計畫。


上一篇
11 - Pipeline
下一篇
13 - 建置計畫
系列文
不一樣的 CI/CD 工具:Concourse 初探30

尚未有邦友留言

立即登入留言