從搭建至成功遇到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的存儲位置,把這個目錄映射出來方便今后配置)
- 首次登錄是需要配置域及端口不要按直接安裝的方式配置,一定要按你在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界面操作是不允許的:)
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. 編譯
- 首先需要在gogs創建一個代碼倉庫并在根目錄下創建一個".drone.yml"的文件(必須是這個名字)
- 測試配置
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
好吧,到此你就應該能看到項目編譯圖標轉了,來張成功的慶祝一下,呵呵
參考
備注一個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