问题描述
CI 在编译项目时报错如下:
10:09:17 + ./gradlew --refresh-dependencies assembleRelease test --parallel --no-daemon
10:09:17 /tmp/hudson9094001854298651528.sh: line 11: ./gradlew: Permission denied
10:09:17 Build step 'Execute shell' marked build as failure
10:09:17 Archiving artifacts
10:09:17 Finished: FAILURE
原因分析
目测是由于CI环境中这个 gradlew
脚本没有权限导致的.
并且尝试发现即便在本地使用 chmod
给这个文件加上运行权限, 也没法提交这个 “变化”, Git
根本检测不到这个动作.
解决办法
解决问题的关键是让 Git
把脚本权限一起 commit
并且 push
到服务器.
经过翻阅相关文档发现可以使用命令让 Git
知道某个文件需要更新权限, 如下:
git update-index --chmod=+x gradlew
命令需要在 git add
之后使用; 也可以在 git commit
之后使用, 但此时需要将权限修改的动作一并提交(可以使用 git commit --amend
修改已经已经提交的代码)再推送到服务器. 注意 gradlew
是仓库中脚本路径, 请根据实际情况调整.