Jenkins环境部署部署

jenkins 部署应用到多个环境 在日常开发的过程中,我们经常会遇到将应用程序部署到多个环境的需求场景,如会先发布到测试环境,由测试人员进行测试,成功之后,会继续将当前应用部署到集成环境,进行集成测试,全部通过后,再继续将应用部署到生产环境,即完成一整个上线的流程。本文将介绍如何基于流水线的方式,将应用部署到多个环境,本次之多两个环境,分别是测试环境和生产环境,可以根据实际情况进行优化调整。 阅读详情

2 Jenkins环境部署部署

2.1 Jenkins安装

2.1.1 Java -jar安装

  1. 从Jenkins官网下载jenkins.war文件。官网地址:http://jenkins-ci.org/,注意选择最新版本的Long-Term Support Release
  2. 运行 java -jar jenkins.war(可添加命令 --httpPort=$HTTP_PORT,用来设置jenkins运行时的web端口)
    注意:Jenkins 最新war包需要运行 Java 7以及以上的版本。

2.1.2 servlet 安装

.  1.从Jenkins官网下载jenkins.war文件。官网地址:http://jenkins-ci.org/,注意选择最新版本的Long-Term Support Release

2. 将下载的war包文件部署到 servlet 容器,然后启动容器,在浏览器的URL地址栏中输入类似http://localhost:8080/jenkins/这样的地址即可

2.2 Jenkins配置

2.2.1 系统管理

在已运行的Jenkins主页中,点击左侧的系统管理进入如下界面:

图:Jenkins系统管理

 

 

 

2.2.2 系统设置

在已运行的Jenkins主页中,点击左侧的系统管理 —> 系统设置进入如下界面:

图:系统设置页面

 

2.2.2.1  JDK、Maven,SVN配置
2.2.2.1.1 JDK,Maven配置

配置一个JDK、Maven实例,请在每一节下面单击Add(新增) 按钮,这里将添加实例的名称和绝对地址。

JDK别名:命名标示,可随意取名。建议同安装根目录名保持一致

JAVA_HOME:本机JDK的安装路径(绝对路劲)

自动安装:不推荐这个选项,会出现需要oracle用户名,VPN等要求

后面Maven的配置是一样的,JDK去oracle官网下载, Maven去apache官网下载

Ps:每个文本框后面都有个问号,点击问号就会出现帮助信息

下图描述了以上两个部分。
图:JDK配置界面

 

2.2.2.1.2 SVN配置

因为我们的SVN使用的1.8的客户端版本,所以需要对Jenkins的SVN插件进行升级。

l 点击系统管理 - > 管理插件。

图:插件管理视图

 

 

 

l 找到Subversion Plug-in插件,点击下载并安装。

l 下载插件,如下图,检测网络连接是用的google的地址,因为没有FQ,所以访问不到是正常的,但是不影响下载安装。
图:Subversion Plug-in下载安装界面

l 下载完成重启Jenkins

Subversion Plug-in插件安装完成后,在系统设置中找到对应模块:
图:SVN配置视图

 


Subversion Workspace Version:Subversion 的版本号,选择您对应的版本号就行了(1.8向下兼容)

2.2.2.2 邮件通知配置

l 配置发件人

 

System Admin e-mail address:Jenkins邮件发送地址。(必须配置,否则报错 )

l 配置邮件通知
注意:SMTP认证邮箱必须与系统管理员邮件地址保持一致。
小技巧:可配置默认邮件后缀,以后您填写邮件地址只需要输出@之前内容就行了
图:邮件通知配置视图

 

2.2.3 Configure Global Security(安全设置)

在已运行的Jenkins主页中,点击左侧的系统管理—>Configure Global Security进入如下界面:

图:安全设置界面

 

 

设置如上图,保存后系统管理中就出现管理用户的选项。页面右上角也会出现登录/注册的选项。


2.2.4 管理用户设置

在右上角点击注册

图:用户注册界面

 

 

注册点击sign up按钮,提示您现在已经登录.返回首页. 登录后和匿名账号看到的首页有几点不同,如下图红框所示:

图:用户登录页面

 

 

2.2.5 管理插件设置

前文进行SVN配置时,已经接触了相关插件安装的内容。

Jenkins提供了大量的插件,插件管理器允许您安装新的插件,和更新您Jenkins服务器上的插件。管理者将连接到联机资料库,检索可用的和已更新的插件。如果您的Jenkins服务器 无法直接连接到外部资源,您可以从Jenkins网站上下载。点击“管理插件”进入插件安装界面。Jenkins的插件安装管理配置都很简单,通过web直接全能搞定。

插件管理界面如下图所示:

图:插件管理视图

 

 

它包含四个标签:

l 可更新:清单中列示了Jenkins为某些插件搜索到了可用的更新。列出的每个插件可以被选择并应用更新。

l 可选插件:清单中列示了可用于安装(而不是目前已安装的)的所有插件。列出的每个插件都可以被选择并安装。

l 已安装:清单中列示了已经安装的插件。

l 高级:允许您通过设定HTTP代理的方式使Jenkins与在线插件库建立连接。此外,还提供了一个上传设备,可以安装您在Jenkins以外已下载的那些插件。

 

各种Jenkins插件根据之前所记述的类型进行分门别类。可勾选任意想安装的Jenkins插件,到页面最下面有两个按钮“Install without restart” “Download now and install after restart”,根据需要点选提交开始安装。

安装后,所有插件以hpi作为后缀名放置在plugins文件夹下。如果是高级用户还可以自行开发插件方便具体项目使用。

 

注意:安装完成后需要重启Jenkins部署的容器。这样才能使用新装的插件。

 

2.3 监控

当任务一旦运行,您将会看到这个任务正在队列中的仪表板和当前工作主页上运行。这两种显示如下。

图:左图构建历史,右图构建执行列表

 

 

 

一旦构建完成后,完成后的任务将会有三个地方进行显示。

您可以在Jenkins的控制面板上看到它,如下图。

