我正在努力实现将变化从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 完成:不稳定
所有错误似乎都围绕创建目录 - 但我不需要创建一个......
答案 0 :(得分:5)
如果您在此步骤中使用的插件是Publish Over SSH Plugin,这似乎就是这种情况,第一个调用点是在控制台中启用详细输出。要显示此选项,您必须单击服务器名称下拉列表下的Advanced...
按钮,您应该看到如下内容:
完成后,而不仅仅是:
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
字段:
假设有/home/sophie
指定,那么插件会尝试将您的文件发送到/home/sophie/var/www/html
,这不是您想要的。