Screwdriver 開源持續交付平台體驗之旅
- 2020 年 3 月 3 日
- 筆記

Screwdriver 是一個為持續交付而設計的開源的構建平台。
其主要開發語言是 JavaScript。
2020年2月19日,CDF(持續交付基金會) 宣布 Screwdriver 作為 CDF 的第一個孵化項目加入 CDF。
在看到這個新聞時,對 Screwdriver 充滿好奇,於是在本地體驗了下 Screwdriver。
官方對於 demo 體驗,提供了開箱即用的友好方式(SD-In-a-box),讓我們開始 Screwdriver 體驗之旅吧~
本地安裝 Screwdriver
最低要求:
- Python 2.7
- 適用於Mac的Docker 1.12+
- Docker Compose 1.8.1+
- Mac OSX 10.10以上
在終端中運行以下命令,以在本地啟動一個 Screwdriver 集群。
python <(curl -L https://git.io/sd-in-a-box)
該命令將運行一個腳本,該腳本將在本地創建一個 Docker Compose 文件,並使用生成的 JWT 和用戶提供的 Oauth 客戶端 ID 和密碼以 Oauth 憑據完成。如果選擇 yes,則 Docker 隨後將拉取 Screwdriver API,UI 和日誌存儲鏡像,以在本地調出整個 Screwdriver 實例。寫入資料庫的所有數據都將存儲在 data 目錄中。
腳本輸出截圖如下:

拉取 docker 鏡像相對比較花時間,等出現下面截圖中的 Lanuched!說明安裝成功。

要注意的是:如果 ip 發生變化,需要更新 dokcer-compose.yml 和 SCM OAuth 應用;In-a-box 不支援 Webhook(包括 PullRequest )觸發構建。
打開 Screwdriver web 介面,截圖如下:

登陸並創建第一個 Pipeline
登陸之後,可以看到頂端導航欄有三列:Collections、Tools 以及 Create Pipeline 按鈕,截圖如下:

創建 Pipeline,只需要填寫 git 地址,我這裡 fork 了官方用於演示的倉庫( https://github.com/screwdriver-cd-test):

點擊 Start 啟動流水線,運行截圖如下:

Screwdriver 特性體驗
在 Screwdriver 中,如果要創建 Pipeline,只需要填寫 git 倉庫地址,在 git 倉庫需要包含一個文件:screwdriver.yaml
關於 screwdriver.yaml 的說明,請參考: https://docs.screwdriver.cd/user-guide/configuration/index
在這個文件中有 jobs、steps 等區塊,工作流中定義了這些 job 的執行順序。
工作流功能比較強大:
- 支援 job 串列
- 支援 job 並行
- 支援 job 獨立運行
- 支援 Pipeline 上下游遠程觸發(Remote Trigger)
- 支援參數化構建
此外,還支援與 Slack、SonarQube 等集成
下面對上述場景截圖說明
job 串列(A—>B—>C),Pipelibe 運行情況截圖如下:

job 並行(B、C 並行),Pipelibe 運行情況截圖如下:

job 獨立運行(job B 獨立於 Pipeline 運行,需要手動觸發),Pipelibe 運行情況截圖如下:

Pipeline 上下游遠程觸發(job B 需要外部 Pipeline 觸發),Pipelibe 運行情況截圖如下:

參數化構建,Pipelibe 運行情況截圖如下:

豐富多彩的 Loading… 提示語
此外,使用過程中發現 Loading.. 無處不在,並且 Loading 時間稍微有點延遲,比較有點意思的是 Loading.. 下方提示語豐富多彩



Screwdriver 資源
了解 Screwdriver 更多資訊,請訪問:
- Screwdriver 首頁: https://screwdriver.cd/
- Screwdriver 文檔: https://docs.screwdriver.cd/
- Screwdriver GitHub: https://github.com/screwdriver-cd
- Screwdriver Slack: https://screwdriver-cd.slack.com/


