首页 > 解决方案 > 如何使用 Ansible 脚本将构建的 jar 从 Jenkins 复制到远程服务器?

问题描述

我有一个 Maven 应用程序,它位于 GitHub 存储库中。我必须在 Jenkins 中设置一个 Maven 项目管道,以便在成功构建后,生成的 jar 文件将自动复制到远程服务器位置(不是任何容器)。Jenkins 安装不是由我维护的,我也不是经验丰富的 Jenkins 用户。一位同事向我展示了她在项目根目录的部署文件夹中编写的一些 YAML 文件,这帮助她完成了工作。这些文件是inventory.yml,其中列出了部署服务器地址和其他变量,以及deploy.yml,其中包含Ansible 脚本,它将jar 复制到服务器位置。然而,据她说,实际上将罐子复制到远程位置的声明似乎并不多:

copy: src=/tmp/{{ artifactPath | basename }} dest=/tmp/ mode=0777

尽管如此,我还是尝试使用该项目创建一个 Jenkins Maven 项目,但控制台输出似乎没有被调用脚本,因为没有显示任何 echo 命令。

然后,我尝试创建一个 Post-Build 步骤来执行一个 shell 脚本,尝试根据对这个问题的回答将 jar 文件 scp 到远程位置:

如何将从 jenkins 构建的文件或 jar 文件复制到 diff 主机服务器

scp –P 22 DQMDME-0.0.1-SNAPSHOT.jar ci_deploy@cr2xr909489:~/home/ddqmeng/DQMDME-0.0.1-SNAPSHOT.jar

但是,这会导致“主机密钥验证失败”消息。

我尝试使用以下方法跳过主机文件验证:

https://www.middlewareinventory.com/blog/how-to-ignore-ssh-host-key-verification/

但是,我没有运气。我无权访问我将在那里添加密钥的 Jenkins 服务器。另外,我不能自己添加任何插件。我也许可以要求安装它们,但这将是一个漫长的过程。是否可以在没有任何额外插件的情况下实现这一目标?

标签: mavenjenkinsansible

解决方案


推荐阅读