【问题标题】:Jenkins 0 files published after buildJenkins 0 构建后发布的文件
【发布时间】:2014-06-05 14:11:17
【问题描述】:

我有一个 Jenkins 服务器设置,有两个工作

第一个工作轮询开发分支并在 jenkins 服务器上构建项目。然后我有另一个工作来轮询生产分支,这会在另一个 jenkins slave 上构建这个分支,它是登台服务器。此作业已配置为在成功构建时应通过 ssh 将工件发布到生产服务器。

所有 SSh 密钥都已设置,登台服务器连接到生产服务器,但传输了 0 个文件

using GIT_SSH to set credentials Bitbucket Repo

using .gitcredentials to set credentials
Checking out Revision 89874cc01a9f669df69817b1049b1ab98ecb19d3 (origin/Production)

SSH: Connecting from host [nginx-php-fastcgi]
SSH: Connecting with configuration [AmazonAWS] ...

SSH: Disconnecting configuration [AmazonAWS] ...
SSH: Transferred 0 file(s)
Finished: SUCCESS

我检查了暂存工作区,文件正在那里构建,只是没有发送到产品服务器。有什么建议吗??

我还尝试了一个不同的删除前缀,如下所示,这里是Jenkins transferring 0 files using publish over SSH plugin

【问题讨论】:

  • 我很困惑,您是在尝试访问同一构建或另一个构建作业的文件吗?如果相同的构建,为什么要指定完整的文件系统路径而不是依赖${WORKSPACE}(您不需要指定,因为这是默认的基本目录)
  • 我正在尝试访问该构建的文件,Jenkins 应该在登台服务器上构建提交,然后运行压力测试应用程序,一旦测试通过,它们应该被部署到生产服务器。我希望生产服务器只允许通过端口 80 进行公共连接,所有其他端口都将阻止除端口 22 之外的所有连接,该端口只能通过登台服务器访问,登台服务器允许基于每个 ip 进行访问,另外生产服务器上的安全性。
  • 目前所有端口都是打开的,所以它不应该是安全错误配置我已将 ${WORKSPACE} 设置为目标源文件,这是 Jenkins 在生产服务器上构建提交的地方但即便如此,它也没有部署文件
  • 我已经更新了我的答案。如果您想要工作区中的所有文件,则应该将“源文件”留空。
  • 谢谢!!我会确保在我的论文中承认你!

标签: jenkins automated-tests jenkins-plugins jenkins-cli


【解决方案1】:

您应该从Remove prefix 行中删除/*

编辑:
您的 源文件 不能位于作业的工作区之外。如果您的文件位于工作空间的根目录中,只需将其设置为* 以传输所有工作空间文件,或将其设置为**/* 以包含子目录。否则指定一个相对于${WORKSPACE} 的模式。

即使添加前导 / 也不会逃避这一点,因为它所做的只是将其附加到工作区,在您的情况下它变为 ${WORKSPACE}/var/www/workspace/opms-staging-server。即使使用父目录../ 也不起作用。这是出于安全考虑,否则作业配置器可能会从 Jenkins 服务器传输私有文件。

如果您需要从其他作业中获取文件,则需要使用 Copy Artifacts 构建步骤。告诉我你的情况是否如此,我会进一步解释。

【讨论】:

  • 我已经尝试过回答这个问题*.com/questions/22158092/…
  • 更新的答案:在剥离父目录引用 (../) 后,“源文件”部分按字面意思添加到当前 ${WORKSPACE} 位置(../