0%

Git 仓库中脚本无执行权限问题的解决方法

问题描述

CI 在编译项目时报错如下:

1
2
3
4
5
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 知道某个文件需要更新权限, 如下:

1
git update-index --chmod=+x gradlew

其中 gradlew 是仓库中脚本路径, 方法实测验证通过.

引用

https://stackoverflow.com/questions/58282791/why-when-i-use-github-actions-ci-for-a-gradle-project-i-face-gradlew-permiss

  • 本文作者: 6x
  • 本文链接: https://6xyun.cn/article/118
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-ND 许可协议。转载请注明出处!