参考资料:

Drone 是一个基于 Docker 的持续部署系统,用 Go 语言编写。Drone 本身和所有插件都是镜像,易于使用。

安装

通过 docker-compose 配合 YAML 配置文件,可以方便的安装 Drone。

Drone 的 YAML 配置文件主要有两部分组成:

  • drone-server:Drone 服务器端,用来处理任务分发。可以通过 environment 指定环境变量来使用不同的版本控制系统。
  • drone-agent:Drone 代理客户端,用来执行自动化构建任务。从 0.8 开始,agent 与 server 使用 不同的镜像,官网的示例有误!!!通过增加 agent 容器实例,可以方便的横向扩展 Drone。

最新版本(0.8)的 Drone 配置文件有多处不兼容的地方,参考这里

下面是使用 GitHub 的 Drone 配置文件,对于 ${DRONE_HOST} 之类的参数请替换成你的:

version: '2'

services:
drone-server:
image: drone/drone:0.8 ports:
- 9080:8000
volumes:
- /var/lib/drone:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
- DRONE_HOST=${DRONE_HOST}
- DRONE_GITHUB=true
- DRONE_GITHUB_CLIENT=${DRONE_GITHUB_CLIENT}
- DRONE_GITHUB_SECRET=${DRONE_GITHUB_SECRET}
- DRONE_SECRET=${DRONE_SECRET} drone-agent:
image: drone/agent:0.8 command: agent
restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=drone-server:9000
- DRONE_SECRET=${DRONE_SECRET}

配置 Drone 和 GitLab

配置 GitLab

GitLab 跟 GitHub 一样,都是通过 OAuth2 认证第三方应用。

对于 GitLab,需要在用户设置(User Settings)页面中,为 Drone 注册 Applications。其中 Redirect URI 填写 Drone 对应的 <scheme>://<host>/authorize,例如 https://drone.kikakika.com/authorize。Drone 所需的权限比较多,所以在指定 Scopes 时,选择“api”。申请应用成功后,需要记下得到的 client id 和 client secret。

编写 Drone 的 docker-compose.yml 文件

Drone 通过 environment 指定的环境变量来配置版本控制系统。

version: '2'

services:
drone-server:
image: drone/drone:0.8 ports:
- 9080:8000 # 将主机的 9080 端口映射到 Drone 服务器的 8000 端口,可以直接通过主机的 9080 来访问 Drone
volumes:
- /var/lib/drone:/var/lib/drone/
restart: always
environment:
# true 表示允许注册,false 表示关闭注册功能,此时只有 DRONE_ADMIN 中指定的账户才能登录
- DRONE_OPEN=true
# Drone 外网地址
- DRONE_HOST=https://drone.kikakika.com
# 使用 GitLab
- DRONE_GITLAB=true
# GitLab 的 Client ID
- DRONE_GITLAB_CLIENT=95c0282573633eb25e82
# GitLab 的 Secret
- DRONE_GITLAB_SECRET=30f5064039e6b359e075
# GitLab 的 URL
- DRONE_GITLAB_URL=https://gitlab.kikakika.com
# Drone Server 和 Agent 的通信密钥,一个随机的长字符串
- DRONE_SECRET=${DRONE_SECRET} drone-agent:
image: drone/drone:0.8 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=${DRONE_SECRET}

GitLab 的所有相关参数解释如下:

DRONE_GITLAB=true                   # true 则表示使用 GitLab
DRONE_GITLAB_URL=https://xx.com # GitLab 服务器地址
DRONE_GITLAB_CLIENT # GitLab oauth2 Client ID
DRONE_GITLAB_SECRET # GitLab oauth2 Client Secret
DRONE_GITLAB_GIT_USERNAME # 可选,使用单一用户来克隆所有仓库,这个用户的用户名
DRONE_GITLAB_GIT_PASSWORD # 可选,使用单一用户来克隆所有仓库,这个用户的密码
DRONE_GITLAB_SKIP_VERIFY=false # true 则表示取消 SSL 检查
DRONE_GITLAB_PRIVATE_MODE=false # 如果 GitLab 以 private 私有模式运行,应设置为 true

配置 Nginx 反向代理

我的网站通过 Lets Encrypt 的通配符域名证书实现了全站 HTTPS,Nginx 中的 Drone 相关的配置如下:

upstream drone {
server localhost:9080 fail_timeout=0;
}
server {
listen 443 ssl;
server_name drone.kikakika.com; ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/kikakika.key;
ssl_session_timeout 5m; location / {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN; proxy_pass http://drone;
}
}
server {
listen 80;
server_name drone.kikakika.com; return 301 https://$host$request_uri;
}

访问网页

访问 Drone 网页时,首先会跳转到 GitLab 的授权页面,点击授权后,跳转回 Drone 网页,列表显示所有的仓库。我这里不知道为什么,仓库始终是空的,但是将 Drone 连接到我的 GitHub 账号是可以读取所有仓库的。可能是 GitLab 没有配置好的问题。

  • 授权页面:

  • GitHub 的仓库列表页面:

