我在存储库中有代码。现在我想创建一个作业,它将从存储库构建代码并将其部署在两台服务器上。
现在我创建了两个具有完全相同配置的作业。唯一的变化是它需要部署的服务器。
是否可以通过单一工作做到这一点?
我在存储库中有代码。现在我想创建一个作业,它将从存储库构建代码并将其部署在两台服务器上。
现在我创建了两个具有完全相同配置的作业。唯一的变化是它需要部署的服务器。
是否可以通过单一工作做到这一点?
我可以建议使用这个 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 服务器上的管理员权限才能安装此插件,如果它还没有...
您可以使用节点和标签参数插件部署到多个服务器。
添加要使用 Jenkins 节点部署代码的服务器:管理 Jenkins >管理节点>新节点。
请务必为每个节点添加一个标签,以便您可以将它们组合在一起并部署到该组。
创建一个新的自由式项目并选中This project is parameterized选项。添加一个参数并选择Label,然后添加您刚刚为您的服务器(节点)创建的标签。
从这里开始,每个构建步骤都将在每个标记节点中复制自身,因此您可以使用 SCM 插件、GitHub、GitLab 等或直接从您的服务器获取存储库代码,这取决于您,代码将被部署在每个节点上。
请注意,如果您的代码需要编译,它将在远程服务器上编译。此外,每次将此构建部署到节点时,都会在您的构建队列中创建一个额外的构建。
我解决了这个添加灵活发布插件的问题,并作为条件操作,使用 Run:'Always'。现在可以像在灵活发布条件操作中一样添加尽可能多的操作,所有这些操作都可以是“将 WAR/EAR 部署到容器”。
您可以使用Copy Artifact Plugin,您可以在其中将构建工件从一个项目复制到另一个项目。因此,您只需在工作中构建您需要的内容,并且可以在其他工作中共享。
我遇到了同样的问题,我将使用多个 curl 语句来解决它。看我的帖子http://martin.podval.eu/2013/10/tomcat-7-remote-deployment.html 嗯,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>