Drone 是一個輕量級的持續集成工具。它具有許多現代持續集成工具的特性:輕巧(Docker 鏡像不到 10M)、部署方便(docker-compose 一鍵部署)、經過 YAML 文件描述構建過程、內置支持主流的代碼託管平臺、使用 Docker 容器執行構建。 下面介紹如何使用 Drone 構建 Coding(平臺版/企業版)項目,實現開發、測試、部署的自動化。(介紹中使用的是 Coding 定製的 Drone,由於 Coding 的小夥伴們老是但願每時每刻都能見到可愛的洋蔥猴,這樣打起碼來特精神!^_^)git
一、新建一個 OAuth 應用。『應用主頁』填寫本身部署的 Drone 所在主機的 URL,如:https://example.com
;『回調地址』填寫 Drone 的回調地址,通常爲 Drone 主機加上/authorize
,如:https://example.com/authorize
。還能夠給這個應用添加醒目的圖標。最後點『建立應用』。 github
二、進入剛纔建立的應用,接下來要用到上面的『Client ID』和『Client Secret』。 docker
三、在要部署 Drone 的 Linux 主機裏安裝好 Docker 和 Docker-Compose,而後建立名爲docker-compose.yml
的 Docker-Compose 配置文件,內容以下:瀏覽器
version: '2' services: drone-server: image: houseboy/drone:20170512.1 restart: always volumes: - ./drone:/var/lib/drone/:rw environment: - DRONE_OPEN=true - DRONE_CODING=true - DRONE_CODING_CLIENT=<應用的 Client ID> - DRONE_CODING_SECRET=<應用的 Client Secret> - DRONE_CODING_URL=<Coding 主頁> - DRONE_CODING_GIT_MACHINE=<Coding Git 主機> - DRONE_SECRET=<drone-server 和 drone-agent 的通訊密鑰> ports: - "80:8000" drone-agent: image: houseboy/drone:20170512.1 command: agent restart: always depends_on: [ drone-server ] volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_SERVER=ws://drone-server:8000/ws/broker - DRONE_SECRET=<drone-server 和 drone-agent 的通訊密鑰>
主要環境變量的說明:工具
DRONE_CODING
要爲 true
。DRONE_CODING_CLIENT
填寫上一步獲得的『Client ID』。DRONE_CODING_SECRET
填寫上一步獲得的『Client Secret』。DRONE_CODING_URL
爲 Coding 主頁。平臺版填 https://coding.net
;企業版填企業對應的https://*.coding.net
子域名的 URL。DRONE_CODING_GIT_MACHINE
爲 Coding Git 主機。平臺版填 git.coding.net
;企業版填 e.coding.net
。DRONE_SECRET
爲隨機字符串,是用於 drone-server
和 drone-agent
之間的通訊,只要兩個都填寫同樣值便可。docker-compose 配置中的其餘內容請根據實際狀況填寫。測試
四、在建立 docker-compose.yml
的目錄裏執行 docker-compose up
,若上一步的配置正確,就能看到 Drone 啓動輸出的日誌: spa
五、用瀏覽器打開 Drone 所在主機的 URL .net
六、點擊登陸,跳轉至 Coding 的登陸頁面。若是已經登陸 Coding,則會看到『應用受權』頁面,這時點擊『受權』 rest
七、若受權成功,即會跳轉回 Drone 的首頁,並在右上角看到已登陸用戶的 Coding 頭像。 日誌
八、點擊頭像,選擇『用戶設置』,即可看到項目列表。
九、點擊對應項目右側的開關便可開啓和關閉該項目的 Drone 持續集成。
十、再次回到『儀表盤』便可以看到已開啓了 Drone 持續集成的項目。
十一、向已開啓 Drone 持續集成的倉庫推送代碼,便可觸發構建過程。
上述介紹中用到集成了 Coding 的 Drone 版本源碼發佈在 https://github.com/Coding/drone,同時已經向源倉庫 https://github.com/drone/drone 提交了 PR,代碼正在審覈中。同時歡迎有興趣的碼士提交 PR 助力完善 Drone 對 Coding 的集成支持。
有關 Drone 的更多使用幫助請查看官方文檔:http://docs.drone.io/