Drone+Gitee自动执行构建、测试和发布工作流

news2024/9/23 7:20:20

拉取Drone:(至于版本,你可以下载最新的)

sudo docker pull drone/drone:2

拉取runner:

sudo docker pull drone/drone-runner-docker

在Gitee中添加第三方应用:

进入个人主页,点击设置:

 往下翻,找到数据管理中的第三方应用

 点击创建应用:

 【注意】:应用主页需要配置成后续启动Drone服务时配置的服务地址DRONE_SERVER_HOST 配置的地址,需要公网IP或域名,回调地址要将上/login,只是固定写法

如果是部署在局域网服务器上,没有公网,可以参考我另一篇文章,将drone的服务端口映射到公网IP上如何跨局域网访问服务?内网穿透、组网-CSDN博客)

可以上传你项目的logo,

权限根据自己实际情况设置:

 由于运行drone和runner的命令很长,不方便,我这里就使用docker-compose,你可以用ChatGPT去转,Client ID和Client Secret环境变量添应用中的对应值

version: '3'
services:
  drone:
    image: drone/drone:2
    container_name: drone
    restart: always
    environment:
      - DRONE_GITEE_CLIENT_ID=a186dffa02ca55ffe934f243b76add6e16a74e
      - DRONE_GITEE_CLIENT_SECRET=c377c209f2defa6980fbacbe0fae2f4eb8c9dcca00acd4
      - DRONE_SERVER_HOST=公网IP或域名:4321 ####(drone服务器地址)端口为内网映射到外网的地址
      - DRONE_SERVER_PROTO=http ###(http协议)
      - DRONE_RPC_SECRET=demo_drone
      - DRONE_USER_CREATE=username:Jungle,admin:true #应在启动时创建的可选用户帐户。这应该用于为系统提供管理帐户。
      - DRONE_GIT_USERNAME=root
      - DRONE_GIT_PASSWORD=2c3072c307
      - TZ=Asia/Shanghai
    ports:
      - 4321:80
    volumes:
      - ./drone_data:/data

  runner:
    image: drone/drone-runner-docker
    container_name: runner
    restart: always
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=172.20.3.12:4321 #drone访问地址
      - DRONE_RPC_SECRET=demo_drone  ####(与server端一致即可)
      - DRONE_RUNNER_CAPACITY=4 #可选数字值。限制运行器可以执行的并发管道数。这不会限制可以在单个节点上执行的并发管道数。
      - DRONE_RUNNER_NAME=runner
      - TZ=Asia/Shanghai
      - DRONE_DEBUG=true
      - DRONE_TRACE=true
    ports:
      - "3001:3000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - drone

更多详细配置:Reference | Drone

启动后访问Drone访问地址,ip加端口,也可以访问映射的公网地址,选择你要自动部署的项目,点击ACTIVATE REPOSITORY

 点击NEW BUILD

项目根目录下添加 .drone.yml 文件,文件内容(Java后端示例):Yaml | Drone
参考文章;https://www.cnblogs.com/yg0070/articles/17958795#%E5%9C%A8gitee%E4%B8%AD%E5%88%9B%E5%BB%BA%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%94%E7%94%A8%E6%8E%88%E6%9D%83

kind: pipeline # 定义对象类型,还有secret和signature两种类型
type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型
name: jar-deploy # 定义流水线名称

