Gogs 是由 Go 語言編寫的 Git 伺服器,由中國人主導開發的一款開源項目,搭建友善并且擁有完善的中文文檔,配合 Drone 可以實作持續內建/持續部署。本文介紹如何通過 Docker 搭建 Gogs+Drone 環境。
環境
linux
Docker && docker-compose
部署
- 建立目錄(不是必須的,可以放在任何目錄裡面)
mkdir drone
cd drone
mkdir gogs drone # 存放相關資料
- 編寫 docker-compose.yaml
version: "2"
services:
gogs:
container_name: gogs
image: gogs/gogs:0.11.86
ports:
- 3000:3000
#- 22:22
volumes:
- ./gogs/data:/data
environment:
- TZ=Asia/Shanghai
restart: always
drone-server:
image: drone/drone:1.2.1
container_name: drone-server
ports:
- 8000:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./drone/:/var/lib/drone
environment:
- DRONE_DEBUG=true
- DRONE_OPEN=true
- DRONE_LOGS_TRACE=true
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_AGENTS_ENABLED=true
- DRONE_SERVER_HOST=drone-server
- DRONE_SERVER_PROTO=http
- DRONE_RPC_SECRET=${SECRET}
- DRONE_PROVIDER=gogs
- DRONE_GOGS=true
- DRONE_GOGS_SKIP_VERIFY=false
- DRONE_GOGS_SERVER=http://gogs:3000
- DRONE_USER_CREATE=username:${ACCOUNT},admin:true
- DRONE_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite
- DRONE_DATABASE_DRIVER=sqlite3
- TZ=Asia/Shanghai
restart: always
drone-agent:
image: drone/agent:1.2.1
container_name: drone-agent
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_DEBUG=true
- DRONE_MAX_PROCS=5
# 内部配置設定ip
- DOCKER_HOST=tcp://docker-bind:2375
- DRONE_RPC_SERVER=http://drone-server:80
- DRONE_RPC_SECRET=${SECRET}
- TZ=Asia/Shanghai
restart: always
docker-bind:
image: docker:dind
privileged: true
command: --storage-driver=overlay
在目前目錄下建立 .env 檔案,内容根據實際情況填寫
account 注意:gogs安裝過程中會有新增賬號,注意這個賬号和這個要相同
SECRET=123456
ACCOUNT=xxx
-
運作
docker-compose up -d
待啟動完成之後,通路Gogs(ip/域名:3000),進入安裝界面
Install
資料庫類型按照實際環境選擇,本文采用 SQLite3 方式。将域名和應用 URL 中的 IP/域名 換成本地 IP/域名,然後安裝,其餘不用修改,安裝成功之後,新增賬號
賬号填寫 .env 檔案中配置的賬号
注冊的賬号同樣可以在Drone(ip/域名:8000)中登入。
-
測試
建立一個 demo 項目并送出到 git 倉庫,登入Drone,同步并激活倉庫
回到gogs,點選倉庫設定->管理web鈎子,此時自動生成了一個鈎子,測試
在你的項目根目錄,添加.drone.yml 檔案,
并寫入内容如下
kind: pipeline
name: greeting
steps:
- name: demo
image: alpine
commands:
- echo Hello World
注意,沒有.drone.yml檔案,web鈎子測試将會失敗
另附參考:
https://segmentfault.com/a/1190000023161472
後記:推送是已經沒問題了,可是drone的ACTIVITY FEED
的記錄始終是pending狀态,百度了下,資料少的可憐,暫時沒解決!法克爾!!!