再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

都2025年了,你还在用Jenkins?赶快看看这些替代方案吧! 阅读详情

在开发或生产环境中,我们经常会搞一套自动化部署方案(俗称一键部署)。比较流行的一种就是Gitlab+Jenkins实现方案,不过这种方案占用内存比较大,没有个8G内存,很难流畅运行,而且部署起来也不快。最近发现一款神器Drone,轻量级CI/DI工具,结合Gogs使用内存占用不到1G,几行脚本就能实现自动化部署,推荐给大家!

Drone简介

Drone是一款基于容器技术的持续集成工具,使用简单的YAML配置文件即可完成复杂的自动化构建、测试、部署任务,在Github上已经有22K+Star。

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

Gogs安装

我们将使用轻量级的Gogs来搭建Git仓库,这里只是简单说下安装步骤,具体使用可以参考《Github标星34K+Star,这款开源项目助你秒建Git服务!》。

  • 首先需要下载Gogs的Docker镜像;
docker pull gogs/gogs
  • 下载完成后在Docker容器中运行Gogs;
docker run -p 10022:22 -p 10080:3000 --name=gogs \
-e TZ="Asia/Shanghai" \
-v /mydata/gogs:/data  \
-d gogs/gogs
  • Gogs运行成功后,访问Web页面地址并注册账号:http://192.168.5.78:10080

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 然后将我们的SpringBoot项目mall-tiny-drone的源码上传上去即可,项目地址:https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-drone

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

Drone安装

接下来我们安装下Drone,不愧是基于容器的CI/DI工具,使用Docker安装很方便!

  • 首先下载Drone的Server和Runner的镜像;
# Drone的Server
docker pull drone/drone:1
# Drone的Runner
docker pull drone-runner-docker:1
  • 这里有个Server和Runner的概念,我们先来理解下;
    • Server:为Drone的管理提供了Web页面,用于管理从Git上获取的仓库中的流水线任务。
    • Runner:一个单独的守护进程,会轮询Server,获取需要执行的流水线任务,之后执行。
  • 接下来我们来安装drone-server,使用如下命令即可;
docker run \
  -v /mydata/drone:/data \
  -e DRONE_AGENTS_ENABLED=true \
  -e DRONE_GOGS_SERVER=http://192.168.5.78:10080 \
  -e DRONE_RPC_SECRET=dronerpc666 \
  -e DRONE_SERVER_HOST=192.168.5.78:3080 \
  -e DRONE_SERVER_PROTO=http \
  -e DRONE_USER_CREATE=username:macro,admin:true \
  -e TZ="Asia/Shanghai" \
  -p 3080:80 \
  --restart=always \
  --detach=true \
  --name=drone \
  drone/drone:1
  • 这里的配置参数比较多,下面统一解释下;
    • DRONE_GOGS_SERVER:用于配置Gogs服务地址。
    • DRONE_RPC_SECRET:Drone的共享秘钥,用于验证连接到server的rpc连接,server和runner需要提供同样的秘钥。
    • DRONE_SERVER_HOST:用于配置Drone server外部可访问的地址。
    • DRONE_SERVER_PROTO:用于配置Drone server外部可访问的协议,必须是http或https。
    • DRONE_USER_CREATE:创建一个管理员账号,该账号需要在Gogs中注册好。
  • 接下来安装drone-runner-docker,当有需要执行的任务时,会启动临时的容器来执行流水线任务;
docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DRONE_RPC_PROTO=http \
  -e DRONE_RPC_HOST=192.168.5.78:3080 \
  -e DRONE_RPC_SECRET=dronerpc666 \
  -e DRONE_RUNNER_CAPACITY=2 \
  -e DRONE_RUNNER_NAME=runner-docker \
  -e TZ="Asia/Shanghai" \
  -p 3000:3000 \
  --restart always \
  --name runner-docker \
  drone/drone-runner-docker:1
  • 这里的配置参数比较多,下面统一解释下。
    • DRONE_RPC_PROTO:用于配置连接到Drone server的协议,必须是http或https。
    • DRONE_RPC_HOST:用于配置Drone server的访问地址,runner会连接到server获取流水线任务并执行。
    • DRONE_RPC_SECRET:用于配置连接到Drone server的共享秘钥。
    • DRONE_RUNNER_CAPACITY:限制runner并发执行的流水线任务数量。
    • DRONE_RUNNER_NAME:自定义runner的名称。

