天天看點

Screwdriver 開源持續傳遞平台體驗之旅

Screwdriver 開源持續傳遞平台體驗之旅

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 目錄中。

腳本輸出截圖如下:

Screwdriver 開源持續傳遞平台體驗之旅

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

Screwdriver 開源持續傳遞平台體驗之旅

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

打開 Screwdriver web 界面,截圖如下:

Screwdriver 開源持續傳遞平台體驗之旅

登陸并建立第一個 Pipeline

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

Screwdriver 開源持續傳遞平台體驗之旅

建立 Pipeline,隻需要填寫 git 位址,我這裡 fork 了官方用于示範的倉庫( https://github.com/screwdriver-cd-test):

Screwdriver 開源持續傳遞平台體驗之旅

點選 Start 啟動流水線,運作截圖如下:

Screwdriver 開源持續傳遞平台體驗之旅

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 運作情況截圖如下:

Screwdriver 開源持續傳遞平台體驗之旅

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

Screwdriver 開源持續傳遞平台體驗之旅

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

Screwdriver 開源持續傳遞平台體驗之旅

Pipeline 上下遊遠端觸發(job B 需要外部 Pipeline 觸發),Pipelibe 運作情況截圖如下:

Screwdriver 開源持續傳遞平台體驗之旅

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

Screwdriver 開源持續傳遞平台體驗之旅

豐富多彩的 Loading... 提示語

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

Screwdriver 開源持續傳遞平台體驗之旅
Screwdriver 開源持續傳遞平台體驗之旅
Screwdriver 開源持續傳遞平台體驗之旅

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/