Linux基于gitlab搭建Drone CI自动集成,图文详细教程

Linux基于gitlab搭建Drone CI自动集成,图文详细教程drone跟Jenkins一样,可实现持续集成,就是可以帮助我们解决重复的代码构建,自动化测试,发布等重复劳动,通过简单一个提交代码的动作,解决

大家好,欢迎来到IT知识分享网。

drone简介:

drone官方文档: https://docs.drone.io/

drone跟Jenkins一样,可实现持续集成,就是可以帮助我们解决重复的代码构建,自动化测试,发布等重复劳动,通过简单一个提交代码的动作,解决接下来要做的很多事。

Drone是一种基于容器技术的连续运输系统,所以安装也是基于docker安装。

相对于Jenkins,Jenkins虽然有1000多种插件可实现复杂的功能,所以操作部署也是同样的复杂。

而drone,短小精悍,部署简单,比 Jenkins 语法简单,更加适合 云原生应用。

一:gitlab设置

gitlab搭建参考:Linux安装gitlab、docker安装gitlab教程

在Applications选项填写Name 和 Redirect URI,Name取个好记得即可。

Redirect URI 为搭建drone的地址,后面需要以login结尾。

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

scopes根据自己选择,最后Save applications即可

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

保存后,记下相关信息,安装drone会用到。

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

二:docker安装drone Server和Runner

drone有个Server和Runner(Agent)的概念,我们先来理解下:

Server:为Drone的管理提供了Web页面,用于管理从Git上获取的仓库中的流水线任务。

Runner(Agent):一个单独的守护进程,会轮询Server,获取需要执行的流水线任务,之后执行。

drone-runner不是必选的,官方不推荐把runner和server安装在一个实例上

先生产共享密钥,用于连接Server和Runner之间,两者需一致。

1:运行drone Server

$ openssl rand -hex 16
1d8ae98e6fd61c91b2e7dad6775ca771

拉取镜像,docker运行drone Server

#拉取镜像
docker pull drone/drone
#运行
docker run \
  --volume=/var/lib/drone:/data \
  --env=DRONE_AGENTS_ENABLED=true \
  --env=DRONE_GITLAB_SERVER=http://192.168.152.131 \
  --env=DRONE_GITLAB_CLIENT_ID=6873788c9b46a5c4faf49a2ea1ebaf9c8683d43371c4ec7bca8a2b1429d35165 \
  --env=DRONE_GITLAB_CLIENT_SECRET=b0fb674c1c00a48eea472281ad4c99609ea29fe66a3684e7ca5341385ab3f89f \
  --env=DRONE_SERVER_HOST=192.168.152.132 \
  --env=DRONE_SERVER_PROTO=http \
  --env=DRONE_TLS_AUTOCERT=false \
  --env=DRONE_LOGS_DEBUG=true \
  --env=DRONE_RPC_SECRET=1d8ae98e6fd61c91b2e7dad6775ca771 \
  --env=DRONE_USER_CREATE=username:root,admin:true \
  --publish=80:80 --publish=443:443 \
  --restart=always \
  --detach=true \
  --name=drone \
drone/drone

可选选项(时区): -e TZ=”Asia/Shanghai” \

注意选项(没有创建管理员选项,功能会少):

–env=DRONE_USER_CREATE=username:root,admin:true \

用户名需和gitlab登录用户一致,才会有Project Setting选项,我gitlab和drone都是root可见:

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

浏览器访问192.168.152.132,点击继续Continue,自动跳转gitlab,授权即可进入drone。

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

进入可看到gitlab所有项目,选择一个项目,进入点击activate 激活进入项目即可。

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

注:如果项目无法激活,需要在admin设置里面,设置Network选择,如下:

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

回到gitlab,在项目设置里面的钩子里,也自动生成了一个钩子。

Linux基于gitlab搭建Drone CI自动集成,图文详细教程

2:运行drone Runner(Agent)

拉取镜像,根据自己项目需要选择合适的runner。如有docker,k8s,exec,ssh等。

这里,我需要远程ssh部署,就选择ssh的runner,如果runner不合适,在构建时,会一直pending状态。

docker pull drone/drone-runner-ssh
#如果是docker项目,则拉取docker的镜像
docker pull drone/drone-runner-docker

drone 已经正常,接下来需要Runner执行工作了。

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=http \
  -e DRONE_RPC_HOST=192.168.152.132 \
  -e DRONE_RPC_SECRET=1d8ae98e6fd61c91b2e7dad6775ca771 \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=${HOSTNAME} \
  -p 3000:3000 \
  --restart always \
  --name runner \
drone/drone-runner-ssh

运行成功后,查看日志,docker logs runner可查看是否连接成功。

$ docker logs runner
time="2021-11-02T07:41:19Z" level=info msg="starting the server" addr=":3000"
time="2021-11-02T07:41:19Z" level=info msg="successfully pinged the remote server"
time="2021-11-02T07:41:19Z" level=info msg="polling the remote server" arch=amd64 capacity=2 endpoint="http://192.168.152.132" kind=pipeline os=linux type=docker

