我试图在我的 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/