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 元