python-3.x - 从 Jenkinsfile 中的 docker 镜像激活 conda 环境

标签 python-3.x docker jenkins conda miniconda

我试图在我的 Jenkinsfile 中激活一个 conda 环境,它是从 Dockerbuild 创建的,但我不知道如何在我的 Jenkinsfile 的 shell 脚本中激活环境。

但是这一行 。/opt/conda/envs/myapp-env/bin/activate 在我的 Jenkinsfile 中激活失败

Dockerfile

FROM continuumio/miniconda3:latest

WORKDIR /tmp/app

COPY environment.yml environment.yml

#missing dependencies

RUN conda config --add channels conda-forge \ 
  && conda env create -n myapp-env -f environment.yml \
  && rm -rf /opt/conda/pkgs/*

ENV PATH /opt/conda/envs/myapp-env/bin:$PATH

RUN echo $PATH
RUN conda env list

Jenkins 文件:

try {
        stage('Activate environment & Unit Test') {
            buildImage.inside {

                sh '''
                echo $PATH
                echo $HOME
                . /opt/conda/envs/myapp-env/bin/activate && python -m pytest tests --cov ./server --cov-report term-missing --cov-report xml --junitxml=build/results.xml
                '''
            }
        }

回显 $PATH 和 $HOME 的结果:

Running shell script
+ echo /opt/conda/envs/dfog-app/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/opt/conda/envs/myapp-env/bin:/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ echo /

最佳答案

你得到的错误信息可能是

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.

因为 continuumio/miniconda3:latest 图像仅为 root 用户设置了一切,这不是 Jenkins 运行的方式。

为了能够激活环境,您首先需要source/opt/conda/etc/profile.d/conda.sh

但是,您随后可能会遇到各种其他权限问题,因为 conda 不能以任何其他用户身份运行,而 Jenkins 不能以 root 用户身份运行。

关于python-3.x - 从 Jenkinsfile 中的 docker 镜像激活 conda 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53111700/

相关文章:

python - 使用 SIGINT 终止 Python 3 中的函数

Nginx Docker 400 错误请求

performance - 在 EC2 实例内运行的 docker 容器内运行的 Web 服务器响应非常缓慢

node.js - 远程调试docker容器内运行进程

build - Jenkins Partial Build/Modular Build on Commit Hook

java - 使用不同的源代码创建多个 APK

python - 多个gpus(1080Ti)在tensorflow中不加速训练,在cifar10_estimator代码上测试

python - 如何在 PyQt5 上使用 Vars,就像在 tkinter 上使用 IntVar() 或 StringVar() 一样?

python-3.x - 我正在尝试在 python 3 中创建一个套接字,但我得到了这个错误,即使我从网上复制了代码 stragte

jenkins - 如何在 Git 提交时触发 Jenkins 管道