Drone使用

  • 让我们来访问下Drone的控制台页面,第一次登录需要输入账号密码(在Gogs中注册的账号),访问地址:http://192.168.5.78:3080/

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 此时我们在Gogs中的项目会现在在列表中,如果没有的话可以点下SYNC按钮;

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 接下来我们需要对仓库进行设置,将仓库设置为Trusted(否则Drone创建的容器无法挂载目录到宿主机),最后点击SAVE按钮保存;

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 保存成功后会在Gogs中自动配置一个Web钩子,当我们推送代码到Gogs中去时,会触发这个钩子,然后执行在Drone中的流水线任务;

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 拉到最下面,我们可以发送一个测试推送,推送成功会显示绿色的√;

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 此时我们在Drone中发现其实流水线执行失败了,那是因为我们在脚本中引用了Secret中的ssh_password;

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 在仓库的设置中添加一个Secret即可,Secret是专门用来存储密码的,此密码只能被使用或删除,无法被查看;

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 在ACTIVITY FEED中使用RESTART可以重新执行该流水线,发现已经成功执行。

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

编写脚本

当我们向Git仓库Push代码时,会自动触发Web钩子,然后Drone就会从Git仓库Clone代码,再通过项目目录下的.drone.yml配置,执行相应的流水线,接下来我们来看看这个脚本是如何写的。

  • 首先我们来了解下在.drone.yml中配置的工作流都有哪些操作,看下流程图就知道了;

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

  • 再来一个完整的.drone.yml,配上详细的注解,看下就基本懂了!
kind: pipeline # 定义对象类型,还有secret和signature两种类型
type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型
name: mall-tiny-drone # 定义流水线名称

steps: # 定义流水线执行步骤,这些步骤将顺序执行
  - name: package # 流水线名称
    image: maven:3-jdk-8 # 定义创建容器的Docker镜像
    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
      - name: maven-cache
        path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
      - name: maven-build
        path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
    commands: # 定义在Docker容器中执行的shell命令
      - mvn clean package # 应用打包命令
      - cp target/mall-tiny-drone-1.0-SNAPSHOT.jar /app/build/mall-tiny-drone-1.0-SNAPSHOT.jar
      - cp Dockerfile /app/build/Dockerfile
      - cp run.sh /app/build/run.sh

  - name: build-start
    image: appleboy/drone-ssh # SSH工具镜像
    settings:
      host: 192.168.5.78 # 远程连接地址
      username: root # 远程连接账号
      password:
        from_secret: ssh_password # 从Secret中读取SSH密码
      port: 22 # 远程连接端口
      command_timeout: 5m # 远程执行命令超时时间
      script:
        - cd /mydata/maven/build # 进入宿主机构建目录
        - chmod +x run.sh # 更改为可执行脚本
        - ./run.sh # 运行脚本打包应用镜像并运行

volumes: # 定义流水线挂载目录,用于共享数据
  - name: maven-build
    host:
      path: /mydata/maven/build # 从宿主机中挂载的目录
  - name: maven-cache
    host:
      path: /mydata/maven/cache
  • run.sh执行脚本可以实现打包应用和运行容器镜像,之前讲过这里就不再赘述了,具体可以参考《我常用的自动化部署技巧,贼好用,推荐给大家!》,运行成功效果如下。

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

 

总结

对比Jenkins复杂的图形化界面操作,Drone使用脚本来定义流水线任务无疑更简单、更直观。Drone更加轻量级,内存占用少且响应速度快!自动化部署要啥Jenkins?直接给Git整个CI/DI功能难道不香么?

 

