drone+github实现自动化部署
创始人
2024-02-28 01:48:52
0

目录

  • drone简介
  • drone与jenkins对比
  • 创建oauth2
  • 服务器安装drone
    • 生成drone的共享密钥
    • 配置drone.yml文件
    • 安装drone
  • 项目配置
    • 配置Dockefile
    • 配置.drone.yml文件
    • 配置阿里云镜像拉取文件

drone简介

drone与jenkins对比

创建oauth2

       在github中设置第三方app配置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
       需要记住id和密码,用于后面配置drone连接github。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务器安装drone

生成drone的共享密钥

       生成drone的共享密钥,用于drone之前共享

[root@hecs-79411 drone]# openssl rand -hex 16
07182d77d40ff996d546c59f985c262a

配置drone.yml文件

clientId替换成之前github创建第三方服务对应的ClientId;clientId替换成之前github创建第三方服务对应的Client Id;clientId替换成之前github创建第三方服务对应的ClientId;clientSecret替换成之前github创建第三方服务对应的Client Secrets;$ip替换成drone安装服务器ip;

version: '3'
networks:drone:external: false
services:# 容器名称drone-server:container_name: drone# 构建所使用的镜像image: drone/drone# 映射容器内80端口到宿主机的8611端口8611端口,若修改的话,那么上面Gitee上也需要进行修改ports:- 8611:80# 映射容器内/data目录到宿主机的目录volumes:- /usr/local/soft/drone/data:/data# 容器随docker自动启动restart: alwaysprivileged: truenetworks:- droneenvironment:# Gitee 服务器地址- DRONE_GITHUB_SERVER=https://github.com# Gitee OAuth2客户端ID# - DRONE_GITEA_CLI(上面的Client ID值)- DRONE_GITHUB_CLIENT_ID=$clientId# Gitee OAuth2客户端密钥(上面的Client Secret值)- DRONE_GITHUB_CLIENT_SECRET=$clientSecret# drone的共享密钥(生成rpc密钥)- DRONE_RPC_SECRET=07182d77d40ff996d546c59f985c262a# drone的主机名(改成自己的域名获得ip+端口(注意是drome的))- DRONE_SERVER_HOST=$ip:8611# 外部协议方案根据你的域名判断是http还是https(ip加端口是http)- DRONE_SERVER_PROTO=http- DRONE_GIT_ALWAYS_AUTH=false# 创建管理员账户,这里对应为gitee的用户名(也就是登录的账号,不是昵称)(填错了回导致自动化部署失败)- DRONE_USER_CREATE=username:AlexhahahaDrag,admin:truedocker-runner:container_name: drone-runnerimage: drone/drone-runner-dockerrestart: alwaysprivileged: truenetworks:- dronedepends_on:- drone-servervolumes:- /var/run/docker.sock:/var/run/docker.sock- /sync/drone/agent/drone.key:/root/drone.keyenvironment:# 用于连接到Drone服务器的协议。该值必须是http或https。(同上)- DRONE_RPC_PROTO=http# 用于连接到Drone服务器的主机名(同上)- DRONE_RPC_HOST=$ip:8611# Drone服务器进行身份验证的共享密钥,和上面设置一样(生成rpc密钥)- DRONE_RPC_SECRET=07182d77d40ff996d546c59f985c262a# 限制运行程序可以执行的并发管道数- DRONE_RUNNER_CAPACITY=2# docker runner 名称- DRONE_RUNNER_NAME=docker-runner- DRONE_DEBUG=true                      # 调试相关,部署的时候建议先打开- DRONE_LOGS_DEBUG=true                 # 调试相关,部署的时候建议先打开- DRONE_LOGS_TRACE=true                 # 调试相关,部署的时候建议先打开- TZ=Asia/Shanghai

安装drone

docker-compose -f drone.yml up -d

       然后登录 http:$ip:8611,授信项目信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
       可以在Secrets下设置一些隐秘的信息,如账号、密码等信息。然后再.drone.yaml文件中通过from_secret: ssh_email_username这种方式配置。
在这里插入图片描述

项目配置

配置Dockefile

       在微服务的路径下创建并配置Dockerfile文件