图:主页面项目列表

 

 

在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代表着“最新构建状态”,W栏目代表着“构建稳定性”。Jenkins使用这两个概念来介绍一个作业的总体状况:

构建状态:下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态: 

l Successful:完成构建,且被认为是稳定的。

l Unstable:完成构建,但被认为不稳定。

l Failed:构建失败。

l Disabled:构建已禁用。

图:构建状态界面

 

 

构建稳定性: 当一个Job中构建已完成并生成了一个未发布的目标构建,如果您准备评估此次构建的稳定性,Jenkins会基于一些后处理器任务为构建发 布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分 析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。
图:构建稳定性界面

 

 

您也可以在当前Job主界面上看到它,如下图左下部分

图:项目构建界面

 

 

当前作业主页上还包含了一些有趣的条目。左侧栏的链接主要控制Job的配置、删除作业、构建作业。右边部分的链接指向最新的项目报告和构件。

通过点击构建历史(Build History)中某个具体的构建链接,您就能跳转到Jenkins为这个构建实例而创建的构建主页上。如下图

图:构建历史界面

 

 

如果您想通过视图输出界面来监控当前任务的进展情况。您可以单击Console Output(控制台输出)。如果工作已完成,这将显示构建脚本产生的静态输出;如果作业仍然在运行中,Jenkins将不断刷新网页的内容,以便您可以看到它运行时的输出。如下图:

图:控制台输出界面

 

 

3 Jenkins内置环境变量

l BUILD_NUMBER, 唯一标识一次build。例如23; 

l BUILD_ID,基本上等同于BUILD_NUMBER,但是是字符串,例如2011-11-15_16-06-21;

l JOB_NAME, job的名字,例如AppScan_mall_essence_test;

l BUILD_TAG, 作用同BUILD_ID,BUILD_NUMBER,用来全局地唯一标识一此build,例如jenkins- AppScan_mall_essence_test-23;

l EXECUTOR_NUMBER, 例如0;

l NODE_NAME,slave的名字,例如Master;

l NODE_LABELS,slave的label,标识slave的用处,例如Android打包;

l JAVA_HOME, java的home目录,例如C:\Program Files\Java\jdk1.8.0_45;

l WORKSPACE,job的当前工作目录,例如c:\jenkins\workspace\ AppScan_mall_essence_test;

l HUDSON_URL = JENKINS_URL, jenkins的url,例如http:// AppScan_mall_essence_test:8000/ ;

l BUILD_URL,build的url 例如http://localhost:8000/job/ AppScan_mall_essence_test /23/;

l JOB_URL, job的url,例如http://localhost:8000/job/ AppScan_mall_essence_test /;

l SVN_REVISION,svn 的revison
注意:项目可配置多个SVN变量说明:
The Subversion SCM plugin exports the svn revisions and URLs of the build's subversion modules as environment variables. These are $SVN_REVISION_n and $SVN_URL_n, where n is the 1-based index of the module in the configuration.

For backwards compatibility if there's only a single module, its values are also exported as $SVN_REVISION and $SVN_URL.

 

4 Jenkins 其他配置

4.1 Slave配置

Jenkins有个很强大的功能:分布式构建,分布式构建能够让同一套代码在不同的环境(如:Windows和Linux系统)中编译、测试等。而且Jenkins构建的代码和产物最后自动拷贝到主节点。

注意:注意:如果节点主机上不存在JDK,Jenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。

建议:所有Unix/Mac/Linux或者Windows机器的环境路径统一(如:JDK、Maven),便于管理、不易出现奇葩问题。

 

Jenkins版本:1.6.20(不同版本的配置可能不同)

l 进入节点配置界面:系统管理→管理节点→新建节点(左上角)

图:Slave配置页面

 

 

 

l 节点名称:建议使用字母、数字或字母和数字的组合。最好见名知意。不建议使用标点符号和中文(中文命名没有问题,但Job中无法引用)

l Dumb Slave:新建一个节点

l 复制现有节点:从已存在的节点中复制一份配置(存在节点才会显示)

l 点击ok进入下一步配置
图:Slave 节点配置

l Name:节点名称

l Description:节点描述,支持中文

l # of executors:最大同时构建数量(根据机器的性能定,单颗四核cpu建议不要超过5)【必须为数字】

l Remote FS root:节点的根目录(注意:如果目录不存在,会自动创建目录。你必须对该目录有读写权限,不然会报错:hudson.util.IOException2: Failed to copy xxxx)

l Labels:标记(又叫做标签)用来对多节点分组,标记之间用空格分隔.例如'refression java6'将会把一个节点标记上 和'java6'.
举例来说,如果你有多个Windows系统的构建节点并且你的Job也需要在Windows系统上运行,那么你可以配置所有的Windows系统节点都标 记为'windows', 然后把Job也标记为'windows'.这样的话你的Job就不会运行在除了Windows节点以外的其它节点之上了.

l 用法:尽可能的使用这个节点/只允许运行绑定到这台机器的Job(根据你的需求,二选一)

l Launch method:运行方式有四个选项。建议选择第1、2种方式配置。详细如下:

n 【推荐】Launch slave agents on Unix machines via SSH   在Unix(包括Linux)机器上通过SSH通道连接节点 (适用于Unix和Linux)

u Host:节点主机的ip地址

u Credentials:凭据(如果为空或者不可选择,请在系统管理→Manage Credentials中配置。Manage Credentials的配置非常简单,这里就不在描述了。Manage Credentials配置完成后,需刷新节点配置页面才会显示。)

u Port:端口默认22

u JavaPath:[可选]JDK路径,默认和master节点相同。路径必须指定到Java程序,如:/path/bin/java

u JVM Options:[可选]JVM可选参数

u Prefix Start Slave Command:[可选]不知道干什么用的参数

u Suffix Start Slave Command:[可选]不知道干什么用的参数

u Connection Timeout in Seconds:[可选]链接超时设置

