linux - Jenkins `Make gradlew executable` 选项不使`gradelw 可执行

标签 linux jenkins gradle file-permissions gradlew

我在 Linux 机器 (CentOS) 上安装了 Jenkins,并尝试在主控主机上构建基于 Gradle 的项目。我的项目使用基于 Stash Git 的存储库作为 SCM。

在 Jenkins 构建作业中,我启用了 Clean before checkout 选项。我看到 gradlew 脚本在没有可执行权限的情况下被 check out 。因此,我为任务设置了 Make gradlew executable 复选框。但我仍然看到问题:

java.io.IOException: Cannot run program "/project/dir/gradlew" (in directory "/project/dir/"): error=13, Permission denied

我检查了 gradlew 权限,但该文件没有可执行文件。

有谁知道如何调试/设置它?

现在,我必须使用额外的构建步骤execute shell script 来设置gradlew 的可执行权限。

注意 1:我使用 Use Gradle Wrapper 构建选项而不是 Invoke Gradle 因为我在 Internet 上找到了一些建议。

注释 2:我找到了 make gradlew script executable问题并检查我的 Jenkins 构建应该包含此修复程序。我使用 Jenkins build 1.581

最佳答案

假设文件 script.sh 需要设置可执行位。使用命令 git ls-tree 检查文件权限:

C:\views\myproject>git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.sh

如您所见,该文件具有 644 权限(忽略 100)。我们想将其更改为 755:

C:\views\myproject>git update-index --chmod=+x script.sh
C:\views\myproject>git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   script.sh
#

文件现在已暂存。请注意,文件内容没有改变,只有元数据。我们必须提交文件以保存更改:

C:\views\myproject>git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
 0 files changed, 0 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 script.sh

再次运行 git ls-tree 以查看更改:

C:\views\myproject>git ls-tree HEAD
100755 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.sh

Source

关于linux - Jenkins `Make gradlew executable` 选项不使`gradelw 可执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124504/

相关文章:

c - ARM Linux 可执行文件神秘地运行在 x86_64 上

linux - 克服表现不佳的 Linux 进程?

linux - 独立于路径的程序

gradle - 访问在gradle中使用 'apply from'应用的文件中声明的类

gradle - 无法在kotlin-dsl的gradle中将所有配置参数与自定义配置一起使用

linux - 权限设置为644但用户无法读取:-(

Jenkins 通过 https 将 war 部署到 tomcat

java - Jenkins 将自己的日志记录添加到 Maven 构建过程中

ios - 如何在 jenkins 上运行 ios 模拟器进行 ui 自动化测试

Android Studio 库项目错误