在 jenkins 中使用 lxc-container 运行 shell bash 命令时权限被拒绝

Permission denied while running shell bash command with lxc-container in jenkins

提问人:himneh 提问时间:11/16/2023 更新时间:11/17/2023 访问量:27

问:

在 Jenkinsfile 中运行此块时:

String runTest = """
                #!/bin/bash
                if [ ${EXTRA_ENV} != "none" ]; then
                    echo "source extra environment file"
                    source ${WORKSPACE}/${upgradeEnvFile} //this one create a tmp.txt file
                fi
                cat tmp.txt
                """
            rc = sh(script: runTest, returnStatus: true)

我遇到了这个问题:

Cannot contact KVM-66: java.io.FileNotFoundException: /home/coolboy/workspace/DemoJob@tmp/durable-451e7be4/jenkins-log.txt (Permission denied)

当我访问 KVM 并 ls 它时:

total 84
drwxrwxr-x 3 coolboy coolboy  4096 Nov 15 16:37 ..
-rw-rw-r-- 1 coolboy coolboy   652 Nov 15 16:37 script.sh
-rwx------ 1 root    coolboy 65849 Nov 15 16:37 jenkins-log.txt
-rw-rw-r-- 1 coolboy coolboy     2 Nov 15 16:37 jenkins-result.txt
drwxrwxr-x 2 coolboy coolboy  4096 Nov 15 16:37 .

不知何故,“jenkins-log”的所有者更改为 root。并且,“tmp.txt”已成功创建。

我试过这些: 在运行 bash 脚本的 jenkins 管道中拒绝权限 运行 maven 命令 jenkins 时权限被拒绝

但这些都行不通。 使用相同的作业和配置,在 ubuntu18.04 上运行时总是成功的。 我的版本:

  • Jenkins 的版本:2.249.2
  • KVM 操作系统:ubuntu20.04
  • 持久任务的版本:1.35

我用以下命令设置了新的环境:

  • Jenkins 版本:2.375.3
  • 持久任务:510.v324450f8dca_4

但仍然有同样的问题。

有什么想法吗?提前致谢

巴什 詹金斯 CICD LXC

评论


答:

0赞 Jeff Sloyer 11/17/2023 #1

该文件是问题归 root 所有,而不是当前 jenkins 用户。您可以尝试运行以下命令:

sudo root
chown coolboy:coolboy jenkins-log.txt

评论

0赞 himneh 11/24/2023
实际上,该文件夹(具有 jenkins-log)是由持久任务插件创建的。所以我不知道我可以在哪里插入 chown 命令:D奇怪的是,我的管道有许多持久的任务(每个任务都有一个 jenkins-log 文件,所有这些都是在 root root 权限下传递的)。只有我提到的块失败了