u Maximum Number of Retries:[可选]失败重连数

u Seconds To Wait Between Retries:[可选]重连间隔时间

u 测试可以使用Unix命令,会自动拼接在[SSH] Starting slave process:[Prefix Start Slave Command] cd '/path' && /path/bin/java -jar slave.jar [Suffix Start Slave Command]

n 【推荐】Launch slave agents via Java Web Start   通过Java Web Start连接节点 (适用于所有支持Java程序的系统)

u Tunnel connection through:[可选]在端口转发这种情况下使用

u JVM options:[可选]JVM可选参数

u 这种方法的缺点:如果该节点宕机了,主节点无法自动重启它。

 

n Launch slave via execution of command on the Master  通过主节点的控制台连接节点

u Jenkins的开发者考虑到某些企业可能有N++ 个节点(N>=你猜!)。如果在界面配置,那么升级版本之类的操作会很麻烦。所以允许你使用shell脚本去配置管理节点(貌似很方便的样子)。具体的脚本需要你自己写。

u Launch command:Unix运行脚本的命令,如:sh aaa.sh

n 【不建议使用】Let Jenkins control this Windows slave as a Windows service   让Jenkins节点添加到Windows服务中

u 这个选项比Launch slave agents via Java Web Start添加为服务更加稳定(帮助文档描述)。采用这种运行方式,那么这个系统不能登录任何用户。这种配置方式是非常的麻烦和折腾。

u Administrator user name:域\管理员账号

u Password:密码

u Host:节点主机IP或者域名

u Run service as:

u Use Local System User:使用本地系统用户

u Log on using a different account:使用不同的用户登录

u User name:账号

u Password:密码

u Use Administrator account given above:使用上面的用户登录

u Path to java executable:[可选]JDK路径。必须指定到Java程序,如:C:\Windows\system32\java.exe

u JVM options:[可选]JVM可选参数

l Availability:

u Keep this slave on-line as much as possible:尽可能保持节点在线【推荐】

u Take this slave on-line according to a schedule:根据时间表在线(类似于Linux的定时任务)

l Startup Schedule:类似于Linux定时任务的时间,如下:

 

l # every fifteen minutes (perhaps at :07, :22, :37, :52)

l H/15 * * * *

l # every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)

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

l # once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)

l H 9-16/2 * * 1-5

l # once a day on the 1st and 15th of every month except December

l H H 1,15 1-11 *

l 如果使用 H Jenkins会自动提前一段时间连接节点,避免出现同一时间高并发的问题

 

l Scheduled Uptime:超过任务时间后延迟多少分钟离线。如果此数值大于在线总时间(单位:分),就会一直保持在线【必须为数字】

l Keep on-line while jobs are running:当有Job在构建时(到达离线时间了)继续保持在线

u Take this slave on-line when in demand and off-line when idle:让Jenkins根据需求自动连接或者离线

l In demand delay:告诉Jenkins如果有Job需要在此节点构建,需要在任务队列等待多长时间才会进入任务状态进行构建【必须为数字】

l Idle delay:告诉Jenkins多少分钟内如果没有Job需要构建就离线【必须为数字】

l Node Properties:

u Environment variables:配置环境变量(可以在脚本中引用)

u Tool Locations:工具的目录【推荐】。说明:可以替换系统设置的各种工具目录。如:JDK目录、Ant目录、Maven目录等。好处就是在不更改Job配置的情况下,不同环境(如:Windows和Linux) Job配置通用。

4.1.1 Windows Slave

4.1.1.1 Launch slave agents via Java Web Start

相应配置选择完成后,进入需要控制的远程机器上,一定要进入远程的slave机器,而不是你的master机器。输入对应的你的jenkins的地址,例如这里:

http://192.168.11.237:8080/computer/

点击进入对应的该slave机器的图标进入:

图:Launch slave agents via Java Web Start配置完成界面

 

 

 

如上图所示,有两种方式可以启动节点(都是JNLP方式。JNLP连接需要端口,默认连接端口是随机的,端口更改 系统设置→Configure Global Security→JNLP节点代理的TCP端口)

你以下几种方式启动:

l Launch agent from browser on slave  下载文件slave-agent.jnlp文件,双击打开。

n 一般用在Windows系统上,需要javaws.exe(在Java的bin目录中可以找到)程序才能打开。如果提示错误,请卸载JDK后重新安装。

u 注意事项:

u 确认slave-agent.jnlp 是用javaws来运行的,而不是java.exe 或者是javaw.exe来运行,因为一般的机器默认是采用java.exe启动的。

u 将slave-agent.jnlp用notepad打开后,确认其中的URL是可用的Jenkins地址。其中的配置可能是这样的:

 

确认其中的url地址是正确的地址,而不是localhost或者127.0.0.1。

以上的配置完成后,如果点击lanch按钮,可能会报一下的错误:


Slave irshost12.tc.tb.com

Connection was broken

java.net.SocketException: Connection reset

at java.net.SocketInputStream.read(SocketInputStream.java:168)

at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)

at java.io.BufferedInputStream.read(BufferedInputStream.java:237)

at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2252)

at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2545)

at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2555)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1294)

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)

at hudson.remoting.Command.readFrom(Command.java:92)

at hudson.remoting.ClassicCommandTransport.read(ClassicCommandTransport.java:72)

at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)

Connect slave to Jenkins one of these ways:

 Launch agent from browser on slave

Run from slave command line:

javaws http://16.158.69.53:9999/jenkins/computer/irshost12.tc.com.com/slave-agent.jnlp

Or if the slave is headless:

java -jar slave.jar -jnlpUrl http://16.158.69.53:9999/jenkins/computer/irshost12.tc.com/slave-agent.jnlp

如果出现上面的问题,我们就不要在点击launch按钮起启动了,采用命令行去启动也是一样的,这个时候选择下面的启动方式

l Run from slave command line
1.javaws  http://xxxx/slave-agent.jnlp  
如果你配置了权限那么后面还有一串看不懂的随机Key

