Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Jenkins执行shell脚本_Shell_Unix_Jenkins_Mv - Fatal编程技术网

通过Jenkins执行shell脚本

通过Jenkins执行shell脚本,shell,unix,jenkins,mv,Shell,Unix,Jenkins,Mv,我有一个非常简单的shell脚本build-dev.sh。这就是它的样子: #artifact build script echo "Running application build for DEV environment" ng build --deploy-url "js/" --base-href "/my-app-ui/" --configuration=dev mkdir dist/my-app-ui/js mv ./dist/my-app-ui/*.{js,svg,css} ./

我有一个非常简单的shell脚本
build-dev.sh
。这就是它的样子:

#artifact build script
echo "Running application build for DEV environment"

ng build --deploy-url "js/" --base-href "/my-app-ui/" --configuration=dev
mkdir dist/my-app-ui/js
mv ./dist/my-app-ui/*.{js,svg,css} ./dist/my-app-ui/js
它构建Angular应用程序,然后创建一个文件夹
js
,然后将扩展名为
js
svg
css
的文件移动到此文件夹

当我自己直接执行这个脚本时,它工作得非常好

问题是我希望脚本由Jenkins执行。因此,我在构建中配置了“执行shell”步骤。执行Jenkins作业后,脚本第三行(
mv
命令)执行失败

我想这可能与我的脚本中有
*{js,svg,css}
有关


你能告诉我我做错了什么吗?

好吧,我仍然不知道为什么它不起作用,但问题在于括号的使用-
{js,svg,css}
。 我已将
mv
命令替换为三行:

mv ./dist/my-app-ui/*.js ./dist/my-app-ui/js
mv ./dist/my-app-ui/*.svg ./dist/my-app-ui/js
mv ./dist/my-app-ui/*.css ./dist/my-app-ui/js

这很好用。它仍然是一种解决方法,但它的作用完全相同,因此对我来说效果很好。

好吧,我仍然不确定为什么它不起作用,但问题在于括号的使用-
{js,svg,css}
。 我已将
mv
命令替换为三行:

mv ./dist/my-app-ui/*.js ./dist/my-app-ui/js
mv ./dist/my-app-ui/*.svg ./dist/my-app-ui/js
mv ./dist/my-app-ui/*.css ./dist/my-app-ui/js

这很好用。这仍然是一种解决方法,但它的作用完全相同,因此对我来说效果很好。

可能是因为jenkins实际目录与运行脚本时的目录不同。和/或jenkins用户可能没有权限执行mkdirIt,因为它是同一目录。我通过SSH访问服务器,并从Jenkins工作区目录执行脚本。并且
mkdir
工作正常,文件夹已创建。在ngbuild期间,您确定“js/”目录在./dist/目录中吗?因为部署url是js/的,所以所有资产都应该在当前目录下的js/目录中创建。最后一步是尝试将这些资产从其他目录中移动。它不应该像mv./dist/js/*.{js,svg,css}./dist/my-app-ui/js/??您是否也检查了当前工作目录以及创建js/目录的位置??可能是因为jenkins的实际目录与您运行脚本时的目录不同。和/或jenkins用户可能没有权限执行mkdirIt,因为它是同一目录。我通过SSH访问服务器,并从Jenkins工作区目录执行脚本。并且
mkdir
工作正常,文件夹已创建。在ngbuild期间,您确定“js/”目录在./dist/目录中吗?因为部署url是js/的,所以所有资产都应该在当前目录下的js/目录中创建。最后一步是尝试将这些资产从其他目录中移动。它不应该像mv./dist/js/*.{js,svg,css}./dist/my-app-ui/js/??您是否也检查了当前的工作目录以及js/目录的创建位置??您可能想调查一下,当您直接运行时,与Jenkins执行的操作相比,您是否实际上运行了相同的shell。一个常见的问题是ssh代理在非交互式shell中运行,并且不提供代理用户的配置文件。很多S/O帖子都是这样的,你可能会有类似的断开连接,默认的系统非int shell不支持这种语法。你可能想调查一下,当你直接运行时,你是否在运行同一个shell,而Jenkins执行的是什么。一个常见的问题是ssh代理在非交互式shell中运行,并且不提供代理用户的配置文件。很多S/O帖子都是这样,您可能会有类似的断开连接,默认的系统非int shell不支持这种语法。