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'] &amp;&amp; properties["app.server"] != "") {
      ant.project.executeTarget('deploy.server1')
    }
    if (properties['app.server2'] &amp;&amp; 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并添加两个“任务”来执行部署。一旦我选择部署。它不允许我第二次选择它。