n 下载slave.jar到本地,然后进入存放slave.jar的目录,复制粘贴并运行 java -jar slave.jar -jnlpUrl http://xxxxx  即可启动。

l Or if the slave is headless:
java -jar slave.jar -jnlpUrl http://192.168.11.237:8080//computer/192.168.11.155_WIN7_ICE/slave-agent.jnlp

 

如果启动成功,成功启动如下图所示:

图:windows Slave Launch slave agents via Java Web Start 节点连接

 

点击左上角的File选择Install as a service就可以添加为Windows的服务了(默认开机自动启动)。将当前的slave设置成一个服务,每次机器重启的时候都自动启动slave服务,这样就不用每次都去启动这个slave agent了。

 

注意:

如果上面的窗口中显示Connected,可是一会有出现了Terminated的状态,那么很可能是因为你的jenkins配置权限的时候没有给匿名用户启动slave的权限。

具体操作是进入jenkins主界面,然后进入Manage Jenkins -> Configure Global Security ,勾选其中的anonymous用户的slave部分的权限。

图:anonymous Slave 启动权限配置界面

 

 

4.1.1.2 Let Jenkins control this Windows slave as a Windows service

这种启动方式比较繁琐,此处不做赘述,可参考:http://blog.sina.com.cn/s/blog_87f0f17e0101iq8a.html

 

4.1.2 MAC/Linux Slave(待添加)

4.1.2.1 Launch slave agents on Unix machines via SSH

l 在jenkins上增加节点
图:Jenkins增加节点配置界面

l 在Mac系统中将ssh的服务打开,在偏好设置-互联网与无线 -共享中
图:互联网与无线配置界面

 

l 使用mac root用户修改sshd-config的鉴权方式
首先获取到root用户登录,然后vi /etc/ssd_config,修改PasswordAuthentication no 为PasswordAuthentication yes

l 此时在jenkins节点中点击salve节点,Lauch。

注意:

1.Slave节点机器上必须配置好java环境,建议手工在Environment variables指定JAVA_HOME路径信息
图:Environment variables JAVA_HOME配置

 

2.命令行调用code sign时报错:User interaction is not allowed

n 网上找了一些命令来用:

$security list-keychains

$unlock-keychain "-p" "keychainpassword"  "/Users/bixiaopeng/Library/Keychains/login.keychain”

但无法解决

 

于是乎用下面的方法解决了:

1.在应用程序里搜索Keychain Access,中文叫钥匙串访问权限

2.找到你的证书,右击 — 显示简介 — 访问控制 — 选中【允许所有应用程序访问此项目】 — 存储更攺 — 输入密码后保存更攺,解决问题。

n 如果上面的都无法解决,那就使用jenkins的Xcode插件吧
图:Xcode配置界面

 

除了以上的连接方式,也可以采用私钥的形式进行链接:SSH Username with private key

这种启动方式比较繁琐,此处不做赘述,可参考:http://blog.sina.com.cn/s/blog_87f0f17e0101iq8a.html

4.2 Manage and Assign Roles配置

Jenkins的默认权限控制过于简单,用户进行管理配置这块推荐使用“Role-based Authorization Strategy”

4.2.1 Role-based Authorization Strategy安装

点击“系统管理”- > “管理插件” 进入插件安装界面,按照上文“管理插件设置”选择Role-based Authorization Strategy进行安装

4.2.2 “Role-based Authorization Strategy”的启用

点击“系统管理”点击“系统设置”,如下图所示:“授权策略”选择使用“Role-Based Strategy”。

配置完成save后在“系统管理”下新增选项“Manage and Assign Roles”。点击“管理用户”新建账户后即可进行账户,群组的安全策略配置。

图:Role-Based Strategy配置界面

 

 

4.2.3 管理组权限设置,构建权限设置:

点击“Manage and AssignRoles”,先选择“Manage Roles”如下图所示,在Global roles这里创建权限分组,如admin是最高管理员权限,拥有所有权限,guest只有读权限等,这里可以根据具体情况设置多个分组,不同权限;然后设置“Project roles”,Role to add 填写分组名称,Pattern填写分组的规则。例如这个分组叫TEST,他的规则就是构建名为“TEST.*”的所有构件,然后在“Job”区里勾选相关权限。设置完成点保存即可。

图:Global roles设置界面

 

 

图:Project roles设置界面

 

 

4.2.4 用户权限分配

点击“Assign Roles”如下图所示,在“Global roles”下“User/group to add”栏中输入添加的用户名,然后勾选管理组。记得把默认的匿名用户“Anonymous”的默认admin权限去掉,在添加管理员之后,否则不需登录就能控制整个Jenkins的权限;在“Project roles”下“User/group to add”栏中输入添加的用户名,然后勾选对应构建权限名。设置完保存即可。

图:Assign Roles配置界面

 

 

 

 

4.3 E-mail Notification配置

Jenkins默认提供了一个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容、无法定义发送邮件的格式、无法定义灵活的邮件接收配置等等。在这样的情况下,我们找到了Jenkins Email Extension Plugin。该插件能允许您自定义邮件通知的方方面面,比如在发送邮件时您可以自定义发送给谁,发送具体什么内容等等。

4.3.1 配置

E-mail Notification配置包含两个部分:全局配置和项目配置。

4.3.2 全局配置

在一个项目中应用E-mail Notification插件之前,您必须做一些全局的配置。现在先跳转到Jenkins的“系统设置”页面。

找到标题为“Extended E-mail Notification”的片段,你就能配置一些全局的E-mail Notification属性。这些属性必须匹配你SMTP邮件服务器的设置。这一节不仅能配置成Jenkins原有邮件通知的镜像(虽然有很多配置是一样的,但这是个不同的扩展点),而且还增加了一些额外的功能。输入框中名为 Default Subject 和 Default Content 的项允许你在全局级别配置邮件的内容。这样做的话,可以使您为所有的项目按您的需求做更好的、更简单的配置。如下图。
图:Extended E-mail Notification配置

 

 

