Drone+Github搭建自动化流水线
一、前言
最近开始写一个自用网盘的小项目,准备会一直去做维护更新,正好去了解下这个做CI/CD的整个流程,随便记录下第一次搭建过程
二、查看官网
第一步的话还是先看看Drone的官方文档,地址:https://docs.drone.io/
在上面看的到有结合Github的安装向导,打开就可以按照上面进行。
三、工具准备
首先是需要安装docker,我这里会使用docker-compose进行编排,所以需要安装docker-compose
3.1 准备docker
1 |
|
我这边已经安装了,没安装使用下面命令进行安装
1 | # 安装 |
其他关于docker的了解,可以看这篇 https://yournotes.cn/2021/08/01/Docker%E5%9F%BA%E7%A1%80/
3.2 准备docker-compose
这里只介绍一个安装方式,也是比较方便快捷的。直接本地到github选择docker-compose版本
地址:https://github.com/docker/compose/releases
1 | sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
选择版本修改指令里的版本号即可(1.29.2),也可直接下载传到服务器
1 | # 赋予执行权限 |
四、环境准备
使用docker-compose安装Drone之前,先准备Drone服务的域名这个需要在配置Github认证的时候写入,只有这样在搭建好后域名访问Drone才会触发Github认证。
4.1 配置Drone服务域名
我这边就添加个drone.yournotes.cn的解析。
4.2 配置Github认证
在设置里面有个开发者设置选中,
在OAuth Apps当中即可配置认证应用,我这边已经添加了
打开New OAuth App里面就几样东西
注册之后会有Client ID与Client secrets,复制保存下来之后在配置Drone会用
4.3 配置RPC密钥
这个是Drone的runner与server交互需要配置的,通过openssl rand -hex 16
指令生成密钥,在之后两边配置一样即可
五、开始安装
先截取文档上的安装方式,如下图。它是使用docker进行拉取镜像然后带环境变量启动。下面我这边就用docker-compose进行统一编排。
Server安装
Runner安装
按照文档上这样也可以,分别用docker启动配置好服务地址、密钥等必备的参数。
我这边使用docker-compose,下面分别是.env文件与docker-compose.yml文件。把里面要配置的单独拿出来做了个环境变量的文件.env
将.env文件配置好,再把两个文件传入服务器在同一个文件夹下 执行docker-compose up -d
启动即可
1 | # .env |
1 | # docker-compose.yml |
六、简单测试
按照上面成功启动Drone,接下来就可以访问看看了。我这边配置的http是10081端口。所以得加上端口号,注意阿里云上的安全组也要把这些端口放开。
首次访问应该是如上图,再选中继续就可进行GitHub认证,GitHub认证后会返回到之前在GitHub上填写的地址
因为我这边是10081端口,因此这里得写成 drone.yournotes.cn:10081/login
,否则就找不到了
这里选一个项目开启自动流水线,点击一个项目,进入如下页面点保存即可,它将在code仓库配置webhook,当代码仓库更新时会自动执行.drone.yml下的指令
保存后,我们在代码仓库添加一个.drone.yml的文件,做一个简单的在控制台打印hello world的操作
steps下就是安排的步骤,使用的镜像是alpine(一个轻量的Linux),使用这个linux执行了echo指令。
之后是做自动化的打包部署,因此步骤会有多个,也会用到maven镜像等,这里只是简单测试下,是否会执行安排的指令。
不出意外的话我们把文件提交,drone流水线就开始自动进行了
第一步就是clone代码,第二步就是在steps的第一个步骤greeting(alpine执行两个echo)