我正在尝试执行从 Jenkins 到AWS push 变革的自动化过程。问题似乎是在GIT存储库中,我有2个文件夹,一个是docroot,另一个是database。我需要将docroot放入/var/www/html中,并且现在应该忽略数据库。

作为试运行,我正在尝试以下设置:

设置1:

构建后的 Action

下移集

Source files: **/*
Remove prefix: empty
Remote directory: empty
Exec command: pwd

结果:
错误:发布时发生异常,异常消息[无法创建或更改为目录。目录[数据库]
生成步骤“通过SSH发送生成工件”将生成结果更改为UNSTABLE
已完成:不稳定

设置2 :

构建后的 Action

下移集
Source files: **/*
Remove prefix: empty
Remote directory: /var/www/html
Exec command: pwd

结果:
错误:发布时发生异常,异常消息[无法创建或更改为目录。目录[var]
生成步骤“通过SSH发送生成工件”将生成结果更改为UNSTABLE
已完成:不稳定

所有错误似乎都围绕目录的创建-但我不需要创建一个...

最佳答案

如果您要用于此步骤的插件是Publish Over SSH Plugin,似乎是这种情况,那么第一步要在控制台中启用详细输出。要显示此选项,您必须单击带有服务器名称的下 pull 菜单下的Advanced...按钮,您应该看到类似以下内容:

git - 通过SSH发送构建工件-无法创建目录-LMLPHP

完成此操作后,您不仅可以做到以下几点:

ERROR: Exception when publishing, exception message [Could not create or change to directory. Directory [var]]
Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE

您可能会看到以下内容:
SSH: Connecting from host [some.host]
SSH: Connecting with configuration [Some Configuration] ...
SSH: Creating session: username [user], hostname [x.x.x.x], port [22]
SSH: Connecting session ...
...
SSH: cd [/var/lib/module/]
SSH: OK
SSH: mkdir [var]
SSH: FAILED: Message [Permission denied]

这应该为您提供可能出问题的线索。

在您的情况下,您没有明确创建任何目录,但是如果切换Remote directory字段的帮助提示,则会看到以下内容:
Optional destination folder.

This folder will be below the one in the global configuration, if present.
The folder will be created if does not exist.

这表明您尝试使用pwd的位置不存在,并且插件正在帮助您尝试创建该位置,但您的用户无权这样做。

尽管用户权限可能是一个问题,但是如果您确定该目录存在并且不应该创建该目录,请检查以下位置的全局设置:
Manage Jenkins -> Configure System -> Publish over SSH

并查看Remote Directory字段:

git - 通过SSH发送构建工件-无法创建目录-LMLPHP

假设在其中指定了/home/sophie,那么插件将尝试将您的文件发送到/home/sophie/var/www/html,这不是您想要的。

关于git - 通过SSH发送构建工件-无法创建目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38544560/

10-12 17:13
查看更多