释放默认配置:

Default Subject:构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!

Maximum Attachment Size:20

Default Content:

(本邮件是程序自动下发的,请勿回复!)

项目名称:$PROJECT_NAME

构建编号:$BUILD_NUMBER

SVN版本号:${SVN_REVISION}

构建状态:$BUILD_STATUS

触发原因:${CAUSE}

构建日志地址:${BUILD_URL}

构建地址: $BUILD_URL

APP文件下载地址(Android/IOS):${JOB_URL}ws/version/

变更集: ${JELLY_SCRIPT,template="text"}

$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:

Check console output at $BUILD_URL to view the results.

4.3.2.1 E-mail Notification全局属性详解

E-mail Notification全局属性详解:

l Override Global Settings:如果不选,该插件将使用默认的E-mail Notification通知选项。反之,您可以通过指定不同于( 默认选项)的设置来进行覆盖。

l Default Content Type:指定构建后发送邮件内容的类型,有Text和HTML两种.

l Use List-ID Email Header:为所有的邮件设置一个List-ID的邮件信头,这样你就可以在邮件客户端使用过滤。它也能阻止邮件发件人大部分的自动回复(诸如离开办公室、休假等等)。你可以使用你习惯的任何名称或者ID号,但是他们必须符合如下其中一种格式(真实的ID必须要包含在<和>标记里):

<ci-notifications.company.org>

Build Notifications <ci-notifications.company.org>

“Build Notifications” <ci-notifications.company.org>

l Add 'Precedence: bulk' Email Header:设置优先级.

l Default Recipients:自定义默认电子邮件收件人列表。如果没有被项目配置覆盖,该插件会使用这个列表。您可以在项目配置使用$ DEFAULT_RECIPIENTS参数包括此默认列表,以及添加新的地址在项目级别。添加抄送:cc:电子邮件地址例如,CC:someone@somewhere.com

l Reply To List:回复列表, A comma separated list of e-mail addresses to use in the Reply-To header of the email. This value will be available as $DEFAULT_REPLYTO in the project configuration.

l Emergency reroute:如果这个字段不为空,所有的电子邮件将被单独发送到该地址(或地址列表)。

l Excluded Recipients:防止邮件被邮件系统认为是垃圾邮件,邮件列表应该没有扩展的账户名(如:@domain.com),并且使用逗号分隔

l Default Subject:自定义邮件通知的默认主题名称。该选项能在邮件的主题字段中替换一些参数,这样你就可以在构建中包含指定的输出信息。

l Maximum Attachment Size:邮件最大附件大小。

l Default Content:自定义邮件通知的默认内容主体。该选项能在邮件的内容中替换一些参数,这样你就可以在构建中包含指定的输出信息。

l Default Pre-send Script:默认发送前执行的脚本。

l Enable Debug Mode:启用插件的调试模式。这将增加额外的日志输出,构建日志以及Jenkins的日志。在调试时是有用的,但不能用于生产。

l Enable Security:启用时,会禁用发送脚本的能力,直接进入Jenkins实例。如果用户试图访问Jenkins管理对象实例,将抛出一个安全异常。

l Content Token Reference:邮件中可以使用的变量,所有的变量都是可选的。

4.3.2.2 全局邮件变量

E-mail Notification插件允许使用变量来动态插入数据到邮件的主题和内容主体中。变量是一个以$(美元符号)开始,并以空格结束的字符串。当一个邮件触发时,主题和内容主体字段的所有变量都会通过真实的值动态地替换。同样,变量中的“值”能包含其它的变量,都将被替换成真实的内容。

比如,项目配置页的默认主题和内容分别对应的是全局配置页面的DEFAULT_SUBJECT和DEFAULT_CONTENT,因此它会自动地使用全局的配置。同理,触发器中的Subject和Content分别对应的是项目配置页面的DEFAULT_SUBJECT和DEFAULT_CONTENT,所以它也会自动地使用项目的配置。由于变量中的“值”能包含其它的变量,所以就能为变量快速地创建不同的切入点:全局级别(所有项目),专属级别(单一项目),触发器级别(构建结果)。

如果你要查看所有可用的变量,你可以点击配置页的Content Token Reference的问号获取详细的信息。

所有的变量都是可选的,每个变量可以如下表示,字符串类型使用name=“value”,而布尔型和数字型使用name=value。如果{和}标记里面没有变量,则不会被解析。示例:$TOKEN,${TOKEN},${TOKEN,count=100},${ENV,var=”PATH”}

提示:用英文逗号分隔变量的参数。

 

一些常用的属性:

l ${FILE,path="PATH"} 包括指定文件(路径)的含量相对于工作空间根目录。

n path文件路径,注意:是工作区目录的相对路径。

l ${BUILD_NUMBER} 显示当前构建的编号。

l ${JOB_DESCRIPTION} 显示项目描述。

l ${SVN_REVISION} 显示svn版本号。还支持Subversion插件出口的SVN_REVISION_n版本。

l ${CAUSE} 显示谁、通过什么渠道触发这次构建。

l ${CHANGES } -显示上一次构建之后的变化。

n showPaths 如果为 true,显示提交修改后的地址。默认false。

n showDependencies 如果为true,显示项目构建依赖。默认为false

n format 遍历提交信息,一个包含%X的字符串,其中%a表示作者,%d表示日期,%m表示消息,%p表示路径,%r表示版本。注意,并不是所有的版本系统都支持%d和%r。如果指定showPaths将被忽略。默认“[%a] %m\\n”。

n pathFormat 一个包含“%p”的字符串,用来标示怎么打印路径。

l ${BUILD_ID}显示当前构建生成的ID。

l ${PROJECT_NAME} 显示项目的全名。(见AbstractProject.getFullDisplayName)

l ${PROJECT_DISPLAY_NAME} 显示项目的显示名称。(见AbstractProject.getDisplayName)