最全学习笔记:大厂真题+微服务+MySQL+分布式+SSM框架+Java+Redis+数据结构与算法+网络+Linux+Spring全家桶+JVM+高并发+各大学习思维脑图+面试集合

Jpom vs Jenkins:轻量级DevOps工具的实战对比与选择指南 本文深入对比了Jpom和Jenkins两款DevOps工具在架构设计、资源消耗、安装配置、核心功能、扩展性、安全模型及性能等方面的差异。针对Java技术栈团队,Jpom以其轻量级、低资源消耗和易用性脱颖而出,特别适合中小型团队;而Jenkins则凭借强大的插件生态和复杂流水线支持,更适合大型企业级CI/CD需求。 阅读详情

相关推荐

Jenkins基础教程(188)Jenkins自动化部署和持续交付实现:摸鱼神器Jenkins:自动化部署让您准时下班不是梦!

本文深入浅出解析Jenkins自动化部署与持续交付实战,从CI/CD核心概念到Jenkins语言基础,涵盖环境搭建、Pipeline编写、多环境部署等全流程。通过电商项目实战示例,演示如何配置自动化流水线实现从代码提交到生产部署,并分享避免"甩锅"的测试汇总技巧。最后探讨Jenkins高级应用与最佳实践,助团队提升交付效率,告别无效加班。

jxf_jxfcsdn的博客 398

再见 Jenkins !几行脚本搞定自动化部署,这款神器有点厉害!

在开发或生产环境中,我们经常会搞一套自动化部署方案(俗称一键部署)。比较流行的一种就是Gitlab+Jenkins实现方案,不过这种方案占用内存比较大,没有个8G内存,很难流畅运行,而且部...

HollisChuang's Blog 1228

Jenkins自动化部署Spring Boot项目

目录 1.自动化部署环境 2.插件的安装和配置 1.安装插件 2.配置全局变量 3.配置Publish over SSH 4.部署项目 Jenkins是devops神器,本篇文章介绍如何使用jenkins自动化部署Spring Boot项目。 1.自动化部署环境 我实现Jenkins 自动化部署Spring Boot项目的环境如下图所示,默认Jenkins、SVN、应用服务器都安...

E=mc² 795

CICD方案:Drone与Jenkins如何选择?

在以往的持续集成持续部署,Jenkins一直是大家的首选方案,近两年随着Drone崛起,现在Github的Star已经远超Jenkins了。我通过查询很多资料整理一份资料如下,文字版可以参考 持续集成Drone如何支持gitlab subgroup子分组构建_Terry-21的博客-优快云博客_gitlab新建subgroup 如果你要设计一套适合自己需求的CICD方案该如何选择呢? Drone 和 Jenjins都有自己的UI界面, Jenkins的用户体验更好一些,而且配置功能强大。但是我们

牛码农的专栏 4013

自动化工具软件详细列举

这些工具都是在不同领域的自动化测试方面非常流行和常用的软件,根据您的需求和预算,选择一个适合自己的自动化工具软件非常重要。

zhangzhechun的专栏 4341

简化自动化部署:告别Jenkins,迎来脚本神器

通过几行脚本,我们可以轻松地完成自动化部署的任务,让我们远离繁琐的配置和维护工作。总结一下,通过几行简单的脚本,我们实现了自动化部署的功能,避免了使用复杂的工具和配置。当然,这只是一个简单的示例,你可以根据自己的项目需求进行相应的定制和扩展。总结一下,通过几行简单的脚本,我们实现了自动化部署的功能,避免了使用复杂的工具和配置。这个脚本工具的核心思想是利用现代编程语言和工具的便利性,将自动化部署的复杂性降到最低。这个脚本工具的核心思想是利用现代编程语言和工具的便利性,将自动化部署的复杂性降至最低。

2301_79331387的博客 118

再见 Jenkins,几行脚本拿下自动化部署,这款神器有点厉害