Drone - 安装,搭配 GitLab 下的配置和使用的更多相关文章

  1. Ubuntu16.04下安装搭配Python3.6相关配置软件方法

    1 安装Python3.6.4 此处推荐直接安装Anaconda3,来实现Python3.6.4的环境配置. Anaconda3下载链接:https://www.anaconda.com/downlo ...

  2. MySql 5.7.21免安装版本win10下的配置

    1.解压到想要安装的位置,创建my.ini文件 my.ini的内容如下 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设 ...

  3. CentOS 7下GitLab搭建及配置

    由于公司业务,需要上Git版本控制. * 目前市面上比较有名的Git服务提供商,国外有GitHub.BitBucket.GitLab,国内有码云,Coding. * 现有的服务商,对于免费的套餐都有一 ...

  4. Opencv 2.4.9在Ubuntu下的配置与安装

    [原]Opencv 2.4.9在Ubuntu下的配置安装  Opencv 2.4.9在Ubuntu下的配置与安装 surgewong@gmail.com http://blog.csdn.net/su ...

  5. windows+linux下jdk安装及java环境变量配置

    对于初学java的用户来说,可能第一件要做的事情就是安装jdk及配置环境,以下内容主要讲述windows及linux下jdk的安装以及环境变量的配置. 1.首先下载相应平台可用版本jdk安装文件,可以 ...

  6. memcached的安装和linux下memcached服务自启动的配置

    关于memcached在windows和linux环境的安装,以及在Linux系统系memcached服务自启动的配置,可以参考我在csdn上下的博客, windows和linux环境下memcach ...

  7. 基于Windows环境下Myeclipse10.0下载安装破解及jdk的下载安装及环境变量的配置

    jdk的安装及环境变量的配置 1.安装JDK开发环境 附上jdk安装包的百度云链接 链接:http://pan.baidu.com/s/1mh6QTs8 密码:jkb6(当然自行去官网下载最好哒,可以 ...

  8. Windows下的Python安装与环境变量的配置

    Windows下的Python安装与环境变量的配置 第一步:python下载: Python安装包下载地址:http://www.python.org/ 第二步:python安装: 双击下载包,进入P ...

  9. Linux下安装Python3的django并配置mysql作为django默认数据库(转载)

    我的操作系统为centos6.5 1  首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包 ...

随机推荐

  1. Python自学第二天学习之《元组与字典》

    一.  元组:tuple类型,元组一级元素 不能修改 不能增加 不能删除,是有序的. 格式 :tu=(1,2,3,4,5,6) 1.类型转换: #字符串转换成元组 b=“123” c=tuple(b) ...

  2. Keyboarding (bfs+预处理+判重优化)

    # #10030. 「一本通 1.4 练习 2」Keyboarding [题目描述] 给定一个 $r$ 行 $c$ 列的在电视上的"虚拟键盘",通过「上,下,左,右,选择」共 $5 ...

  3. Bloxorz I (poj3322) (BFS)

    [题目描述] It's a game about rolling a box to a specific position on a special plane. Precisely, the pla ...

  4. 问题 C: 序列交换

    问题 C: 序列交换 时间限制: 1 Sec  内存限制: 128 MB提交: 914  解决: 48[提交] [状态] [命题人:jsu_admin] 题目描述 给一个 1 到 n 的排列,每次可以 ...

  5. QT中使用Event Filter监听button事件,Release后button不见

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/27201043 问题RT,在程序中我使用 ...

  6. .net 关于路径的总结

    原文:https://www.cnblogs.com/hehehehehe/p/6196155.html https://www.cnblogs.com/yugongmengjiutian/artic ...

  7. 了解Greenplum (2)

    一.目的 1. 理解Greenplum中的数据分布策略(random 和 distribution),分析不同分布策略的优劣:2. 理解查询执行中的数据广播和数据重分布,分析在何种情况下选择哪种策略, ...

  8. Jenkins构建触发器(定时构建项目)

    如上图所示,Jenkins通常通过点击“立即构建”来进行手动构建项目,其实也可以使用配置中的 Poll SCM和Build periodically来进行定时自动构建项目: 在“配置”——>“构 ...

  9. sublime下载emmet

    Emmet是一款Web前端开发工具Sublime非常有用的插件,使用仿CSS选择器的语法来生成代码,大大提高了HTML和CSS代码编写的速度.只需按住Tab键即可把一个简写展开成HTML和CSS的代码 ...

  10. Django中ifequal 和ifnotequal的使用

    Django中{% ifequal A B %} 用来比较A和B两个值是否相等,{% ifnotequal A B %}` 用来比较A和B两个值是否不相等..如: {% ifequal user cu ...