6

我在存储库中有代码。现在我想创建一个作业,它将从存储库构建代码并将其部署在两台服务器上。

现在我创建了两个具有完全相同配置的作业。唯一的变化是它需要部署的服务器。

是否可以通过单一工作做到这一点?

4

6 回答 6

3

我可以建议使用这个 Maven 插件吗?您可以配置可以附加到正常 maven 作业的批处理任务(maven 目标或脚本)。

https://wiki.jenkins-ci.org/display/JENKINS/Batch+Task+Plugin

首先,您有一份 Jenkins 工作,可以正常构建您的工作。

然后,使用此插件,您可以在同一个 Jenkins 作业上配置两个额外的任务,例如“Deploy-server-1”和“Deploy-server-2”。

构建作业后,单击“任务”按钮,您可以轻松运行部署任务。

所以过程是:

-> build
     -> deploy server 1
     -> deploy server 2

如果您查看我为 Batch Tash 插件添加的链接,他们有一个名为“发布”的任务。想象一下,你可以在它下面有更多的任务,做任何你想做的事情。

您可能需要 Jenkins 服务器上的管理员权限才能安装此插件,如果它还没有...

于 2013-02-22T19:19:50.220 回答
1

您可以使用节点和标签参数插件部署到多个服务器。

添加要使用 Jenkins 节点部署代码的服务器:管理 Jenkins >管理节点>新节点

请务必为每个节点添加一个标签,以便您可以将它们组合在一起并部署到该组。

创建一个新的自由式项目并选中This project is parameterized选项。添加一个参数并选择Label,然后添加您刚刚为您的服务器(节点)创建的标签。

从这里开始,每个构建步骤都将在每个标记节点中复制自身,因此您可以使用 SCM 插件、GitHub、GitLab 等或直接从您的服务器获取存储库代码,这取决于您,代码将被部署在每个节点上。

请注意,如果您的代码需要编译,它将在远程服务器上编译。此外,每次将此构建部署到节点时,都会在您的构建队列中创建一个额外的构建。

于 2017-04-04T22:45:19.643 回答
1

我解决了这个添加灵活发布插件的问题,并作为条件操作,使用 Run:'Always'。现在可以像在灵活发布条件操作中一样添加尽可能多的操作,所有这些操作都可以是“将 WAR/EAR 部署到容器”。

于 2016-01-27T12:49:52.363 回答
0

您可以使用Copy Artifact Plugin,您可以在其中将构建工件从一个项目复制到另一个项目。因此,您只需在工作中构建您需要的内容,并且可以在其他工作中共享。

于 2013-02-23T08:43:11.403 回答
0

我遇到了同样的问题,我将使用多个 curl 语句来解决它。看我的帖子http://martin.podval.eu/2013/10/tomcat-7-remote-deployment.html 嗯,jenkins 不允许我添加多个命令行执行任务,所以需要在里面使用三个 curl 语句一。

于 2013-10-17T09:23:21.513 回答
0

我用 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>
于 2013-10-17T11:44:07.797 回答