首页 > 解决方案 > 在 Jenkins 构建中找不到 pip

问题描述

(我知道这个问题已经被问过好几次了,这篇文章是我尝试了所有以前的答案但仍然失败的结果)

我正在尝试在 Jenkins 中构建管道。在我的 Jenkinsfile 中,我有舞台:

stage('Install dependencies') {
        steps {
            echo 'Starting Build'
            sh 'echo $PATH; pip3 install -r requirements.txt'    
        }
    }

此阶段不断失败并显示日志:

[2020-06-12T16:02:29.457Z] + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin:/usr/local/bin
[2020-06-12T16:02:29.457Z] + pip3 install -r requirements.txt
[2020-06-12T16:02:29.457Z] /var/jenkins_home/workspace/CD4MLScenarios_master@tmp/durable-e59fe630/script.sh: 
line 1: pip3: not found
script returned exit code 127

我尝试了许多不同的事情,但都以相同的错误结束:

当我尝试时,python3 -m pip install -r requirements.txt我得到了错误:

[2020-06-12T16:55:33.239Z] + python3 -m pip install -r requirements.txt
[2020-06-12T16:55:33.239Z] /var/jenkins_home/workspace/CD4M-Scenarios_master@tmp/durable-9c155103/script.sh: 
line 1: python3: not found
script returned exit code 127

如果这很有用,这是我用来启动 Jenkins 容器的 docker 命令:

docker container run --name jenkins-tutorial --rm --detach   
--network jenkins 
--env DOCKER_HOST=tcp://docker:2376   
--env DOCKER_CERT_PATH=/certs/client -
-env DOCKER_TLS_VERIFY=1   
--volume jenkins-data:/var/jenkins_home  
--volume jenkins-docker-certs:/certs/client:ro  
--volume "$HOME":/home --publish 8080:8080 jenkinsci/blueocean

标签: macosjenkinspipjenkins-pipeline

解决方案


您可能正在容器中运行 Jenkins。Jenkins 容器没有python安装,因为运行 Jenkins 不需要它,并且容器设计只包含最少必要的东西。

此外,您正在 Jenkins master 上运行您的工作,因此它与 Jenkins(Jenkins 容器)在同一个地方运行,所以 nopython和 nopip和 no easy_install

您应该在安装的地方运行您的python工作pip。您可能需要考虑在python容器中运行作业,例如:

pipeline {
    agent {
        docker { image 'python:3' }
    }
    stages {
        stage('Test') {
            steps {
                sh 'pip --version'
            }
        }
    }
}

这将运行一个新容器(官方 python3 发布容器)并执行该容器内的步骤。


推荐阅读