ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Gogs+Drone+Docker自动化部署CICD

2021-11-01 12:04:48  阅读:261  来源: 互联网

标签:容器 -- CICD Gogs Drone yum env DRONE docker


环境 centos7

一:安装docker

1、通过 uname -r 命令查看你当前的内核版本

$ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

7、安装docker

$ sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

8、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

docker 基本操作命令

run 运行一个容器
start/stop/restart 启动/停止/重启
kill 向容器内发送一条kill命令
rm 删除一个容器,如果还在运行得先stop
pause/unpause 暂停/恢复
create 创建一个容器但是不运行
exec 向容器内发送命令

docker run 命令备注

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷

二:安装Gogs

1:提前开启服务器或者本地的防火墙,如下命令得开启10022和10080
2:提前创建文件夹 /mydata/gogs

docker run -p 10022:22 -p 10080:3000 --name=gogs \
-e TZ="Asia/Shanghai" \
-v /mydata/gogs:/data  \
-d gogs/gogs

打开浏览器。输入 ***********:10080 进行配置

三:安装Drone

1)安装Drone server(服务端,用来和gogs交互及一些配置和指定任务)

1:提前开启服务器或者本地的防火墙,如下命令得开启7777
2:提前创建文件夹 /var/drone
3: 打开debugger开关,方便调试问题
4:detach的标志,true为后台运行,false输出日志
5:-p 相当于 --publish ,-v 相当于 --volume,-e 相当于 --env
6: DRONE_RPC_SECRET 可以使用自定义的密钥(用你喜欢的字符串)
7:DRONE_USER_CREATE 这个是创建管理原用户,这里不设置的话,后面会遇到麻烦,而且尽量设置成gogs的登录用户(jjia,替换你的gogs用户名)

 docker run \
  -v=/var/drone:/data \
  --env=DRONE_DEBUG=true \
  --env=DRONE_LOGS_TRACE=true \
  --env=DRONE_LOGS_DEBUG=true\
  --env=DRONE_LOGS_PRETTY=true \
  --env=DRONE_AGENTS_ENABLED=true \
  --env=DRONE_GIT_ALWAYS_AUTH=true \
  --env=DRONE_RPC_SECRET=buxiangshagnban \
  --env=DRONE_SERVER_HOST=http://*******:7777 \
  --env=DRONE_SERVER_PROTO=http \
  --env=DRONE_GOGS_SERVER=http://*******:10080 \
  -e DRONE_USER_CREATE=username:jjia,admin:true \
  --publish=7777:80 \
  -e TZ="Asia/Shanghai" \
  --restart=always \
  --detach=true \
  --name=drone2 \
  drone/drone:2

打开浏览器。输入 ***********:7777 进行配置
用户名和密码是gogs的用户名密码

2)安装Drone runner(客户端,用来执行任务)

1:这里的端口可以不进行开放,因为他的原理是一直定时去请求drone server的,不是server进行推送的,所以不开放端口也没事
2:DRONE_RPC_SECRET 这个一定要和drone server 的DRONE_RPC_SECRET保持一致,不然无法认证
3:这里我安装了两个runner ,但是不是必须的,你可以只安装一个docker runner或者ssh runner,甚至还可以安装笔的runner详情看官网
4:其余的不说了,看好官网的导航中有server和runner两个方向就行

  docker run --detach \
  --env=DRONE_RPC_PROTO=http \
  --env=DRONE_RPC_HOST=***********:7777 \
  --env=DRONE_RPC_SECRET=buxiangshagnban \
  --publish=9108:3000 \
  --restart always \
  --name ssrn1 \
  drone/drone-runner-ssh
  
docker run --detach \
  --volume=/var/run/docker.sock:/var/run/docker.sock \
  --env=DRONE_RPC_PROTO=http \
  --env=DRONE_RPC_HOST=***********:7777 \
  --env=DRONE_RPC_SECRET=buxiangshagnban \
  --env=DRONE_RUNNER_CAPACITY=2 \
  --env=DRONE_RUNNER_NAME=myfirstrunner \
  --publish=8089:3000 \
  --restart=always \
  --name=dcrn \
  drone/drone-runner-docker:1

3).drone.yml(配置文件,实现具体的发布流程)

.drone.yml 放置的位置,需要放在你要实现自动部署的项目的根目录下
具体配置看官网文档
示例

---
kind: pipeline
type: docker
name: df_pipeline

#流程触发的方式
trigger:
  #指定分支
  branch:
    - debugger
  #指定事件
  event:
    - push

steps: # 定义流水线执行步骤,这些步骤将顺序执行
  - name: package # 流水线名称
    image: maven:3-jdk-8 # 定义创建容器的Docker镜像
    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
      - name: mevan-setting
        path: /usr/share/maven/conf #同步配置
    commands: # 定义在Docker容器中执行的shell命令
      - ls
      - mvn clean # 应用打包命令
      - mvn install # 应用打包命令
      - mkdir -p /app/gcs/
      - cp -r ./** /app/gcs/

  - name: start
    image: appleboy/drone-ssh # SSH工具镜像
    settings:
      host: ***** # 远程连接地址
      username: root # 远程连接账号
      password:
        from_secret: sever_password # 从Secret中读取SSH密码
      port: 22 # 远程连接端口
      command_timeout: 5m # 远程执行命令超时时间
      script:
        - ls

volumes: # 定义流水线挂载目录,用于共享数据
  - name: mevan-setting #用于mevan下载加速
    host:
      path: /mydata/maven/conf/ # 从宿主机中挂载的目录

标签:容器,--,CICD,Gogs,Drone,yum,env,DRONE,docker
来源: https://www.cnblogs.com/jjiaper/p/15492841.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有