l ${SCRIPT} 从一个脚本生成自定义消息内容。自定义脚本应该放在"$JENKINS_HOME/email-templates"。当使用自定义脚本时会默认搜索$JENKINS_HOME/email-templatesdirectory目录。其他的目录将不会被搜索。

n script 当其使用的时候,仅仅只有最后一个值会被脚本使用(不能同时使用script和template)。

n template常规的simpletemplateengine格式模板。

l ${JENKINS_URL} 显示Jenkins服务器的url地址(你可以再系统配置页更改)。

l ${BUILD_LOG_MULTILINE_REGEX}按正则表达式匹配并显示构建日志。

n regex java.util.regex.Pattern 生成正则表达式匹配的构建日志。无默认值,可为空。

n maxMatches 匹配的最大数量。如果为0,将匹配所有。默认为0。

n showTruncatedLines 如果为true,包含[...truncated ### lines...]行。默认为true。

n substText 如果非空,就把这部分文字(而不是整行)插入该邮件。默认为空。

n escapeHtml 如果为true,格式化HTML。默认为false。

n matchedSegmentHtmlStyle 如果非空,输出HTML。匹配的行数将变为<b style=”your-style-value”> html escaped matched line </b>格式。默认为空。

l ${BUILD_LOG} 显示最终构建日志。

n maxLines 日志最多显示的行数,默认250行。

n escapeHtml 如果为true,格式化HTML。默认false。

l ${PROJECT_URL} 显示项目的URL地址。

l ${BUILD_STATUS} -显示当前构建的状态(失败、成功等等)

l ${BUILD_URL} -显示当前构建的URL地址。

l ${CHANGES_SINCE_LAST_SUCCESS} -显示上一次成功构建之后的变化。

n reverse在顶部标示新近的构建。默认false。

n format遍历构建信息,一个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build #%n\n%c\n”。

n showPaths,changesFormat,pathFormat分别定义如${CHANGES}的showPaths、format和pathFormat参数。

l ${CHANGES_SINCE_LAST_UNSTABLE} -显示显示上一次不稳固或者成功的构建之后的变化。

n reverse在顶部标示新近的构建。默认false。

n format遍历构建信息,一个包含%X的字符串,其中%c为所有的改变,%n为构建编号。默认”Changes for Build #%n\n%c\n”。

n showPaths,changesFormat,pathFormat分别定义如${CHANGES}的showPaths、format和pathFormat参数。

l ${ENV} –显示一个环境变量。

n var– 显示该环境变量的名称。如果为空,显示所有,默认为空。

l ${FAILED_TESTS} -如果有失败的测试,显示这些失败的单元测试信息。

l ${JENKINS_URL} -显示Jenkins服务器的地址。(你能在“系统配置”页改变它)。

l ${HUDSON_URL} -不推荐,请使用$JENKINS_URL

l ${PROJECT_URL} -显示项目的URL。

l ${SVN_REVISION} -显示SVN的版本号。

l ${JELLY_SCRIPT} -从一个Jelly脚本模板中自定义消息内容。有两种模板可供配置:HTML和TEXT。你可以在$JENKINS_HOME/email-templates下自定义替换它。当使用自动义模板时,”template”参数的名称不包含“.jelly”。

n template模板名称,默认”html”。

l ${TEST_COUNTS} -显示测试的数量。

n var– 默认“total”。

u total -所有测试的数量。

u fail -失败测试的数量。

u skip -跳过测试的数量。




4.3.3 项目配置

要想在一个项目中使用email-ext插件,你首先必须在项目配置页激活它。在构建后操作——“增加构建后操作步骤”选项中勾选”Editable Email Notification”标签。

图:E-mail Notification项目配置界面

 

 

4.3.3.1 项目基本配置

当插件激活后你就能编辑如下字段(只列出常用的字段):

 

l Project Recipient List:这是一个以逗号(或者空格)分隔的收件人邮件的邮箱地址列表。允许您为每封邮件指定单独的列表。
Ps:如果你想在默认收件人的基础上添加收件人:$DEFAULT_RECIPIENTS,<新的收件人>

n Default Subject:允许你配置此项目邮件的主题。

n Default Content:跟Default Subject的作用一样,但是是替换邮件内容。

n Attach Build Log:附件构建日志。

u Compress Build Log before sending:发送前压缩生成日志(zip格式)。

4.3.3.2 项目高级配置

要查看插件的高级配置,请点击“ Advanced Settings...”按钮。该选项允许您各种类型的邮件触发器指定接收者。默认情况下,是没有配置的触发器,所以默认情况下不会发送邮件。要增加更多的触发器,选择“Add a Trigger”旁边下拉列表中的类型,它会增加到控件上面的列表中。

配置说明:

l Send to Recipient List:如果勾选,邮件将发送到”Project Recipient List”中的所有邮件地址。

l Send to Committers:该邮件会发给上次构建时检查过代码的人员,该插件会基于提交者的ID和追加Jenkins配置页面的(default email suffix)默认邮件后缀来生成一个邮件地址。譬如,上次提交代码的人是”first.last”, 默认的电子邮件后缀为“@somewhere.com”,那么电子邮件将被发送到“first.last@ somewhere.com”。

l Send To Requester:如果勾选,邮件将发送给构建触发者。

l Include Culprits:如果勾选,而且 “Send To Committers”勾选,邮件将包含最后成功构建的提交者。

l More Configuration:通过单击”+(expand)”链接您能为每个邮件触发器作更多单独的设置。

n Recipient List:这是一个以逗号(或者空格)分隔的可接受邮件的邮箱地址列表。如果触发就发送邮件到该列表。该列表会追加在”Global Recipient List”里。

n Subject:指定选择邮件的主题。注意:高级选项中的邮件触发器类型可覆盖对它的配置。

n Content:指定选择邮件的内容主体。注意:高级选项中的邮件触发器类型可覆盖对它的配置。

l Remove通过单击指定触发器当前行的“Delete”按钮,你可以删除该触发器。

4.3.3.3 触发器类型

配置发送需首先确定触发器
注意:所有的触发器都只能配置一次

l Failure:即时发送构建失败的邮件。如果”Still Failing”触发器已配置,而上一次构建的状态是”Failure”,那么”Still Failing”触发器将发送一封邮件来替代(它)。

l Unstable:即时发送构建不稳固的邮件。如果”Still Unstable”触发器已配置,而上一次构建的状态是”Unstable”,那么”Still Unstable”触发器将发送一封邮件来替代(它)。

l Still Failing:如果两次或两次以上连续构建的状态为”Failure”,发送该邮件。

l Success:如果构建的状态为”Successful”发送邮件。如果”Fixed”已配置,而上次构建的状态为“Failure”或“Unstable”,那么”Fixed”触发器将发送一封邮件来替代(它)。

l Fixed:当构建状态从“Failure”或“Unstable”变为”Successful”时发送邮件。

l Still Unstable:如果两次或两次以上连续构建的状态为” Unstable “,发送该邮件。

l Before Build:当构建开始时发送邮件。

4.3.3.4 项目邮件变量

注意:这里只解释全局配置页面中缺少的变量。

 

l ${DEFAULT_SUBJECT}:这是Jenkins系统配置页面默认配置的邮件主题

l ${DEFAULT_CONTENT}:这是Jenkins系统配置页面默认配置的邮件内容主体

l ${PROJECT_DEFAULT_SUBJECT}:这是项目的默认邮件主题。高级配置中使用该令牌的结果要优先于Default Subject字段。警告:不要在Default Subject 或者Default Content中使用该令牌,它会产生一个未知的结果。

l ${PROJECT_DEFAULT_CONTENT}:这是项目的默认邮件内容主体。高级配置中使用该令牌的结果要优先于Default Content字段。警告:不要在Default Subject 或者Default Content中使用该令牌,它会产生一个未知的结果。

4.3.4 E-mail Notification邮件效果展示

图:E-mail Notification邮件效果图

 

 

5 Jenkins 使用流程

持续交付需要快速且自动地部署各种更改集。完成部署或交付工作需要多个步骤。标准的流程是:

  • 开发人员交付各种更改
  • 源代码控制工具进行构建工作
  • 运行自动的测试工作
  • 安装构建内容

6 Jenkins框架的部署拓扑结构(当前)

l 开发部署:开发人员向诸如 Subversion(SVN)等的源代码控制服务器提交更改集

l 持续集成:添加 Jenkins 以后,会有一个 Jenkins 主机器。Subversion构建工具包已安装在该服务器上。Jenkins使用该构建工具包并通过 Subversion下载源代码,同时触发构建工具包生成构建版本。所有的项目都在在 Jenkins 主机器上进行管理。Android打包,AppScan扫描,Web项目开发环境发布在Jenkins master机器上运行,IOS打包(192.168.1.90_Darwin_IOS)作为Jenkins 从机器提供服务。它们由 Jenkins 主机器控制,并运行安装项目。

图.Jenkins框架的部署拓扑结构

 

 

 


https://www.cnblogs.com/YatHo/p/6647561.html?utm_source=itdadao&utm_medium=referral


Jenkins——多环境部署项目 文章目录前言一、新建任务二、配置参数1.General配置2.源码管理配置3.构建——脚本配置三、构建总结 前言 随着公司项目逐渐完善,开发、测试、老板都会有使用项目的需求,为了各个环境环境之间互不影响,采用Jenkins多环境部署(主要原因是解放我的双手,因为这些活儿都是纯机械式劳动o(╥﹏╥)o) 以下操作都是在Linux环境下进行。 一、新建任务 新建一个自由风格的任务 二、配置参数 1.General配置 配置环境参数:根据实际环境进行配置 2.源码管理配置 配置仓库地址和拉取仓库代码用户 阅读详情

相关推荐

jenkins k8s环境部署

前端部署 准备工作: 跟前端开发确认好git地址,代码分支,打出的包名。 1.打开jenkins,选择前端分组环境 2.在部署新应用时,需要创建新的jenkins job,我们可以基于已有的前端项目创建新的项目(简单说就是copy) 选中一个前端项目打开 复制名字 新建任务 3.创建新jenkins job成功后,修改git地址以及变量。 修改git地址 节点限制选择slave1 修改变量,修改完成后点击保存。自此新应用job创建完成。 4.登录172.16.

weixin_46684804的博客 7852

Jenkins 发布到 windows 主机

由于一些原因, 最近程序部署在windows 服务器上比较多, 本文以将前端程序发布到windows server 2016 为例进行介绍。

又是再见? 1486

jenkins自动化部署,环境搭建,应用部署

jenkins自动化部署,环境搭建,应用部署 jenkins集成git jenkins集成maven jenkins自动拉取代码打包并部署运行 jenkins应用部署详细教程 jenkins自动化部署 jenkins环境搭建

Mr.L-OAM的博客 1092

jenkins访问地址_运维机器人hubot集成jenkins

背景Jenkins 现在不允许放在互联网上,只能通过内网去访问。有时候你在外面,有时候你在连别的机房的 VPN,这时候开发叫你发布咋办呢?答案就是发指令给 hubot,它去执行。先上个图看看:集成 Jenkins安装配置插件npminstallhubot-jenkins-optimised--save然后把 hubot-jenkins-optimised 添加到 external-...

weixin_39783512的博客 441

jenkins离线部署套装(你需要的它都有)

jenkins离线部署套装(你需要的它都有)

英飞凌TC3xx的GTM模块到底有多强?从PWM生成到电机驱动,一篇讲透车载定时器核心

本文深入解析英飞凌TC3xx系列中的GTM模块在汽车电子领域的强大功能,从PWM生成到电机驱动的全链路设计。通过模块化架构和硬件级解决方案,GTM显著提升系统精度和响应速度,适用于电机控制、电源管理等复杂场景。文章结合实战经验,详细拆解GTM的技术实现和性能优势。

weixin_27741699的博客 204

Jenkins在Linux环境下的安装与配置,包含遇到的问题以及解决方法

Linux环境安装部署Jenkins

Derek7117的博客 1万+

SAP-MM-采购申请字段解析

采购申请抬头以及行项目字段解析

yanzibing99的博客 7305

Jenkins部署

【代码】Jenkins部署。

Djdhdhskn的博客 606

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 324

OpenCV 开闭运算

开运算和闭运算是将腐蚀和膨胀按照一定的次序进行处理。 但这两者并不是可逆的,即先开后闭并不能得到原来的图像。 开运算 开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。 闭运算 闭运算与开运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。 cv.morphologyEx(img, op, kernel) img: 要处理的图像 op: 处理方式:若进行开运算,则设为cv.MORPH_OPEN,若进行闭

꧁༺ʚvv༒catɞ༻꧂的博客 949

Jenkins环境部署

环境搭建: 所有包在目录 /usr/src/jenkins/packages 安装在目录 /usr/local/jenkins Jdk环境部署 [root@localhost packages]# tar zxvf jdk-8u121-linux-x64.tar.gz [root@localhost packages]# mv jdk1.8.0_121/ /usr/local/jenkins/jdk [root@localhost packages]# vim /etc/profile //末尾添加

. 7752

SpringBoot 教程:SpringBoot多种方式实现静态Html页面跳转

本教程介绍了 Spring Boot 中实现静态 Html 页面跳转的常用方法,包括重定向跳转、直接返回 ModelAndView 对象以及使用 Thymeleaf 模板引擎。如果你的项目中使用了 Thymeleaf 模板引擎,那么可以利用它来实现静态页面的跳转。对于静态的 Html 页面,我们可以使用多种方式来实现跳转功能。重定向是一种常见的页面跳转方式,它通过发送 HTTP 重定向响应头来告知浏览器跳转到指定的页面。在 Spring Boot 中,我们可以将视图名称设置为静态页面的路径。

2301_79325657的博客 2448

Linux环境下 Jenkins部署

Linux环境下 Jenkins部署以及发布一、Jenkins是什么二、使用步骤1.引入库2.读入数据总结 一、Jenkins是什么 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。简而言之,Jenkins 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

zhr19970910的博客 5808

MFC Windows 程序设计[122]之树形下拉列表框(附源码)

MFC是微软公司提供的一个类库(class libraries),用以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到难,层层深入,将调试过程中所遭所遇进行详细讲解,注意事项进行一一列举,希望能够帮助到各位初学MFC的小伙伴,避免走弯路,费时费力。.........

hnjzfwy的博客 458

Pixhawk2.4.8接口及引脚定义

pixhawk2.4.8接口定义图解

加斯顿工程师的博客 8745

Windows、jdk8环境下的jenkins部署

本文将带来JDK-8环境下Windows的jenkins部署。本文介绍了Windows下的jenkins部署。分为几步,下载jenkins,下载插件,配置jenkins,编写脚本,完成部署。

arrow_i的博客 1870

Electron vue3 - 使用SerialPort与串口交互教程,计算机串行端口(COM口、USB转串口等)进行通信连接读取或写入Arduino、单片机、PLC、扫码枪、打印机、老式调制解调器!

实战Electron使用SerialPort与串口交互详细全过程,Electron-vue3与串口交互示例,Electron vue使用serialport实现串口交互通讯,Electron-vue使用serialport连接本地串口,electron-vue 台称串口对接 SerialPort,electron串口调试工具,electron+vue+serialport实现串口通信,串口通信serialport使用和调试,electron-vue使用serialport串口通信及踩过的坑(已解决!)ele

🏆 前端领域优质创作者 4641

Jenkins 部署多个环境

Jenkins 部署多个环境

Define_best的博客 3192

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

离线环境jenkins构建前端部署镜像

内网部署jenkins,完成前端镜像打包

害怕的博客 903

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jenkins环境部署配置

环境部署的步骤: 1.拉代码(svn up 或者git pull)编译打包maven工程(mvn -U -P) 2.关闭tomcat 3.删除原有部署目录(rm -f) 4.部署新包(cp -r) 5.参数化 6.重启tomcat jenkins需要配置哪些: git地址计权限、maven配置、ssh登录信息 Git代码权限配置 1)、安装git bash 2)、打开git bash 3)、~目录...

