我试图在我的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
Jenkinsfile :
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 /
答案 0 :(得分:1)
在您的Dockerfile中,无需这样做:
ENV PATH /opt/conda/envs/myapp-env/bin:$PATH
在您的Jenkins文件中,执行以下操作:
source /opt/conda/etc/profile.d/conda.sh
conda activate myapp-env
python -m pytest tests --cov ./server --cov-report term-missing --cov-report xml --junitxml=build/results.xml
答案 1 :(得分:0)
您收到的错误消息可能是
CommandNotFoundError:您的外壳尚未正确配置为使用“ conda activate”。
因为continuumio/miniconda3:latest
映像仅将所有内容设置为root用户,而不是Jenkins的运行方式。
要激活环境,您需要先source /opt/conda/etc/profile.d/conda.sh
。
但是,您可能会遇到各种各样的其他权限问题,因为conda不能像其他任何用户一样工作,而Jenkins不能以root用户身份工作。