
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/