Gogs 是由 Go 语言编写的 Git 服务器,由中国人主导开发的一款开源项目,搭建方便并且拥有完善的中文文档,配合 Drone 可以实现持续集成/持续部署。本文介绍如何通过 Docker 搭建 Gogs+Drone 环境。
环境
- MacOS
- Docker && docker-compose
部署
1. 创建目录(不是必须的,可以放在任何目录里面)
mkdir cicd
cd cicd
mkdir gogs drone # 存放相关数据
2. 编写 docker-compose.yaml
version: "2"
services:
gogs:
container_name: gogs
image: gogs/gogs:0.11.86
ports:
- 3000:3000
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
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./drone/:/var/lib/drone
environment:
- DRONE_OPEN=true
- DRONE_SERVER_HOST=drone-server:80
- DRONE_DEBUG=true
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_GOGS=true
- DRONE_GOGS_SKIP_VERIFY=false
- DRONE_GOGS_SERVER=http://${IP}:3000
- DRONE_PROVIDER=gogs
- DRONE_SERVER_PROTO=http
- DRONE_RPC_SECRET=7b4eb5caee376cf81a2fcf7181e66175
- 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_RPC_SERVER=${IP}:8000
- DRONE_RPC_SECRET=7b4eb5caee376cf81a2fcf7181e66175
- DRONE_RUNNER_CAPACITY=2
- DRONE_DEBUG=true
- TZ=Asia/Shanghai
restart: always
在当前目录下创建 .env 文件,内容根据实际情况填写
IP=192.168.1.1
ACCOUNT=xxx
3. 运行
docker-compose up -d
待启动完成之后,访问Gogs,进入安装界面
数据库类型按照实际环境选择,本文采用 SQLite3 方式。将域名和应用 URL 中的 IP 换成本地 IP,然后安装,其余不用修改,安装成功之后,注册账号,账号填写 .env 文件中配置的账号
注册的账号同样可以在Drone中登录。
4. 测试
创建一个 demo 项目并提交到 git 仓库,登录Drone,同步并激活仓库
添加.drone.yml 文件,内容如下
kind: pipeline
name: greeting
steps:
- name: demo
image: alpine
commands:
- echo Hello World
Drone 平台查看构建结果