在开发或生产环境中,我们经常会搞一套自动化部署方案(俗称一键部署)。比较流行的一种就是Gitlab+Jenkins实现方案,不过这种方案占用内存比较大,没有个8G内存,很难流畅运行,而且部署起来也不快。最近发现一款神器Drone,轻量级CI/DI工具,结合Gogs使用内存占用不到1G,几行脚本就能实现自动化部署,推荐给大家! Drone简介 Drone是一款基于容器技术的持续集成工具,使用简单的YAML配置文件即可完成复杂的自动化构建、测试、部署任务,在Github上已经有22K+Star。 .

m0_63437643的博客 668

嵌入式开发 DSP芯片运行方式(挖坑-填坑中-坑已平 :))

TMS320F28335 DSP 芯片 如何将运行代码放在不同的位置

FOOLCODE的专栏 1306

再见 Jenkins。几行脚本解决自动化部署,这款神器有点厉害

在开发或生产环境中,我们经常会搞一套自动化部署方案(俗称一键部署)。比较流行的一种就是Gitlab+Jenkins实现方案,不过这种方案占用内存比较大,没有个8G内存,很难流畅运行,而且部署起来也不快。最近发现一款神器Drone,轻量级CI/DI工具,结合Gogs使用内存占用不到1G,几行脚本就能实现自动化部署,推荐给大家! Drone简介 Drone是一款基于容器技术的持续集成工具,使用简单的YAML配置文件即可完成复杂的自动化构建、测试、部署任务,在Github上已经有22K+Star。 .

m0_67645544的博客 410

Docker新手必看:解决‘Unable to find image’错误的完整指南

本文针对Docker新手常见的‘Unable to find image’错误,提供了完整的排查与解决指南。文章深入剖析了权限不足、网络连接失败、Docker服务未运行等核心原因,并给出了将用户加入docker组、配置镜像加速器等实用解决方案,帮助读者彻底理解并解决镜像拉取问题。

weixin_29230901的博客 245

从DIY桌面CNC到工业机器人:手把手教你用LinuxCNC搭建自己的第一台数控系统(基于Xenomai实时补丁)

本文详细介绍了如何使用LinuxCNC和Xenomai实时补丁搭建高性价比的数控系统,从硬件选型到实时系统构建,再到HAL硬件抽象层实战和G代码加工,手把手教你打造从DIY桌面CNC到工业机器人的完整解决方案。

weixin_28727975的博客 288

再见 Jenkins !这款神器有点厉害!轻松搞定自动化部署

