我正在尝试执行从 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...
按钮,您应该看到类似以下内容:
完成此操作后,您不仅可以做到以下几点:
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
,这不是您想要的。关于git - 通过SSH发送构建工件-无法创建目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38544560/