GitHub 專案跑自動化測試與部署:drone
這邊直接使用 Docker 的方式建立 drone 的環境。
下方的設定檔是 docker-compose.yml 的範例:
version: '2'
services:
drone-server:
image: drone/drone:latest
ports:
- 3000:8000 # 外層的port:drone server 的 port
- 9000:9000
volumes:
- ./data:/var/lib/drone # drone 的資料庫
restart: always
environment:
- DRONE_OPEN=true
- DRONE_HOST= {{}} # 實際對外的 HOST(使用者要連線的HOST) 範例:http://drone.a-wei.tw
- DRONE_ADMIN={{}} # 管理員的帳號(這裡是GitHub的帳號)
- DRONE_GITHUB=true
- DRONE_GITHUB_MERGE_REF=false
- DRONE_GITHUB_CLIENT= {{}} # 要自己新增一個 OAuh 的服務 https://github.com/settings/developers
- DRONE_GITHUB_SECRET={{}} # 要自己新增一個 OAuh 的服務 https://github.com/settings/developers
- DRONE_SECRET={{}} # 內部 drone server 的連線密碼 自己隨便設定
drone-agent:
image: drone/agent:latest
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock # 同步外層 docker 的服務
environment:
- DRONE_TIMEOUT=10m
- DRONE_MAX_PROCS=4
- DRONE_SERVER=drone-server:9000
- DRONE_SECRET={{}} # 內部 drone server 的連線密碼 自己隨便設定(要跟 Server 的一樣)
這裡是直接使用 docker-compose 將 drone 的 server 與 agent 連結起來。在建立容器前,請先到 GitHub 建立一支 OAuth APP 的服務讓 drone 可以去同步你帳號上所有的專案資訊,並在未來專案中有任何要請 drone 跑自動化時,都會需要這支 OAuth APP。
要注意在建立 GitHub 的 OAuth APP,會要求設定一個能連線到 drone 服務的網址(自架的),請務必要填寫能對外連線的網址。
當服務正常啟動後,我們可以在 htttp://$host:3000,訪問 drone 的服務。
順帶一提
這裡可以使用 Nginx 這樣類型的 Web server 幫我們走 80 port,並且讓它可以走 domain 的方式訪問。