macos - 在 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
我尝试了许多不同的事情,但都以相同的错误结束:
- 尝试添加
sudo easy_install pip3
- 尝试添加
withEnv(["HOME=${env.WORKSPACE}"])
- 尝试添加
PATH=${PATH}:/usr/local/bin;
当我尝试时,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
解决方案
您可能正在容器中运行 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 发布容器)并执行该容器内的步骤。
推荐阅读
- javascript - 在您自己的网站上共享带有缩略图的链接
- ios - 在 Objective-C 中改变约束
- python - 为什么我的python祝福打印语句不在同一个位置打印?
- python - TensorFlow Optimizer - 自定义梯度问题
- linux - 在linux命令行上将文件移动到匹配的文件夹
- spring - 通过发送电子邮件返回响应(http 状态)需要很长时间
- javascript - GoToTop 按钮在后续使用中不起作用
- python - 如何在 Python 中发送多个线程?
- linux - 如何在 xclip 上复制并在 shell 上查看命令输出?
- osgi - 如何从正在运行的 JBoss Fuse 容器备份包?