当前位置: 首页 > 面试题库 >

无法通过Jenkins声明性管道将Docker映像作为代理pip安装

余信然
2023-03-14
问题内容

通过詹金斯声明管道运行的泊坞权限问题。我想通过Docker容器中的Jenkins作业构建和发布Python包:

pipeline {

  agent {
    docker {
      image 'python:3.7'
      label 'docker && linux'
    }
  }

  environment {
    PACKAGE_VERSION = readFile 'VERSION'
  }

  stages {

    stage('Package') {
      steps {
        sh 'python -V'
        sh 'python -m pip install -r requirements.txt --user --no-cache'
        sh 'python setup.py sdist'
      }
    }

    stage('Deploy') {
      steps {
        ...
      }
    }

  }

  post {
    always {
      cleanWs()
    }
  }

}

但是,pip install由于以下原因,我不被允许PermissionError

+ python -m pip install -r requirements.txt –user –no-
cache要求已经满足:/usr/local/lib/python3.7/site-packages中的setuptools(来自-r
requirements.txt(第1行) )(40.0.0)(从-r requirements.txt(第2行)收集pytest)
下载
https://files.pythonhosted.org/packages/9e/a1/8166a56ce9d89fdd9efcae5601e71758029d90e5644e0b7b6eda07e67c35/pytest-3.7.0-py2.py3-none
-any.whl (202kB)收集py> = 1.5.0(从pytest->-r requirements.txt(第2行))下载
https://files.pythonhosted.org/packages/f3/bd/83369ff2dee18f22f27d16b78dd651e8939825af5f8b0b83c38729029069962/py-
1.5.4-py2.py3-none-
any.whl (83kB)收集more-itertools> = 4.0.0(来自pytest->-r
requirements.txt(第2行))下载
https://files.pythonhosted.org/packages/79/b1/eace304ef66bd7d3d8b2f78cc374b73ca03bc53664d78151e9df3b3996cc/more_itertools-4.3.0-py3-none-
any.whl(48kB )收集Pluggy> = 0.7(来自pytest->-r第2行))下载
https://files.pythonhosted.org/packages/f5/f1/5a93c118663896d83f7bcbfb7f657ce1d0c0d617e6b4a443a53abcc658ca/pluggy-0.7.1-py2.py3-none-
any.whl 收集六个> = 1.10.0(来自pytest- -r requirements.txt(第2行))正在
下载
https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-
any.whl 收集原子写入> = 1.0(从pytest->-r requirements.txt(第2行))下载
https://files.pythonhosted.org/packages/0a/e8/cd6375e7a59664eeea9e1c77a766eeac0fc3083bb958c2b41ec46b95f29c/atomicwrites-1.1.5-py2.py3-none-
any.whl 收集属性> = 17.4.0(来自pytest->-r。 (第2行)
下载
https://files.pythonhosted.org/packages/41/59/cedf87e91ed541be7957c501a92102f9cc6363c623a7666d69d51c78ac5b/attrs-18.1.0-py2.py3-none-
any.whl 安装收集的软件包:py,六个,更多itertools ,pluggy,atomicwrites,attrs,pytest

由于环境错误而无法html" target="_blank">安装软件包:[Errno 13]权限被拒绝:’/.local’检查权限。

如何解决这些权限?


问题答案:

我发现我自己认为是更漂亮的解决方案:

stage("Python Test") {
  agent { 
    docker {
      label "docker && linux" 
      image "python:3.7"
    }
  }
  steps {
    withEnv(["HOME=${env.WORKSPACE}"]) {
      sh "pip install -r requirements.txt --user"
      # python stuff
    }
  }
  post {
    cleanup {
      cleanWs()
    }
  }
}

此变通办法可以完全解决问题本身,并在用户级别安装软件包。这里的问题是HOME目录最初也不是可写的,因此会覆盖HOME目录。



 类似资料:
  • 我还有一个问题,就是通过Jenkins声明性管道运行Docker的权限。我想通过Docker容器中的Jenkins作业构建并发布Python包: 但是,我不允许由于: python-mpip安装-r要求。txt——用户——没有缓存要求已经满足:setuptools位于/usr/local/lib/python3中。7/站点包(来自-r requirements.txt(第1行))(40.0.0)收

  • 当我在jenkins中运行多分支管道代码时,我收到以下的以下错误: java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法“管道”[archive,bat,build,catchError,checkout,deleteDir,dir,echo,emailext,EmailExtrecients,error,fileExists,getContext,git,inp

  • 问题内容: 我已经尝试过将docker和jenkins一起使用,两者都安装在我的机器上(w10),并且我使用jankins运行docker镜像。但是,当我按照jenkins文档中的示例(来自doc的示例)时,它不起作用。不涉及时,不同的管道脚本可以工作,我还尝试从jenkins config接口添加。 管道脚本 错误堆栈 我在SO上发现了类似的问题\(相同但没有明确的解决方案) 问题答案: 您的工

  • 问题内容: 我正在使用声明性管道语法在Docker容器中执行一些CI工作。 我注意到,用于Jenkins的Docker插件使用主机中jenkins用户的用户ID和组ID运行一个容器(即,如果jenkins用户具有用户ID 100和组ID 111,它将运行管道以创建带有命令)。 我遇到了一些问题,因为该容器将以不存在的用户运行(特别是我遇到了用户没有主目录的问题)。所以我想到了创建一个Dockerf

  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建

  • 我查看了以下文档:https://docs.sonarqube.org/display/scan/analysy+with+sonarqube+scanner+for+jenkins 然而,我不能让它工作。首先,文档似乎需要更新,因为示例中的语法是错误的。在最新版本的声明性管道中,在-tag中是必需的。此外,-关键字只有在-标记中才会解析。 null