steps: # 定义流水线执行步骤,这些步骤将顺序执行
  - name: build-package # 流水线名称
    image: maven:3.8.6-openjdk-11 # 定义创建容器的Docker镜像
    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
      - name: maven-cache
        path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
      - name: maven-build
        path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
    commands: # 定义在Docker容器中执行的shell命令
      - mvn clean package -Pprod # 应用打包命令
      - mkdir -p /app/build/old
      - cp -r /app/build/*.jar /app/build/old/
      - cp -r smart-admin/target/smart-plus.jar /app/build/
    when:
      branch: [ master, main, release, develop ]

  - name: restart
    image: docker:dind
    volumes:
      - name: dockersock
        path: /var/run/docker.sock
    commands:
      - docker restart server
    when:
      branch: [ main, master, release, develop ]

volumes: # 定义流水线挂载目录,用于共享数据
  - name: dockersock
    host:
      path: /var/run/docker.sock
  - name: maven-build
    host:
      path: /home/teacher/software/smart-docker/jar # 从宿主机中挂载的目录
  - name: maven-cache
    host:
      path: /root/.m2

 推送代码测试一下:

 可以看到:正在部署中(第一次运转会比较慢)

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

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

相关文章

Web工程和Servlet

使用idea创建web项目 第一种方式:使用原型创建web项目, Archetype的选择如下图: 创建完成: 第二种方式:不使用原型创建web工程 点击new,选择tomcat的bin的上一级目录 创建完毕 使用: 再webapp目录下…

重新思考:Netflix 的边缘负载均衡

声明 本文是对Netflix 博客的翻译 前言 ​ 在先前关于Zuul 2开源的文章中,我们简要概述了近期在负载均衡方面的一些工作。在这篇文章中,我们将更详细地介绍这项工作的原因、方法和结果。 ​ 因此,我们开始从Zuul和其他团队那里学习&#…

【限免】杂波环境下线性调频脉冲、巴克码、频率步进脉冲雷达MTI、脉冲压缩【附MATLAB代码】

来源:微信公众号:EW Frontier 本代码主要模拟杂波环境(飞机、地杂波、鸟类信号)下,Chirp脉冲、巴克码脉冲、频率步进脉冲雷达信号的脉冲压缩及MTI、​匹配滤波。 MATLAB主代码 % 定义参数 fs 1000; % 采样率 T 1; …

C语言 | Leetcode C语言题解之第106题从中序与后序遍历序列构造二叉树

题目: 题解: int post_idx;typedef struct {int key;int val;UT_hash_handle hh; } hashTable;hashTable* idx_map;void insertHashTable(int x, int y) {hashTable* rec malloc(sizeof(hashTable));rec->key x;rec->val y;HASH_ADD_INT(idx_m…

九、图形化脚本

多年来, shell脚本一直都被认为是枯燥乏味的。但如果你准备在图形化环境中运行脚本时,就未必如此了。有很多与脚本用户交互的方式并不依赖read和echo语句。 9.1 创建文本菜单 创建交互式shell脚本最常用的方法是使用菜单。提供各种选项可以帮助脚本用户…

牛客NC295 连续子链表最大和【simple 动态规划 Java/Go/PHP/C++】

题目 题目链接: https://www.nowcoder.com/practice/650b68dfa69d492d92645aecd7da9b21 思路 动态规划动态规划算法通过迭代遍历输入数组,维护一个额外的数组 dp 来记录截止到每个位置的最大连续子数组和,并利用一个变量 max_num 实时更新全…

面向可复用性和可维护性的设计模式 课程学习总结

什么是设计模式 设计模式:在软件设计中给定上下文中常见问题的通用的、可重用的解决方案。 设计模式分类 1. 创建型模式——Creational patterns 关注对象创建的过程 1.1 工厂方法模式 定义用于创建对象的接口,但让子类决定要实例化哪个类。工厂方…

swift中json和字典Dict或者数组相互转换,JSONSerialization的强大使用

在Swift中,你可以使用JSONSerialization类将JSON字符串转换为字典。要将 Swift 字典转换为 JSON 字符串,我们可以使用JSONSerialization类的data(withJSONObject:options:)方法。这个方法将字典转换为二进制数据,然后我们可以使用String(data…

Leetcode 环形链表|| 快慢指针解法

但是我们不知道 aaa 的值,该怎么办?依然是使用双指针法。考虑构建一个指针,此指针需要有以下性质:此指针和 slow 一起向前走 a 步后,两者在入口节点重合。那么从哪里走到入口节点需要 aaa 步?答案是链表头节…

SAP-CO成本控制概念之标准成本

“ 本篇介绍:标准成本的会计概念,标准成本的制定标准;通过结合会计标准成本的概念与SAP CO标准成本估算功能,更具象化的了解SAP如何实现标准成本管理,为后续学习SAP实际成本核算打下基础。” 01 — 背景需求 SAP实施…

【C++】深入解析C++智能指针:从auto_ptr到unique_ptr与shared_ptr

文章目录 前言:1. 智能指针的使用及原理2. C 98 标准库中的 auto_ptr:3. C 11 中的智能指针循环引用:shared_ptr 定制删除器 4. 内存泄漏总结: 前言: 随着C语言的发展,智能指针作为现代C编程中管理动态分配内存的一种…

infoq读书笔记-云原生时代,如何建设稳定性可观测体系?

而可观测性则是把Log、Trace、Metric拧成了一股绳,让三大支柱互相之间建立亲密的“血缘关系”,通过这种关系我们可以结构化的从整体到局部再到具体细节的观测业务: 图片来自网络如果把业务系统比作一座海上的冰山,监控仅能看到的…

02_前端三大件HTML

文章目录 HTML用于网页结构搭建1. 标签2. 客户端服务器交互流程3. 专业词汇4. html语法细节5. 安装VSCODE安装插件6. Live Server插件使用7. 标题&段落&换行&列表8. 超链接标签使用9. 图片10. 表格的写法11. 表单标签*(重点)12. 下拉框13. 页面布局标签14. 块元素和…

机器学习大模型驱动:未来的趋势与应用

文章目录 📑前言一、什么是机器学习大模型?1.1 大模型的特点1.2 大模型的技术基础 二、大模型的技术实现2.1 Transformer 架构2.2 预训练和微调2.3 模型并行和数据并行 三、大模型的应用场景3.1 自然语言处理(NLP)3.2 计算机视觉&…

02324 自学考试 离散数学屈婉玲教材 目录

02324 自学考试 离散数学屈婉玲教材 目录 02324 自学考试 离散数学屈婉玲教材 02324离散数学全程班历年真题资料

21.2zabbix低级自动发现-mysql多实例

配置mysql多实例 注释:自动发现:创建监控主机;低级自动发现:创建监控项 mysql单实例是直接yum安装,开启mysql多实例 准备配置文件 #mysql3307实例 cp /etc/my.cnf /etc/my3307.cnf vim /etc/my3307.cnf [mysqld] dat…

Maven多环境打包配置

一、启动时指定环境配置文件 在启动springboot应用的jar包时,我们可以指定配置文件,通常把配置文件上传到linux服务器对应jar包的同级目录,或者统一的配置文件存放目录 java -jar your-app.jar --spring.config.location/opt/softs/applicat…

4.Redis之Redis的通用命令

0.Redis 实战操作 通过 redis-cli 客户端和 redis 服务器交互 涉及到很多的 redis 的命令 【redis 的命令非常非常多!!! 1.掌握常用命令(多操作多练习) 2.学会使用 redis 的文档-> 阅读文档, 是程序猿的基操!! redis 的命令非常非常多!!! 1.掌握常用命令(多操作多练习…

Golang文件操作

文章目录 文件操作基本介绍普通的文件操作方式(os包)带缓冲的文件操作方式(bufio包)文件拷贝操作(io包) 命令行参数基本介绍解析命令行参数(flag包) JSON基本介绍JSON序列化JSON反序…

【手把手带你搓组件库】从零开始实现Element Plus

从零开始实现Element Plus 前言亮点项目搭建1、创建项目初始化monorepo创建 .gitignore目录结构安装基础依赖配置文件创建各个分包入口utilscomponentscoreplaytheme 2、创建VitePress文档3、部署到Github Actions生成 GH_TOKENGitHub Page 演示 4、总结 前言 在本文中&#xf…