点击下方公众号「关注」和「星标」回复“1024”获取独家整理的学习资料!在日常开发、测试或运维环境中,我们对于自动化部署的需求日益强烈。用过 SVN 的小伙伴们,都应该知道hooks(钩子...

民工哥的博客 1270

视频帧插学习(三):ema-vfi代码拆解和分析

video interp EMA-VFI

mikhailbran的博客 712

2023自动部署神器——Jenkins全网最全攻略

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。自动化部署Jenkins,作为一款工具,有着非常强大的功能,上面我们只是讲了生产上做Java自动化部署的一个主要流程,其他的功能,大家可以参看官方文档:Jenkins 用户手册但是,本着学习是为了解决生产的原则,个人建议,用到Jenkins的什么功能就学什么就可以了,没必要把Jenkins的所有功能都学完在使用,

与君初相识,犹如故人归 8146

arcgis select by attributes一次选多个_视频:如何基于ArcGIS与GeoDa求莫兰指数和绘制莫兰散点图?...

莫兰指数是全域莫兰指数(Global Moran's I)的简称,是澳大利亚统计学家帕特里克·阿尔弗雷德·皮尔斯·莫兰(Patrick Alfred Pierce Moran),在1950年提出的。详细介绍,如下:莫兰指数取值范围在-1.0至1.0之间。当Moran's I >0时,表示空间正相关性,其值越大,空间相关性越明显;当Moran's I <0时,表示空间负相关性...

weixin_39948247的博客 1760

YOLOv5改进策略|实战应用案例|YOLOv5苹果成熟度检测 ,准确率提升4.6%

苹果作为世界四⼤⽔果之⼀,富含多种维⽣素和矿物质,⼀直深受世界各地消费者的喜爱。据联 合国粮⻝及农业组织统计,全球⽔果产量中,苹果位列第⼆位,仅次于葡萄(贾等⼈,2020 )。然⽽,⼤多数苹果果实都是⼿⼯采摘的,这样的⽣产⽅法效率很低。此外,随着⼈⼝⽼龄化 和农村劳动⼒⼤量涌⼊城市,⽔果种植⾏业的劳动⼒成本也相应上升。所有这些因素都显着影响 着⽔果产品的市场竞争⼒。因此,实时⾼效采收苹果等⽔果,降低采收成本势在必⾏。基于机器 视觉的⽔果采摘机器⼈可以利⽤其信息感知来识别和采摘⽔果。

斌擎科技 2209

Jenkins:拯救程序员双手的自动化神器!(从此告别「在我机器上能跑」的魔咒)

如果你或你的团队还在被重复的构建、测试、部署折磨;如果你们还在为“环境不一致”、“发布慢”、“回滚难”而头疼——是时候拥抱Jenkins了!它可能不是最时髦的工具,但它绝对是最强大、最灵活、最经得起考验的开源自动化引擎。掌握Jenkins Pipeline,就等于拥有了一键发布的超能力!(真的,省下的时间喝咖啡不香吗?行动起来吧!从安装Jenkins,写第一个开始,感受自动化带来的自由!(别忘了安全配置和备份哦!💪。

securitysentinel的博客 912

YOLO11改进-模块-引入多尺度差异融合模块MDFM

MDFM主要用于融合双时相图像特征并生成带有丰富上下文信息的差异特征,其过程包含以下步骤:1. 特征提取与差异特征生成首先从双时相图像中提取特征f1和f2,然后将f1和f2进行像素级别的相减,再对相减结果取绝对值,最后通过一个3x3的卷积操作得到Di。2. 多尺度特征融合(MSFF)接着利用多尺度特征学习机制来增强特征融合效果。该机制通过不同核大小的卷积构建多尺度融合过程,具体是通过一个名为 MSFF 单元来实现的。

qq_64693987的博客 4380

java自动化_二、自动化神器Jenkins部署Java程序

安装依赖的插件在Jenkins主页面依次点击 系统管理-> 插件管理-> 可选插件-> 过滤搜索框中 查找如下插件:Maven Integration如下图:配置Jenkins配置全局工具(JDK,Git,Maven等),如下图:配置JDK8配置Git(安装 yum install git -y)下载Maven,地址:http://mirrors.tuna.tsinghua.ed...

weixin_39974958的博客 138

PCL 基于视椎体裁剪点云

PCL 基于视椎体裁剪点云

dayuhaitang1的博客 4084

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

阿里出品---SpringBoot应用自动化部署神器,IDEA版Jenkins?

是阿里出品的一款IDEA插件,通过它我们可以更方便地实现自动化部署,其内置的终端工具和文件上传功能,即使用来管理服务器也非常方便!这款IDEA插件不仅功能强大,而且完全免费!CloudToolkit的安装是非常简单的,直接在IDEA的插件市场中搜索然后进行安装即可。 插件安装完成后,打开左侧面板,右键图标我们就可以添加服务器的连接信息了,实现自动化部署之前需要先配置好连接信息; 一般情况下我们如果想部署本地SpringBoot应用到Docker环境需要经过如下步骤,使用CloudToolkit我们只要配置好

退役复学在校大学生,目光所至,皆为华夏 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 别再用 kill -9了,这才是微服务上 下线的正确姿势
下一篇: 还在搞三层架构?了解下 DDD 分层架构的三种模式吧
奇迹摘星w
博客等级 码龄6年 1844粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值