【问题标题】:Jenkins `Make gradlew executable` option do not make `gradelw executable詹金斯`Make gradlew executable`选项不使`gradelw可执行
【发布时间】:2015-01-23 07:49:38
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: linux jenkins gradle file-permissions gradlew


    【解决方案1】:

    假设文件 script.sh 需要设置可执行位。使用command 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多