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 服務的網址(自架的),請務必要填寫能對外連線的網址。
GitHub 專案跑自動化測試與部署:drone
當服務正常啟動後,我們可以在 htttp://$host:3000,訪問 drone 的服務。

順帶一提

這裡可以使用 Nginx 這樣類型的 Web server 幫我們走 80 port,並且讓它可以走 domain 的方式訪問。