qq_36226139的博客 418

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

搭建Jenkins实现自动化部署环境

大家好,我是阿飞云怕什么真理无穷,进一步有近一步的欢喜​本文是团队内小兄弟的学习笔记整理而来。看完本文大体了解为什么要使用Jenkins,部署Jenkins依赖的环境,以及如何用Jenki...

阿飞云漫步 1万+

Gitlab+jenkins环境部署

Gitlab+jenkins环境部署 主机名: 主机名IP: 服务部署 node4 192.168.1.14 程序员主机 node5 192.168.1.15 Gitlab服务器 node6 192.168.1.16 Jenkins服务器 node4:程序员电脑 #下载git和安装二级命令补全功能软件 yum -y install git yum -y inst...

李榕茂的博客 394

Jenkins的环境部署

Jenkins的搭建

zpz2001的专栏 1428

多环境Jenkins部署:DockerJenkins_tutorial生产环境配置

DockerJenkins_tutorial是一个基于Docker的Jenkins多环境部署解决方案,帮助开发者快速搭建和管理生产级Jenkins环境。本教程将详细介绍如何利用该项目提供的工具和配置文件,实现Jenkins的容器化部署、服务编排和多环境管理,让你的CI/CD流程更加高效可靠。 ## 📋 项目结构概览 该项目采用模块化设计,主要包含以下核心目录和文件: - **jenkins

gitblog_00073的博客 886
上一篇: 阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了
下一篇: MQTT服务器搭建-mosquitto1.4.4安装指南
springlovejava
博客等级 码龄9年 26粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值