FROM openjdk:17MAINTAINER alex 734663446@qq.comRUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezoneARG JAR_FILE=./*.jarCOPY ${JAR_FILE} alex_miaosha_monitor-1.0-SNAPSHOT.jarENTRYPOINT ["java", "-Xmx512m", "-jar", "alex_miaosha_monitor-1.0-SNAPSHOT.jar"]
CMD ["--spring.profiles.active=prod"]EXPOSE 30006

配置.drone.yml文件

       在项目的根目录上创建.drone.yml,配置drone自动化部署需要的文件。$ip修改成对应的服务器地址。

kind: pipeline # 定义对象类型,还有secret和signature两种类型
type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型
name: drone-miaosha # 定义流水线名称steps: # 定义流水线执行步骤,这些步骤将顺序执行- name: build-package # 流水线名称image: maven:3.8-openjdk-17 # 定义创建容器的Docker镜像volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置- name: maven-buildpath: /usr/local/soft/drone/alex_miaosha # 将应用打包好的Jar和执行脚本挂载出来commands:- mvn clean package -DskipTests=true -s settings.xml -B -U# 将打包后的jar包,拷贝到挂载目录- cp /drone/src/alex_miaosha_monitor/target/alex_miaosha_monitor-1.0-SNAPSHOT.jar  /usr/local/soft/drone/alex_miaosha/monitor/- cp /drone/src/alex_miaosha_finance/target/alex_miaosha_finance-1.0-SNAPSHOT.jar  /usr/local/soft/drone/alex_miaosha/finance/- cp /drone/src/alex_miaosha_gateway/target/alex_miaosha_gateway-1.0-SNAPSHOT.jar  /usr/local/soft/drone/alex_miaosha/gateway/- cp /drone/src/alex_miaosha_mission/target/alex_miaosha_mission-1.0-SNAPSHOT.jar  /usr/local/soft/drone/alex_miaosha/mission/- cp /drone/src/alex_miaosha_web/target/alex_miaosha_web-1.0-SNAPSHOT.jar  /usr/local/soft/drone/alex_miaosha/web/- cp /drone/src/alex_generator/target/alex_generator-1.0-SNAPSHOT.jar  /usr/local/soft/drone/alex_miaosha/generator/# 将Dockerfile拷贝到挂载目录- cp /drone/src/alex_miaosha_monitor/Dockerfile /usr/local/soft/drone/alex_miaosha/monitor/- cp /drone/src/alex_miaosha_finance/Dockerfile /usr/local/soft/drone/alex_miaosha/finance/- cp /drone/src/alex_miaosha_gateway/Dockerfile /usr/local/soft/drone/alex_miaosha/gateway/- cp /drone/src/alex_miaosha_mission/Dockerfile /usr/local/soft/drone/alex_miaosha/mission/- cp /drone/src/alex_miaosha_web/Dockerfile /usr/local/soft/drone/alex_miaosha/web/- cp /drone/src/alex_generator/Dockerfile /usr/local/soft/drone/alex_miaosha/generator/- name: ssh-monitorpull: if-not-existsimage: appleboy/drone-sshsettings:# 你服务器ip地址host: $ip# 服务器端口号port: 22# 服务器账号username: root# 密码登入写法password:from_secret: ssh_passwordscript:- cd /usr/local/soft/drone/alex_miaosha/monitor- ls- docker build  -t alex_miaosha_monitor:latest .- docker rm -f monitor- docker run -p 30099:30099 --name=monitor -v /usr/local/soft/drone/alex_miaosha/monitor/logs:/logs/alex-monitor -d alex_miaosha_monitor:latest- name: ssh-gatewaypull: if-not-existsimage: appleboy/drone-sshsettings:# 你服务器ip地址host: $ip# 服务器端口号port: 22# 服务器账号username: root# 密码登入写法password:from_secret: ssh_passwordscript:- cd /usr/local/soft/drone/alex_miaosha/gateway- ls- docker build  -t alex_miaosha_gateway:latest .- docker rm -f gateway- docker run -p 30001:30001 --name=gateway -v /usr/local/soft/drone/alex_miaosha/gateway/logs:/logs/alex-gateway -d alex_miaosha_gateway:latest- name: ssh-financepull: if-not-existsimage: appleboy/drone-sshsettings:# 你服务器ip地址host: $ip# 服务器端口号port: 22# 服务器账号username: root# 密码登入写法password:from_secret: ssh_passwordscript:- cd /usr/local/soft/drone/alex_miaosha/finance- ls- docker build  -t alex_miaosha_finance:latest .- docker rm -f finance- docker run -p 30008:30008 --name=finance -v /usr/local/soft/drone/alex_miaosha/finance/logs:/logs/alex-finance -d alex_miaosha_finance:latest- name: notify      # 步骤4 部署完成,邮件通知pull: if-not-exists # 如果镜像不存在则拉取,免去每次都要重新下载image: drillster/drone-emailsettings:recipients_only: true # 只发送给指定邮件收件人,不默认发送给流水线创建人host: smtp.qq.com      #SMTP服务器 例如 smtp.qq.comport: 465   #SMTP服务端口  例如QQ邮箱端口465subject: "Drone Build Complete!"username:from_secret: ssh_email_usernamepassword:from_secret: ssh_email_passwordfrom:from_secret: ssh_email_usernamerecipients: 734663446@qq.com           #收件人邮箱when: #执行条件status:- success- changed- failure
volumes: # 定义流水线挂载目录,用于共享数据- name: maven-buildhost:path: /usr/local/soft/drone/alex_miaosha/   #jar包目录可以修改从宿主机中挂载的目录# 可限制哪些分支可以推送自动CICD
trigger:branch:- master

配置阿里云镜像拉取文件

       在项目的根目录上创建settings.xml文件,加快打包速度。

/root/.m2/repositoryalimavenaliyuncentralhttp://maven.aliyun.com/nexus/content/groups/publicorg.apache.maven.pluginsorg.codehaus.mojo

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...