Jenkins 构建执行 Shell - 文件权限被拒绝
Jenkins Build Execute Shell - File Permission denied
尝试使用 Jenkins 和 AWS EC2 建立一个简单的 NodeJS 项目。
Jenkins 在推送时运行。但总是会在构建步骤上失败。这是我的构建命令:
npm install
./script/test
./script/deploy
这给了我错误:
+ ./script/test
/tmp/jenkins10867859339292112280.sh: 3: ./script/test: Permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE
如果我在调用 ./script/test/
之前添加 chmod 777 ./script/test
它适用于测试文件。:
+ chmod 777 ./script/test
+ ./script/test
[90m․[0m
[92m [0m[32m 1 passing[0m[90m (28ms)[0m
如果我现在添加 chmod 777 ./script/deploy
对部署文件不起作用:
+ chmod 777 ./script/deploy
+ ./script/deploy
/tmp/jenkins10865500977174113561.sh: 6: ./script/deploy: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
现在我的构建命令如下所示:
npm install
chmod 777 ./script/test
./script/test
chmod 777 ./script/deploy
./script/deploy
测试文件有效,但现在找不到部署文件。
我试着看看我是否能在之前使用命令 ls -l ./script/deploy
找到它,它给了我这个结果:
+ chmod 777 ./script/deploy
+ ls -l ./script/deploy
-rwxrwxrwx 1 jenkins jenkins 338 Aug 4 18:31 ./script/deploy
+ ./script/deploy
/tmp/jenkins11221280265482222163.sh: 7: ./script/deploy: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
这个结果好像能找到文件,但是调用的时候。不能。
测试文件:
#!/bin/sh
./node_modules/.bin/_mocha ./test/test.js
部署文件:
#!/bin/sh
ssh -i JenkinsKey ubuntu@172.31.76.179 <<EOF
cd ~/3DViewer
git pull origin master
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
. ~/.nvm/nvm.sh
nvm install v16.6.1
npm install
npm install -g nodemon pm2
pm2 restart ecosystem.config.js
exit
EOF
如果需要可以提供我的构建日志。
尝试使用文件的绝对路径,如果它在工作区中尝试使用
/bin/bash ${workspace}/script/deploy
否则试试
/bin/bash <path of your script directory>/script/deploy
尝试使用 Jenkins 和 AWS EC2 建立一个简单的 NodeJS 项目。
Jenkins 在推送时运行。但总是会在构建步骤上失败。这是我的构建命令:
npm install
./script/test
./script/deploy
这给了我错误:
+ ./script/test
/tmp/jenkins10867859339292112280.sh: 3: ./script/test: Permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE
如果我在调用 ./script/test/
之前添加 chmod 777 ./script/test
它适用于测试文件。:
+ chmod 777 ./script/test
+ ./script/test
[90m․[0m
[92m [0m[32m 1 passing[0m[90m (28ms)[0m
如果我现在添加 chmod 777 ./script/deploy
对部署文件不起作用:
+ chmod 777 ./script/deploy
+ ./script/deploy
/tmp/jenkins10865500977174113561.sh: 6: ./script/deploy: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
现在我的构建命令如下所示:
npm install
chmod 777 ./script/test
./script/test
chmod 777 ./script/deploy
./script/deploy
测试文件有效,但现在找不到部署文件。
我试着看看我是否能在之前使用命令 ls -l ./script/deploy
找到它,它给了我这个结果:
+ chmod 777 ./script/deploy
+ ls -l ./script/deploy
-rwxrwxrwx 1 jenkins jenkins 338 Aug 4 18:31 ./script/deploy
+ ./script/deploy
/tmp/jenkins11221280265482222163.sh: 7: ./script/deploy: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
这个结果好像能找到文件,但是调用的时候。不能。
测试文件:
#!/bin/sh
./node_modules/.bin/_mocha ./test/test.js
部署文件:
#!/bin/sh
ssh -i JenkinsKey ubuntu@172.31.76.179 <<EOF
cd ~/3DViewer
git pull origin master
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
. ~/.nvm/nvm.sh
nvm install v16.6.1
npm install
npm install -g nodemon pm2
pm2 restart ecosystem.config.js
exit
EOF
如果需要可以提供我的构建日志。
尝试使用文件的绝对路径,如果它在工作区中尝试使用
/bin/bash ${workspace}/script/deploy
否则试试
/bin/bash <path of your script directory>/script/deploy