当前位置: 首页 > news >正文

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

拉取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:2container_name: dronerestart: alwaysenvironment:- 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/Shanghaiports:- 4321:80volumes:- ./drone_data:/datarunner:image: drone/drone-runner-dockercontainer_name: runnerrestart: alwaysenvironment:- 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=trueports:- "3001:3000"volumes:- /var/run/docker.sock:/var/run/docker.sockdepends_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-cachepath: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载- name: maven-buildpath: /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: restartimage: docker:dindvolumes:- name: dockersockpath: /var/run/docker.sockcommands:- docker restart serverwhen:branch: [ main, master, release, develop ]volumes: # 定义流水线挂载目录,用于共享数据- name: dockersockhost:path: /var/run/docker.sock- name: maven-buildhost:path: /home/teacher/software/smart-docker/jar # 从宿主机中挂载的目录- name: maven-cachehost:path: /root/.m2

 推送代码测试一下:

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

http://www.lryc.cn/news/354281.html

相关文章:

  • Unity3D MMORPG 主城角色动画控制与消息触发详解
  • 【Text2SQL 经典模型】HydraNet
  • Mysql-根据字段名查询字段在哪些表里
  • 牛逼!50.3K Star!一个自动将屏幕截图转换为代码的开源工具
  • 八种单例模式
  • 禅道密码正确但是登录异常处理
  • Go微服务: Nacos的搭建和基础API的使用
  • 基于Hadoop的城市公共交通大数据时空分析
  • DNS服务的部署与配置(2)
  • MySql--SQL语言
  • 【网络安全】2030年十大新兴网络安全威胁
  • python数据分析-CO2排放分析
  • 2024宝藏工具EasyRecovery数据恢复软件免费版本下载
  • 【EventSource错误解决方案】设置Proxy后SSE发送的数据只在最后接收到一次,并且数据被合并
  • 如何在linux命令行(终端)执行ipynb 文件。可以不依赖jupyter
  • 基于YOLOv8的车牌检测与识别(CCPD2020数据集)
  • 驱动开发之新字符设备驱动开发
  • 【JMU】21编译原理期末笔记
  • 就业信息|基于SprinBoot+vue的就业信息管理系统(源码+数据库+文档)
  • 一.架构设计
  • <学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript
  • Vue项目中npm run build 卡住不执行的几种情况(实战版)
  • 《Python源码剖析》之pyc文件
  • Python零基础-中【详细】
  • 回溯 leetcode
  • Android firebase消息推送集成 FCM消息处理
  • react中怎么为props设置默认值
  • 企业如何做好 SQL 质量管理?
  • 半年不在csdn写博客,总结一下这半年的学习经历,coderfun的一些碎碎念.
  • c++中的命名空间与缺省参数