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

时间:2016-07-23 17:23:13

标签: git jenkins ssh

我正在努力实现将变化从jenkins推向aws的自动化过程。问题似乎是在GIT仓库中,我有2个文件夹,一个是docroot,另一个是database。我需要docroot进入/var/www/html,现在应该忽略数据库。

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

设置1:

构建后操作

转移集

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

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

设置2

构建后操作

转移集

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

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

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

1 个答案:

答案 0 :(得分:5)

如果您在此步骤中使用的插件是Publish Over SSH Plugin,这似乎就是这种情况,第一个调用点是在控制台中启用详细输出。要显示此选项,您必须单击服务器名称下拉列表下的Advanced...按钮,您应该看到如下内容:

Enabling verbose output

完成后,而不仅仅是:

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字段:

enter image description here

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