Java Jenkins:如何在两台服务器上构建和部署单个作业
我在存储库中有代码。现在我想创建一个作业,它将从存储库构建代码并将其部署到两台服务器上 现在我创建了两个配置完全相同的作业。唯一的变化是它需要部署到的服务器Java Jenkins:如何在两台服务器上构建和部署单个作业,java,jenkins,jenkins-plugins,javabuilders,Java,Jenkins,Jenkins Plugins,Javabuilders,我在存储库中有代码。现在我想创建一个作业,它将从存储库构建代码并将其部署到两台服务器上 现在我创建了两个配置完全相同的作业。唯一的变化是它需要部署到的服务器 是否可以使用单个作业来完成此操作?我建议使用此maven插件。您可以配置可以附加到正常maven作业的批处理任务(maven目标或脚本) 首先,你有一份詹金斯的工作,可以正常地构建你的工作 然后,使用这个插件,您可以在同一个Jenkins作业上配置两个额外的任务,即“Deploy-server-1”和“Deploy-server-2” 构
是否可以使用单个作业来完成此操作?我建议使用此maven插件。您可以配置可以附加到正常maven作业的批处理任务(maven目标或脚本) 首先,你有一份詹金斯的工作,可以正常地构建你的工作 然后,使用这个插件,您可以在同一个Jenkins作业上配置两个额外的任务,即“Deploy-server-1”和“Deploy-server-2” 构建作业后,单击“任务”按钮,可以轻松运行部署任务 因此,过程是:
-> build
-> deploy server 1
-> deploy server 2
如果你看一下我为Batch Tash插件添加的链接,他们有一个名为“release”的任务。想象一下,你可以有更多的任务,做你想做的事情
您可能需要在Jenkins服务器上拥有管理员权限才能安装此插件,如果它还不存在的话…您可以使用它,您可以将构建工件从一个项目复制到另一个项目。所以你们只需要在作业中构建你们需要的东西,它可以在其他作业中共享。我也遇到了同样的问题,我将使用多个curl语句来解决它。看到我的帖子了吗
jenkins不允许我添加多个命令行执行任务,所以我需要在一个命令行中使用三个curl语句。我解决了ant任务的类似问题-从build.properties文件中获取服务器URL作为输入参数。在我的例子中,有几个环境需要支持相同的脚本,每个环境上有1-2台服务器
<target name="deploy.application">
<groovy>
if (properties['app.server'] && properties["app.server"] != "") {
ant.project.executeTarget('deploy.server1')
}
if (properties['app.server2'] && properties["app.server2"] != "") {
ant.project.executeTarget('deploy.server2')
}
</groovy>
</target>
if(属性['app.server']和属性[“app.server”]!=“”){
ant.project.executeTarget('deploy.server1')
}
if(属性['app.server2']和属性['app.server2']!=“”){
ant.project.executeTarget('deploy.server2')
}
我通过添加灵活的发布插件解决了这个问题,并使用Run:'Always'作为条件操作。现在,可以在灵活的发布条件操作中添加尽可能多的操作,并且所有这些操作都可以是“将WAR/EAR部署到容器”。您可以使用
添加要使用Jenkins节点部署代码的服务器:管理Jenkins>管理节点>新建节点
确保为每个节点添加一个标签,以便将它们分组并部署到该组
创建一个新的自由式项目,并选中“此项目已参数化”选项。添加一个参数并选择Label,然后添加刚刚为服务器(节点)创建的标签
从这里开始,每个构建步骤将在每个标记的节点中复制自身,因此您可以使用SCM插件、GitHub、GitLab等获取存储库代码,或者直接从服务器获取代码,这取决于您,代码将部署在每个节点上
请注意,如果您的代码需要编译,它将在远程服务器上编译。此外,每次将此生成部署到节点时,都会在生成队列中创建一个额外的生成。能否对一个作业执行生成后操作以调用另一个作业?关键是我不想维护两个作业。我不想构建两次相同的代码,因为它是同一个war文件。我只想在两台服务器上部署。然后您可以配置一个Jenkins build并添加两个“任务”来执行部署。一旦我选择部署。它不允许我第二次选择它。