(走过路过,不要错过)【CI/CD技术专题】「Jenkins实战系列」(2)Jenkins实现自动化部署+自动化合并其他分支

简介: (走过路过,不要错过)【CI/CD技术专题】「Jenkins实战系列」(2)Jenkins实现自动化部署+自动化合并其他分支

前提概要


前面的文章中介绍过了,针对于Jenkins的Window环境的安装以及部署到Linux环境的案例和基本配置,🏆(不要错过!)【CI/CD技术专题】「Jenkins实战系列」(1)全流程介绍Jenkins环境搭建+基础部署配置(Windows->Linux),接下来,会针对于相关的Jenkins的重中之重的功能,自动化部署进行相关介绍,还包含了自动拉去分支等功能!




技术资源推荐


jenkins官方文档(中文版)

jenkins官方网站




自动定时构建


定时构建语法:

* * * * *
复制代码
  • 第一个 * 表示分钟,取值0~59,若其他值不做设定,则表示每个设定的分钟都会构建
  • 第二个 * 表示小时,取值0~23, 若其他值不做设定,则表示每个设定小时的每分钟都会构建
  • 第三个 * 表示一个月的第几天,取值1~31,若其他值不做设定,则表示每个月的那一天每分钟都会构建一次
  • 第四个 * 表示第几月,取值1~12,若其他值不做设定,则表示每年的那个月每分钟都会构建一次
  • 第五个 * 表示一周中的第几天,取值0~7,其中0和7代表的都是周日,若其他值不做设定,则表示每周的那一天几每分钟都会构建一次




常用定时构建举例:


  • 由于项目的代码一般存在放SVN/GIT中,而一个SVN/GIT往往是有多个项目组在提交代码,而每个项目组又有多人组成,其中每个人也都在对自己的那块代码不停地在进行维护
  • 所以说对于一个公司而言,SVN/GIT的提交记录往往是很频繁的,正因为如此,Jenkins在执行自动化构建时往往是以天为单位来执行的,下面举的例子就是在一天中常用的定时构建示例



每隔5分钟构建一次

H/5 * * * *


每两小时构建一次

H H/2 * * *


每天中午下班前定时构建一次

0 12 * * *


每天下午下班前定时构建一次

0 18 * * *


定时构建位置

在“配置”->“构建触发器”中,如下图所示

image.png



Build after other projects are built:在其他项目触发的时候触发,里面有分为三种情况,也就是其他项目构建成功、失败、或者不稳定的时候触发项目;


Poll SCM和Build periodically来进行定时自动构建项目


  • Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。如下图配置


在 构建触发器 中选择“Poll SCM”

image.png


Build periodically

image.png


Poll SCM

image.png

输入框为 分,时,日,月,星期, 号代表不限制,我设置的是每天早8点自动部署*。


image.png



  • / 5 * * * * (每5分钟检查一次源码变化
  • Build periodically:周期进行项目构建(它不关心源码是否发生变化),如下图配置

H 2 * * * (每天2:00 必须build一次源码)



在 Schedule 中填写

0 * * * *


  • 第一个参数代表的是分钟 minute,取值 0~59;
  • 第二个参数代表的是小时 hour,取值 0~23;
  • 第三个参数代表的是天 day,取值 1~31;
  • 第四个参数代表的是月 month,取值 1~12;
  • 最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。


所以 0 * * * * 表示的就是每个小时的第 0 分钟执行构建。




最后补充几个案例


  • 在每个小时的前半个小时内的每10分钟

H(0-29)/10 * * * *


  • 每两小时45分钟,从上午9:45开始,每天下午3:45结束

45 9-16/2 * * 1-5

  • 每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)



H H(9-16)/2 * * 1-5

  • 每月(除了12月)从1号到15号这段时间内某刻



H H 1,15 1-11 *

  • 每周四,19点30分

30 19 * * 4

  • 每天早晨8点

0 8 * * *

  • 每周六日的8点12点18点构建

H 8,12,18 * * 6,7

  • 每周1到周5,8点到23点,每小时构建一次

H 8-23 * * 1-5

  • 每周1到周5,8点到23点,每两小时构建一次

H 8-23/2 * * 1-5

  • 每周1到周5,8点到23点,每30分钟构建一次

H/30 8-23 * * 1-5





Jenkins自动合并分支


通过jenkins发布项目时,可能需要合并分支,如:发布测试环境的时候需要把dev分支合并到test分支,此时就可以用jenkins自动实现。


image.png

image.png

image.png





配置构建的参数


image.png


  • Source files     项目构建后的目录
  • Remove prefix    去前缀
  • Remote directoty 发布的目录
  • Exec command     发布完执行的命令,我这边写的是发布完会重启tomcat




#! /bin/bash
tomcat_home=/usr/local/tomcat-8
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
echo "关闭$tomcat_home"
$SHUTDOWN
#杀死tomcat进程
ps -ef | grep $path | grep java | awk '{print $2}' |  xargs kill -9
#删除日志文件,如果你不先删除可以不要下面一行
rm  $tomcat_home/logs/* -rf
#删除tomcat的临时目录
rm  $tomcat_home/work/* -rf
sleep 5
echo "启动$tomcat_home"
$STARTTOMCAT
#看启动日志
#tail -f $tomcat_home/logs/catalina.out










相关文章
|
30天前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
40 5
|
2月前
|
jenkins Java 持续交付
Gitee+Jenkins+SonarQube代码上线的实战操作
通过以上步骤,就可以实现基于Gitee、Jenkins和SonarQube的代码上线流程,确保代码的质量和上线过程的自动化和可控性。在实际操作中,可以根据项目的具体需求和环境进行适当的调整和优化。
|
2月前
|
jenkins Java 持续交付
软件开发自动化程度的不断提高,持续集成(CI)和持续部署(CD)成为现代软件开发的重要组成部分
随着软件开发自动化程度的不断提高,持续集成(CI)和持续部署(CD)成为现代软件开发的重要组成部分。本文以电商公司为例,介绍如何使用 Jenkins 自动发布 Java 代码,包括安装配置、构建脚本编写及自动化部署等步骤,帮助团队实现高效稳定的软件交付。
43 3
|
3月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
运维 安全 Devops
DevOps实践:持续集成与持续部署(CI/CD)的自动化之路
【10月更文挑战第22天】在软件交付的快速迭代中,DevOps文化和实践成为企业加速产品上市、保证质量和提升客户满意度的关键。本文将通过一个实际案例,深入探讨如何利用持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)实现软件开发流程的高效自动化,包括工具选择、流程设计以及问题解决策略。我们将一起探索代码从编写到部署的全自动化旅程,揭示其对企业运维效率和产品质量所带来的深远影响。
|
3月前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
3月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
85 4
|
3月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
70 4
|
2月前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
2月前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
91 1