iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 14
0

延續上一篇的內容,這一篇還會繼續討論建置計畫中的設定項。因為在 Concourse 之中,建置計畫算是攸關測試或者自動部署等功能的核心部分,所以也會相對的有較多的項目。

Put

get 相對的是 put 這個設定,使用 get 會將資源中的檔案加入到目前的工作目錄,而使用 put 則是讓這次任務生成的檔案被放放到資源中。

plan:
- get: repo-develop
- put: repo-master
  params:
    repository: repo-develop

以上面這個例子來看,就是將生成的檔案上傳到某個遠端的 Repository 上。而當資源被上傳後,會馬上透過 get 取得更新後的資源,並且讓後續的任務可以使用被更新過的資源。

也因此,設定上和 get 是大同小異的。不過有一個比較特殊的設定叫做 get_params 要注意。

get_params

因為在我們做 put 後,會馬上執行 get 動作把剛剛上傳的版本更新並且傳遞給後續的任務使用,所以我們可能會希望調整 get 動作的一些參數,此時就可以利用 get_params 來做設定。

Task

一個工作中的建置計畫該做哪些事情,就要交給任務的設定。而一個工作中如果裡面有任何任務是失敗的,那麼這個工作就是失敗的工作。

plan:
- get: my-repo
- aggregate:
  - task: go-1.3
    file: my-repo/go-1.3.yml
  - task: go-1.4
    file: my-repo/ci/go-1.4.yml

上面這個例子我們從一個資源開始,並且執行兩個任務。並且只有所有任務都成功的時候,這個工作的狀態才會被判定成成功的。

task (必要)

任務名稱,常會使用 unit 或者 integration 等名稱。

file / config (必要)

任務設定,兩者之中使用其中一個。 file 是將任務單獨寫在一個檔案,並且直接引用。而 config 則是直接寫在任建置計畫中的任務設定。

privileged

給予任務完整的權限,通常是設定為 false 的狀態。如果開啟的話可能會讓伺服器處於風險中,因為不會從原本隔離的方式執行,而是以實際上的使用者執行。

params

額外的參數,可以用來覆蓋透過 fileconfig 設定的執行任務參數。

plan:
- get: my-repo
- task: integration
  file: my-repo/ci/integration.yml
  params:
    REMOTE_SERVER: 10.20.30.40:8080
    USERNAME: my-user
    PASSWORD: my-pass

舉例來說,如果需要設定遠端使用者的話,我們可以在建置計畫中單獨設定並且共用這個任務的設定檔。

Aggregate

在前面幾個案例中我們經常會看到這個設定,而它的用途就是讓各個步驟同步執行。要注意的是,在其中的任一步驟出錯時,代表整個步驟都會是回傳錯誤的狀態。

舉例來說,我們可以同步執行多個任務。

plan:
- get: some-repo
- aggregate:
  - task: unit-windows
    file: some-repo/ci/windows.yml
  - task: unit-linux
    file: some-repo/ci/linux.yml
  - task: unit-darwin
    file: some-repo/ci/darwin.yml

也可以同步取得多個資源。

plan:
- aggregate:
  - get: component-a
  - get: component-b
  - get: integration-suite
- task: integration
  file: integration-suite/task.yml

Do

讓任務步驟依序執行,不過如果已經是在最頂層的步驟設定,就已經是依序執行的狀態。和 aggregate 搭配使用時可以讓多個步驟依序執行,而不會以同步的狀態方式運作。

下面是一個簡單的例子。

plan:
- aggregate:
  - task: unit
  - do:
    - get: something-else
    - task: something-else-unit

關於建置任務還有一小部分,會在下一篇介紹完畢。之後就會正式開始時做,用各種案例來練習 Concourse 的使用。


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

尚未有邦友留言

立即登入留言