Drone 是一套基於
Docker Container 技術的 CI/CD 服務,它是用
Go 語言所開發,可以安裝在任何作業系統內,你可以把 Drone 當作是開源版的
Travis 服務。Drone 本身不支援排程任務,也就是說無法像 Jenkins CI 一樣可以設定每天幾點幾分執行單一 Job 任務。但是可以透過第三方工具像是
cron
來整合 Drone API 達成自動排程的效果,底下來看看該如何實作。
安裝 Drone CLI
Drone 提供 CLI 工具,讓開發者可以快速跟 Drone 服務溝通,底下兩種方式來安裝 Drone CLI。從官網找相對應作業系統的
執行檔
- Linux x64
- Windows x64
- Darwin x64
另外一種方式則是透過
go get
方式來安裝,前提是您必須要安裝
Go 語言環境。
$ go get github.com/drone/drone-cli/drone
Drone CLI 教學
下面指令是透過 CLI 呼叫 Drone 執行指定的專案 Job Number。如果沒有提供 Number 編號,則是執行該專案最後一個 Build Number。
$ drone build start --fork <repository> <build>
--fork
代表啟動
新的任務,並非是重新啟動該編號任務。下面指令則是根據專案 Branch 名稱得到最後 Build Number。
$ drone build last --format="{{ .Number }}" \
--branch=<branch> <repository>
拿到最後一個 Number 後,就可以開始寫 Cron job 任務
整合 cron job
從上面教學可以知道如何透過 Drone CLI 拿到專案最後執行的 Job 任務編號,以及如何重新執行專案任務,這時我們可以將指令合併成一行,變且寫進
crontab -e
檔案內
* 22 * * * drone build start --fork octocat/hello-world \
$(drone build last --format="{{ .Number }}" \
--branch=master octocat/hello-world)
將
branch
及
octocat/hello-world
換成您的專案名稱即可。
結論
用 crontab + drone cli 就可以完成 Jenkins 可以做到的事情。這樣真的可以完全捨棄 Jenkins 了。如果大家對 Drone 有興趣,想更深入了解,可以來報名『
用一天打造團隊自動化測試及部署』,此課程會在一天內帶您進入自動化測試及部署,想從 Jenkins 或 GitLab CI 轉換到 Drone 的,歡迎報名參加。
- 時間: 2017/07/29 09:30 ~ 17:30
- 地點: CLBC 大安館 (台北市大安區區復興南路一段283號4樓)
- 價格: 3990 元
Related
Pingback: Drone 自動觸發 GitLab CI 或 Jenkins 任務 | 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY()