You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins运行sh脚本报permission denied,Windows+IDEA环境如何修改权限并提交?

问题根因

Windows 系统原生不支持 Linux 类的可执行权限位,Git for Windows 默认开启了core.filemode=false配置,会自动忽略文件权限的变更,因此你本地执行chmod +x后 Git 无法识别到变更。

解决方案

方案1:直接修改 Git 仓库中的文件权限标记(最快捷)

无需调整本地文件权限或 Git 配置,直接在 Git Bash 中执行以下命令修改 Git 暂存区的权限标记即可:

git update-index --chmod=+x ./bin/prepare.sh
git commit -m "add execute permission for prepare.sh"
git push

命令执行后 Git 会识别到权限变更,推送至远端后 Jenkins 拉取代码时会自动带上可执行权限。

方案2:修改 Jenkinsfile 执行逻辑(无需调整文件权限)

直接调整 Jenkins 阶段的执行命令,绕开可执行权限要求,有两种写法可选:

  1. 用 bash 直接调用脚本,不需要脚本本身有可执行权限:
stage('Prepare') {
    sh 'cd ./bin && bash prepare.sh'
}
  1. 执行脚本前先在 Jenkins 节点上赋权:
stage('Prepare') {
    sh 'cd ./bin && chmod +x prepare.sh && ./prepare.sh'
}

方案3:开启 Git 权限跟踪(适合长期需要调整脚本权限的场景)

先修改当前仓库的 Git 配置,开启权限跟踪:

git config core.filemode true

之后再执行chmod +x ./bin/prepare.sh就会被 Git 识别为变更,正常提交推送即可。如果需要全局生效,在命令中添加--global参数即可。


内容的提问来源于stack exchange,提问作者Nikolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 22:18:03