successfully pinged the remote serve连接成功。

到这里drone安装完成。

三:用docker-compose安装drone(拓展)

既然可以用docker安装drone,那可以用docker-compose编排,更简单,不用每次run 很多命令参数,参数直接写在环境.env文件即可,有任何改动,只需要更改.env参数即可。

1:创建docker-compose工作目录及docker-compose文件

创建目录/docker_drone

#创建目录
sudo mkdir /docker_drone
#进入目录
cd /docker_drone
#编辑创建docker-compose.yml文件
vim docker-compose.yml

内容如下:

version: "3.7"

services:
  drone-server:
   image: drone/drone:latest
   container_name: drone-server
   networks:
    - drone_net # 让drone-server和drone-agent处于一个网络中,方便进行RPC通信
   ports:
    - '80:80' # Web管理面板的入口 PROTO=http 时使用该端口
    - '443:443' # Web管理面板的入口 PROTO=https 时使用该端口
    - '9000:9000' # RPC服务端口
   volumes:
    - /var/run/docker.sock:/var/run/docker.sock # docker.sock [1]
    - /var/data/drone/:/var/lib/drone # drone数据存放路径
   environment:
    - DRONE_AGENTS_ENABLED=true # 使用Runner
    - DRONE_GITLAB_SERVER=${DRONE_GITLAB_SERVER} # gitlab的地址
    - DRONE_GITLAB_CLIENT_ID=${DRONE_GITLAB_CLIENT_ID} # gitlab获得的ClientID
    - DRONE_GITLAB_CLIENT_SECRET=${DRONE_GITLAB_CLIENT_SECRET} # gitlab获得的ClientSecret
    - DRONE_RPC_SECRET=${DRONE_RPC_SECRET} # RPC秘钥 [2]
    - DRONE_SERVER_HOST=${DRONE_SERVER_HOST} # RPC域名(在一个实例上可以不用)
    - DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO} # git webhook使用的协议(建议http)
    - DRONE_OPEN=true # 开发drone
  #- DRONE_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite # 数据库文件
  #- DRONE_DATABASE_DRIVER=sqlite3 # 数据库驱动,我这里选的sqlite
    - DRONE_DEBUG=true # 调试相关,部署的时候建议先打开
    - DRONE_LOGS_DEBUG=true # 调试相关,部署的时候建议先打开
    - DRONE_LOGS_TRACE=true # 调试相关,部署的时候建议先打开
    - DRONE_USER_CREATE=username:root,admin:true # 初始管理员用户
    - TZ=Asia/Shanghai # 时区
   restart: always
  drone-runner:
   image: drone/drone-runner-ssh:latest
   container_name: drone-runner
   networks:
    - drone_net # 让drone-server和drone-agent处于一个网络中,方便进行RPC通信
   depends_on:
    - drone-server
   volumes:
    - /var/run/docker.sock:/var/run/docker.sock # docker.sock [1]
   environment:
    - DRONE_RPC_HOST=${DRONE_RPC_HOST} # RPC服务地址
    - DRONE_RPC_SECRET=${DRONE_RPC_SECRET} # RPC秘钥
    - DRONE_RPC_PROTO=${DRONE_RPC_PROTO} # RPC协议(http || https)
    - DRONE_RUNNER_CAPACITY=2 # 最大并发执行的 pipeline 数
    - DRONE_DEBUG=true # 调试相关,部署的时候建议先打开
    - DRONE_LOGS_DEBUG=true # 调试相关,部署的时候建议先打开
    - DRONE_LOGS_TRACE=true # 调试相关,部署的时候建议先打开
    - TZ=Asia/Shanghai
   restart: always
networks:
	 drone_net:
# 注意空格格式,否则报错,让drone-server和drone-agent处于一个网络中,方便进行RPC通信

2:编辑.env环境

sudo vim .env

内容如下:

DRONE_GITLAB_SERVER=http://192.168.152.131
DRONE_GITLAB_CLIENT_ID=6873788c9b46a5c4faf49a2ea1ebaf9c8683d43371c4ec7bca8a2b1429d35165
DRONE_GITLAB_CLIENT_SECRET=b0fb674c1c00a48eea472281ad4c99609ea29fe66a3684e7ca5341385ab3f89f
DRONE_RPC_SECRET=1d8ae98e6fd61c91b2e7dad6775ca771
DRONE_SERVER_HOST=192.168.152.132
DRONE_SERVER_PROTO=http
DRONE_RPC_HOST=192.168.152.132
DRONE_RPC_PROTO=http

3:启动测试

docker-compose up -d

如果没有启动,用docker-compose up 不加参数-d,实时打印日志查看错误。

docker-compose up

到这里drone创建完成。

搭建完成,开始下一步,使用Drone自动构建项目

Drone Ci自动构建部署项目

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/36522.html

(0)
上一篇 2024-04-14 11:26
下一篇 2024-04-18 18:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信