iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 6
0
DevOps

不一樣的 CI/CD 工具:Concourse 初探系列 第 6

06 - 用 Fly 控制 Concourse

  • 分享至 

  • xImage
  •  

雖然 Concourse 提供了網頁介面,但是最多只能啟動工作或者檢視運作狀態。而實際上的管理、建立 Pipeline 等,都需要透過名為 fly 的指令工具。

安裝

Fly 的安裝並沒有特別的方法,只要將 Concourse Github 頁面上對應的二進位檔下載下來即可。

在 Mac 或者 Linux 上下載後需要對這個檔案增加執行的權限,可以透過 chmod +x fly_drawin_amd64 的方式來實行。

為了方便起見,可以把檔案放到 /usr/local/bin 之類的地方,並且重新命名成 fly 方便之後使用。

指令

因為 Fly 是操作所有 Concourse 功能的工具,所以也包含了非常多的指令。

  • login: 登入 Concourse 伺服器
  • targets: 列出目前的目標(設定的伺服器)
  • sync: 更新本機目前的 fly 和伺服器同步
  • set-team: 新增或修改團隊
  • destroy-team: 刪除團隊
  • execute: 執行一個本機指令(不用設定 Pipeline)
  • pipelines: 列出目前的 Pipeline
  • rename-pipeline: 重新命名 Pipeline
  • pause-pipeline: 暫停 Pipeline 運作
  • unpause-pipeline: 恢復 Pipeline 運作
  • expose-pipeline: 讓 Pipeline 可以被公開檢視(無須登入)
  • hide-pipeline: 隱藏 Pipeline 顯示
  • get-pipeline: 取得 Pipeline 的設定
  • set-pipeline: 設定 Pipeline 的設定
  • destroy-pipeline: 刪除 Pipeline
  • trigger-job: 觸發工作運行
  • pause-job: 暫停某個工作運作
  • unpause-job: 恢復某個工作運作
  • check-resource: 檢查某個 Resource 的新版本
  • pause-resource: 暫停 Resource 的自動檢查
  • unpause-resource: 恢復 Resource 的自動檢查
  • builds: 顯示建置紀錄
  • abort-build: 停止某個工作的建置
  • containers: 顯示運行中的容器
  • intercept: 取的目前運行中或者最近的建置狀況
  • watch: 檢視進行中的建置紀錄
  • workers: 顯示可用的 Worker
  • volumes: 顯示啟用中的容器
  • checklist: 生成 Checkman 用的設定檔

礙於篇幅的關係,筆者只會介紹比較關鍵的幾個指令。其他的指令會依照後續文章的使用情況再額外做介紹。

Login

使用 Fly 指令必須先登入 Concourse 伺服器才行,所以我們首先要學會如何使用 login 指令。

fly --target example login --team-name my-team \
    --concourse-url https://ci.example.com

基本使用其實很簡單,只要指定 targeturl 即可。

  • --target, -t : Concourse 伺服器的名稱
  • --team-name, -n : 團隊名稱(預設為 main)
  • --concourse-url, -c :伺服器位址
  • --ca-cert :憑證位置(伺服器使用未認證的 SSL 憑證時指定)

設定完畢後,會儲存在 ~/.flyrc 這個檔案中,也就是下次登入時只要使用 fly -t example login 就可以了。

要注意的是 Concourse 伺服器所發放的 Token 會在一天後過期,所以每天都需要重新登入。

Set Pipeline

僅次於登入的就是 set-pipeline 這個指令,大多數時候只要能使用 set-pipline 指令就能完成大部分的操作。

fly -t example set-pipeline --config pipeline.yml --pipeline my-pipeline
  • --target, -t:伺服器的名稱,登入時設定
  • --config, -c:Pipeline 的設定檔
  • --pipeline, -p:Pipeline 的名稱
  • --var:設定變數(像是 Private Key 之類的不應該被公開顯示)
  • --load-vars-from:同上,只是改由設定檔讀取

每個指令都必須設定 target 參數,這是 Concourse 為了避免對錯誤的伺服器下指令的設計,雖然有點不方便但是也是為了避免人工失誤

Pause/Unpause Pipeline

一開始設定完畢 Pipeline 之後,是處於暫停的狀態,我們需要用 unpause-pipeline 來啟動這個 Pipeline。

fly -t example pause-pipeline --pipeline my-pipeline
fly -t example unpause-pipeline --pipeline my-pipeline

以上就是三個最常用的指令,大多數時候的操作都只會用到這些。

縮寫

雖然很難記憶,不過每次下指令都要打很長一串也是有點吃力的。
所以 Concourse 提供了縮寫的指令,方便大家操作。

不過筆者個人認為指令還是太多了,記不起來⋯⋯

  • login => l
  • targets => ts
  • sync => s
  • set-team => st
  • destroy-team => dt
  • execute => e
  • pipelines => ps
  • rename-pipeline => rp
  • pause-pipeline => pp
  • unpause-pipeline => up
  • expose-pipeline => ep
  • hide-pipeline => hp
  • get-pipeline => gp
  • set-pipeline => sp
  • destroy-pipeline => dp
  • trigger-job => tj
  • pause-job => pj
  • unpause-job => uj
  • check-resource => cr
  • pause-resource => pr
  • unpause-resource => ur
  • builds => bs
  • abort-build => ab
  • containers => cs
  • intercept => i
  • watch => w
  • workers => ws
  • volumes => vs
  • checklist => cl

不過 Fly 指令的縮寫還算好記,大多是字母的開頭。碰到複數時後面補上 s 就可以了!

下一篇文章會討論設定團隊跟登入的方式設置。


上一篇
05 - 建置環境 (2)
下一篇
07 - 團隊與認證
系列文
不一樣的 CI/CD 工具:Concourse 初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言