drone+github实现自动化部署

news2025/1/14 1:21:59

目录

  • 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文件

c l i e n t I d 替 换 成 之 前 g i t h u b 创 建 第 三 方 服 务 对 应 的 C l i e n t I d ; clientId替换成之前github创建第三方服务对应的Client Id; clientIdgithubClientIdclientSecret替换成之前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: always
    privileged: true
    networks:
      - drone
    environment:
      # 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:true

  docker-runner:
    container_name: drone-runner
    image: drone/drone-runner-docker
    restart: always
    privileged: true
    networks:
      - drone
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /sync/drone/agent/drone.key:/root/drone.key
    environment:
      # 用于连接到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:17

MAINTAINER alex 734663446@qq.com

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

ARG JAR_FILE=./*.jar

COPY ${JAR_FILE} alex_miaosha_monitor-1.0-SNAPSHOT.jar

ENTRYPOINT ["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-build
        path: /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-monitor
    pull: if-not-exists
    image: appleboy/drone-ssh
    settings:
      # 你服务器ip地址
      host: $ip
      # 服务器端口号
      port: 22
      # 服务器账号
      username: root
      # 密码登入写法
      password:
        from_secret: ssh_password
      script:
        - 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-gateway
    pull: if-not-exists
    image: appleboy/drone-ssh
    settings:
      # 你服务器ip地址
      host: $ip
      # 服务器端口号
      port: 22
      # 服务器账号
      username: root
      # 密码登入写法
      password:
        from_secret: ssh_password
      script:
        - 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-finance
    pull: if-not-exists
    image: appleboy/drone-ssh
    settings:
      # 你服务器ip地址
      host: $ip
      # 服务器端口号
      port: 22
      # 服务器账号
      username: root
      # 密码登入写法
      password:
        from_secret: ssh_password
      script:
        - 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-email
    settings:
      recipients_only: true # 只发送给指定邮件收件人,不默认发送给流水线创建人
      host: smtp.qq.com      #SMTP服务器 例如 smtp.qq.com
      port: 465   #SMTP服务端口  例如QQ邮箱端口465
      subject: "Drone Build Complete!"
      username:
        from_secret: ssh_email_username
      password:
        from_secret: ssh_email_password
      from:
        from_secret: ssh_email_username
      recipients: 734663446@qq.com           #收件人邮箱
    when: #执行条件
      status:
        - success
        - changed
        - failure
volumes: # 定义流水线挂载目录,用于共享数据
  - name: maven-build
    host:
      path: /usr/local/soft/drone/alex_miaosha/   #jar包目录可以修改从宿主机中挂载的目录

# 可限制哪些分支可以推送自动CICD
trigger:
  branch:
    - master

配置阿里云镜像拉取文件

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

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
    <localRepository>/root/.m2/repository</localRepository>
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun</name>
            <mirrorOf>central</mirrorOf>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
    </mirrors>
    <pluginGroups>
        <pluginGroup>org.apache.maven.plugins</pluginGroup>
        <pluginGroup>org.codehaus.mojo</pluginGroup>
    </pluginGroups>
</settings>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django车源后台管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

微信截图无法发送,也发不出电脑上的图片

微信截图无法发送&#xff0c;也发不出电脑上的图片 现象 今天微信突然出现这个问题&#xff0c;怎么改设置都调不好&#xff0c;卸载重装都不行&#xff0c;最后发现&#xff0c;微信的消息目录中&#xff0c;一些文件无法删除&#xff0c;提示“文件或目录损坏且无法读取”…

上市公司排污费2010-2020重污染行业环境披露水平-原始数据及计算结果

一、重污染行业环境信息披露水平 1、数据来源&#xff1a;见附件 2、时间跨度&#xff1a;2009-2020 3、区域范围&#xff1a;重污染行业的认定主要依据环境保护部2008年6月发布的《上市公司环保核查行业分类管理名录》&#xff08;环办函[2008]373号&#xff09;、《上市公…

PDF转TXT怎么转?看完这篇你就会了

我们在学习工作的时候&#xff0c;经常会使用PDF格式来传输文件&#xff0c;因为PDF具有较强的格式稳定性。可是有时候我们也需要将PDF转成TXT格式&#xff0c;因为有些电子书阅读器比较适合阅读TXT格式的文件。那你们知道PDF怎么转TXT吗&#xff1f;有需要转换PDF格式的小伙伴…

Apollo 应用与源码分析:Monitor监控-软件监控-进程存活监控-process_monitor

目录 流程 代码 分析 获取可以运行的进程的信息 检查HMI 的模块信息 检查被监控的组件 检查其他组件 判断进程状态UpdateStatus 流程 代码 class ProcessMonitor : public RecurrentRunner {public:ProcessMonitor();void RunOnce(const double current_time) overrid…

BUUCTF Misc 被劫持的神秘礼物 刷新过的图片 [BJDCTF2020]认真你就输了 [BJDCTF2020]藏藏藏

被劫持的神秘礼物 下载文件 提示让我们找账号密码 wireshark打开上述文件 可以发现一个POST请求登录接口的HTTP包&#xff0c;追踪http流 数据包中可以发现用户名&#xff1a;admina 密码&#xff1a;adminb 打开md5在线加密 得到flag flag{1d240aafe2…

第二证券|新能源优势突出 青海加速储能产业布局

大唐青海动力开发有限公司工作人员在青海省海南藏族自治州共和县塔拉滩光伏电站巡检。 无论是新动力场站直流侧的储能技能应用&#xff0c;还是同享储能形式试点&#xff0c;近年来&#xff0c;青海储能职业迎来跨越式展开新阶段。业内遍及看好未来储能展开&#xff0c;作为全…

多线程(2)

文章目录前言 &#xff1a;1.Thread类 &#xff1a;1.1 Thread类常见的构造方法1.2 Thread的几个常见属性1.3 中断一个线程1.4 等待一个线程-join()1.5 获取当前线程引用1.6 休眠当前线程2.线程状态前言 &#xff1a; 简单回顾上文知识点 上文我们了解了 线程是为解决并发编程引…

Linux网络编程——IO多路复用

文章目录1&#xff0c;I/O模型2&#xff0c;阻塞I/O 模式2.1&#xff0c;读阻塞&#xff08;以read函数为例&#xff09;2.2&#xff0c;写阻塞3&#xff0c;非阻塞I/O模式3.1&#xff0c;非阻塞I/O模式的实现&#xff08;fcntl()函数、ioctl() 函数&#xff09;3.1.1&#xff…

Apollo 应用与源码分析:Monitor监控-软件监控-channel时间延迟监控

目录 代码 分析 主要结构 判断逻辑 备注 代码 class ChannelMonitor : public RecurrentRunner {public:explicit ChannelMonitor(const std::shared_ptr<LatencyMonitor>& latency_monitor);void RunOnce(const double current_time) override;private:static …

有限元求解:结构应力法如何实现的网格不敏感呢?

作者&#xff1a;云兵老师&#xff0c;仿真秀专栏作者 一、导读 本人从大一时&#xff0c;上第一节力学课就开始接触有限元&#xff0c;那个时候老师曾说&#xff1a;“学会我讲的这门有限元&#xff0c;我可以保证你在毕业时候一定找到工作”。那个时候有限元很火&#xff0…

基于ANSYS Polyflow的逆向挤出模头设计攻略

摘要&#xff1a;内侧灯罩属于复杂截面塑料异型材&#xff0c;目前其挤出模头的设计主要依赖于经验&#xff0c;需要反复试模和修模&#xff0c;使得模具质量难以保证&#xff0c;生产周期长&#xff0c;成本高。 本文采用数值模拟方法对内侧灯罩进行了反向挤出模头设计。首先…

若依框架前后端打包到linux部署,踩坑

前后端分离版下载地址 https://gitee.com/y_project/RuoYi-Vue 打开前端项目 打开readme 初始化依赖 npm install --registryhttps://registry.npmmirror.com启动项目 npm run dev路由模式修改为hash 否则打包后请求路径会和后端冲突 src/router/index.jsexport default ne…

省 市 县 三级联动

大纲 一、导入省市县数据表(t_region) 二、引入jar包 三、导入所需util类&#xff08;整体框架&#xff09; 四、编写代码 1、配置数据库相关信息(数据库名、用户名、密码) config.propreties #oracle9i #driveroracle.jdbc.driver.OracleDriver #urljdbc:oracle:thin:loca…

Linux下redis安装教程

redis安装教程 首先需要安装gcc依赖 yum install -y gcc tcl注&#xff1a;这里如果安装失败可以百度解决 进入/usr/local/src目录&#xff0c;将下载的安装包放在该目录 cd /usr/local/src解压该目录 tar -zxvf redis-6.2.6.tar.gz解压后src下面多了一个redis-6.2.6 进入…

Redis 为什么这么快,你知道 I/O 多路复用吗?

今天我们讨论一下面试高频题&#xff0c;为什么 Redis 那么快&#xff1f; 首先&#xff0c;你可以先想一下答案&#xff0c;我先说下大家普遍的答案&#xff1a; 单线程基于内存操作&#xff0c;速度快I/O 多路复用 相信很多人第一时间回答出来上面这些&#xff0c;那么面试官…

从开发角度读懂公司卫生间一直有人窜稀的原理

不知道你有没有这样的经历&#xff0c;一直忙忙碌碌&#xff0c;需求不断&#xff0c;当你终于解决完手头的事情&#xff0c;突然特别着急想要去卫生间的时候&#xff0c;仅有的几个门总是关着的&#xff0c;于是怀疑&#xff0c;可能其他人更需要这次机会&#xff0c;他们也一…

最基础的协同过滤介绍

文章目录1.到底什么是协同过滤2.协同过滤的一般步骤3.基于用户的CF (User-CF)3.1 基本介绍3.2 用户相似度3.2.1 用户相似度基本介绍3.2.2 用户相似度改进&#xff1a;ICU3.3 User-CF的缺点4.基于项目的CF (Item-CF)4.1 基本介绍4.2 用户相似度4.2.1 用户相似度基本介绍4.2.2 用…

xss-labs/level6

我们输入平常的payload如下 <script>alert(xss)</script> 界面回显如下 源代码如下所示 可以发现后台服务器对特殊字符进行插入操作 我们寄希望于后台不要插入下划线到onxxx关键字中 所以构造如下 " onclickjavascript:alert(xss)>// 由于界面没有回…

教程七 在Go中使用Energy创建跨平台GUI - Cookies

教程-示例-文档 介绍 本文介绍在energy中的cookie操作 在energy中可以对cookie的增加、修改和删除以达到某种目的 对cookie操作时&#xff0c;是以调用功能函数后触发事件的方式返回调用功能函数的结果 运行此示例&#xff0c;需要安装好Go和Energy开发环境&#xff1a;教…