synology+gogs+drone搭建CI環境

從搭建至成功遇到N個坑,在這里記錄下來,希望大家能順利搭建。
我的運行環境:

#synology DS716+II
#系統 Docker版本
Client:
 Version:      1.11.2
 API version:  1.23  #這就是坑一 :)
 Go version:   go1.8
 Git commit:   5be46ee-synology
 Built:        Fri May 12 16:36:47 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.8
 Git commit:   5be46ee-synology
 Built:        Fri May 12 16:36:47 2017
 OS/Arch:      linux/amd64

1.gogs環境搭建

這個沒什么可說的,登錄synology的web界面在docker下的注冊表直接搜索下載最新版本的gogs就可以。我這里能用drone做CI的項目不多,所以沒有用mysql等‘大型數據庫’。
*這里需要注意的有兩點:
1.配置中增加卷:本地存儲位置:/data (后面這個data是docker中gogs的存儲位置,把這個目錄映射出來方便今后配置)

  1. 首次登錄是需要配置域及端口不要按直接安裝的方式配置,一定要按你在docker設置端口去配置!同時不要將127.0.0.1或localhost做為配置信息填寫,否則你就等著排錯吧。如果出現登錄不上或是無法克隆,找到你的gogs/conf/app.ini文件對比下面這一段排錯
[server]
DOMAIN           = 192.168.123.202
HTTP_PORT        = 3000 #這個3000是在docker下設置的3000你可以改成任意端口
ROOT_URL         = http://192.168.123.202:3000/
DISABLE_SSH      = false
SSH_PORT         = 8022
START_SSH_SERVER = false
OFFLINE_MODE     = false

2.ssh登錄synology

這里先說一下為什么這么做。原因是drone啟動agent時需要直接映射/var/run/docker.sock,直接在web界面操作是不允許的:)

如何SSH登錄synology

docker run -d --name drone-server --restart=always \
  -e DRONE_OPEN=true \
  -e DRONE_GOGS=true \
  -e DRONE_GOGS_URL=http://192.168.123.202:3000 \
  -e DRONE_SECRET=myserver123 \
  -e DOCKER_API_VERSION=1.23 \
  -p "18000:8000" -v /volume1/docker/drone/:/var/lib/drone/ \
  drone/drone:0.7
docker run -d \
  -e DRONE_SERVER=ws://192.168.123.202:18000/ws/broker \
  -e DRONE_SECRET=myserver123 \
  -e DOCKER_API_VERSION=1.23 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --restart=always \
  --name=drone-agent \
  drone/drone:0.7 agent

一定要加入下面這個參數:

-e DOCKER_API_VERSION=1.23 \

否則會報 Error response from daemon: client is newer than server (client API version: 1.26, server API version: 1.23)錯誤.來張特寫:

查了半天才知道原來是docker 1.12及以下版本會出此類錯誤,需強制指定api版本號來處理。Synology下的DOCKER無法升級,無法降級(好吧,我懶沒查到,可能有別的辦法)就用這種辦法來處理了。

3.登錄drone并配置

登錄的用戶名密碼就是gogs建立的賬號名稱和密碼,并可以進行一些個性化配置

4. 編譯

  1. 首先需要在gogs創建一個代碼倉庫并在根目錄下創建一個".drone.yml"的文件(必須是這個名字)
  2. 測試配置
workspace:
  base: /go
  path: src/test/demo  # test/demo是你的倉庫名稱
  
pipeline:
  build:
    image: golang
    commands:
      - go get
      - go build
      - go test
services:  #可以不用service進行測試
  mongo:
    image: mongo

加點代碼后push上去就能啟動了

  • git add *是不會把.drone.yml文件上傳到git上的,需要執行(對自己太自信了,在這里愣憋了半天:( )
git add .drone.yml

好吧,到此你就應該能看到項目編譯圖標轉了,來張成功的慶祝一下,呵呵

參考

  1. http://docs.drone.io/
  2. Drone Gogs自動構建
  3. janstuemmel/gogs-drone
  4. BastienM/gogs-drone-compose

備注一個docker-compose.yml

version: '2'

services:
  drone-server:
    image: drone/drone:0.7
    ports:
      - 8000:8000
    volumes:
      - /var/lib/drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=http://192.168.31.204:8000
      - DRONE_GOGS=true
      - DRONE_GOGS_URL=http://192.168.31.204:3000/
      - DRONE_SECRET=mytest123

  drone-agent:
    image: drone/drone:0.7
    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=mytest123

版權印為您的作品印上版權41387789

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • Docker — 云時代的程序分發方式 要說最近一年云計算業界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,619評論 15 147
  • Drone 是一個輕量級,為容器構建的強大的持續交付平臺。drone提供的功能感覺強大而不臃腫,下面就記錄一下dr...
    YiQinGuo閱讀 7,058評論 0 2
  • 關于狗狗是人類好朋友這類的話早就不多見了,我是那種看見狗狗無論它臟不臟,丑不丑,我都很小的人。狗狗有一個屬于它們自...
    七天等你閱讀 968評論 0 1
  • 什么導致我們遺失了自己最初的夢想, 是課桌上鋪滿的亂糟糟的紙張? 是對現實的逃避躲藏, 還是邁向世俗的流浪? 亦或...
    蔣小志jxz閱讀 701評論 5 6