iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 11
0

將工作和資源結合在一起,就能夠構成 Pipeline。

下面這張圖片是 Concourse 文件的範例,展示了工作和資源的關係。

http://ithelp.ithome.com.tw/upload/images/20161211/20065771f19zsgttkD.png

在 Concourse 的網頁介面中,黑色表示資源,綠色的則表示工作。並且會透過顏色來呈現目前的狀態,所以每一個節點都會有些許的顏色差異。透過圖像我們可以看到有 Worker 和 Controller 兩種資源,並且被 Worker Controller MySQL Controller Postgres 三個工作所取用,其中 MySQL 和 Postgres 都是從 Controller 資源取得的。

那麼,我們先來瞭解一下資源這個設定。

資源

resources:
- name: concourse
  type: git
  source:
    uri: https://github.com/concourse/concourse.git
    branch: master

上面的設定檔定義了一個叫做 concourse 的資源,類型是 git 當做出這樣的設定後,每當有新的 commit 被上傳的時候,所有取用這個資源的工作都會被觸發並且執行該版本對應的任務和處理。除了透過資源本身的更新之外,我們也能透過 put 動作在建置過程中更新資源。

每一個資源都擁有下列的屬性:

name (必要)

資源的名稱,在建置計畫中作為辨識資源的參考。

type (必要)

資源的類型,可以透過使用 resource_types 列舉自訂的資源,以內建的 git 類型為例,就是宣告這個資源是一個 git 的專案。

source

表明資源的位置,不過每一種資源類型都擁有不同的設定值,需要以資源類型來告知。以 git 類型為例,我們需要提供 uri 告知 git 專案的位置,以及 branch 來指定使用的 Branch 是哪一個。

大多數時候偷可以在對應資源類型的 README 檔案中找到可用的設定值。

check_every

檢查版本的頻率,Concourse 會定期去確認是否有新版本,預設值是 1m(每分鐘一次),可以用的設定值可以參考 time.ParseDuration 方法的說明。

資源類型

前面的章節已經提過在 Concourse 中並沒有插件的概念,而是透過資源來實現。想要拓展 Concourse 的功能就勢必要定義額外的自訂資源類型。

在 Concourse 裡面已經內建了大部分 CI 情境會使用到的資源類型,像是 Git, S3 等等。

不過有時候我們仍需要自訂資源來搭配專案的特殊需求。

我們先看一下一個官方的資源類型 jtarchie/pr 讓我們可以處理 Github 上面的 Pull Request。

resource_types:
- name: pull-request
  type: docker-image
  source:
    repository: jtarchie/pr

resources:
- name: atomy-pr
  type: pull-request
  source:
    repo: vito/atomy
    access_token: {{access-token}}

jobs:
- name: atomy-pr-unit
  plan:
  - get: atomy-pr
  - put: atomy-pr
    params:
      path: atomy-pr
      status: pending
  - task: unit
    file: atomy-pr/ci/unit.yml
    on_success:
      put: atomy-pr
      params:
        path: atomy-pr
        status: success
    on_failure:
      put: atomy-pr
      params:
        path: atomy-pr
        status: failure

自訂資源是可以複寫內建的資源類型的,假設內建的 git 資源類型並不合用,我們看透過自訂資源來覆寫。或者我們希望調整預設資源的設定值,也可以透過覆寫的方式來達成。

自訂資源實際上擁有的屬性跟資源的設定是相同的。

name (必要)

資源類型的名稱,用於定義資源時當作參考。

type (必要)

自訂資源的類型,用來定義這個資源的容器環境,大多數時候都是使用 docker-image 作為類型。

source

定義自訂資源的位置,和資源一樣是基於 type 指定的類型來決定該提供哪些參數。以 docker-image 為例,這個資源需要提供 repository 讓 Docker 可以找到對應的 Docker Image 來執行資源的動作。

關於自訂資源的實作會在後面的章節介紹到,下一篇會介紹 Pipeline 裡面工作跟群組的設定。


上一篇
10 - 任務 (2)
下一篇
12 - Pipeline (2)
系列文
不一樣的 CI/CD 工具:Concourse 初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言