Drone 是一套由 Go 語言所開發的開源碼專案,讓開發者可以使用 Docker Container 快速設定自動化測試及部署,上篇有提到『Cronjob 搭配 Drone 服務』,讓 Jenkins 或 GitLab CI 用戶可以轉換 Cron Job 任務到 Drone 上面。本篇則是會介紹如何透過 Drone 去觸發 Jenkins 或 GitLab CI 上的工作,當然這是過渡時期,希望大家最後能將工作完整移轉到 Drone 上面,不要再依靠 Jenkins 或 GitLab CI 了。本篇會教大家用三種方式來觸發 GitLab CI 或 Jenkins 任務。
- 使用 Drone CI/CD
- 使用 Docker 指令
- 使用 Command Line (命令列)
觸發 GitLab CI
不管是 GitLab CI 或是 Jenkins 都可以透過該服務提供的 HTTP API 來遠端觸發,而我用 Go 語言將觸發這動作寫成 Drone Plugin,讓 Drone 用戶可以不用自己寫 curl 去觸發。
申請專案 Token
要透過 HTTP API 去觸發任務,首先就是要申請專案 Token,請大家參考 Triggering pipelines through the API 頁面。申請完成後,請把專案 ID 跟 Token 帶入底下使用。
使用 Drone 觸發
其中 host
請改成公司內部的 Git 伺服器網址,id
是專案獨立 ID,最後 Token
則是上面步驟所拿到的 Token。詳細設定可以參考 README,如果不是用 Drone 也沒關係,可以用 Docker 或透過 Go 語言可以包成各作業系統執行檔 (包含 Windows)
使用 Docker 觸發
請使用 appleboy/drone-gitlab-ci 映像檔,檔案大小為 2MB
使用 CLI 觸發
請先從 Release 頁面下載相關執行檔,重點是你也可以在 Windows 做到此事情喔 (這就是 Go 語言跨平台的好處)。在命令列使用底下指令。
測試看看
這邊提供 GitLab 專案的資料給大家直接測試看看
上面指令沒意外的話,會看到底下結果:
直接到 pipeline 頁面看結果
歡迎大家關注此專案 drone-gitlab-ci
接著來講 Jenkins 部分,其實原理都跟 Gitlab CI 是一樣的。
觸發 Jenkins
這邊其實跟 GitLab CI 設定相同,只是參數不一樣而已,首先必須要去哪裡找個人 API Token,請到 Jenkins 個人頁面找到 API Token。
使用 Drone 觸發
其中 url
請改成公司內部的 Jenkins 伺服器網址,job
是 Jenkins 任務名稱,最後 Token
則是上面個人帳號所拿到的 Token。詳細設定可以參考 README,如果不是用 Drone 也沒關係,可以用 Docker 或透過 Go 語言可以包成各作業系統執行檔 (包含 Windows)
使用 Docker 觸發
請使用 appleboy/drone-jenkins 映像檔,檔案大小為 2MB
使用 CLI 觸發
請先從 Release 頁面下載相關執行檔,重點是你也可以在 Windows 做到此事情喔 (這就是 Go 語言跨平台的好處)。在命令列使用底下指令。
歡迎大家關注此專案 drone-jenkins
總結
寫這兩個 Plugin 的目的就是希望能有多點開發者從 Jenkins 或 GitLab CI 轉到 Drone,這是過渡時期,等熟悉了 Drone 的設定,你會發現 Drone 已經可以做到 Jenkins 或 GitLab CI 所有事情,甚至更強大。如果對 Drone 有興趣,可以來上七月底的『用一天打造團隊自動化測試及部署』
- 時間: 2017/07/29 09:30 ~ 17:30
- 地點: CLBC 大安館 (台北市大安區區復興南路一段283號4樓)
- 價格: 3990 元
報名連結
See also
- 開源專案 Drone CI/CD 平台真的免費嗎?
- Go 1.16 推出 Embedding Files
- 用 Docker 每天自動化備份 MySQL, Postgres 或 MongoDB 並上傳到 AWS S3
- 如何將前端網站打包成 Docker Image
- Go 1.15 新增 Module cache 環境變數
- 使用 Docker BuildKit 加速編譯 Image
- 用 GitHub Actions 上傳 Docker Image 到 AWS ECR
- Docker 推出官方 GitHub Actions 套件
- Go Modules 處理 Private GIT Repository 流程
- 用五分鐘安裝好 Drone 搭配 GitHub 自動化環境