如何在詹金斯上激活conda环境

时间:2018-06-29 05:22:56

标签: jenkins conda

我已经看到了this问题,但是我在RHEL 7.3而不是Windows上运行。

使用这个简单的Jenkins shell脚本:

#!/bin/bash
echo $PATH
echo $HOME
source /app/local/anaconda3/bin/activate py35_myenv

我遇到了这个失败:

$ /bin/bash /tmp/jenkins5945453203311093000.sh
/sbin:/usr/sbin:/bin:/usr/bin:/opt/teradata/client/15.10/bin:/app/local/anaconda3/bin:/opt/teradata/client/15.10/bin:/app/local/anaconda3/bin
/home/jenkins
/tmp/jenkins5945453203311093000.sh: line 4: /app/local/anaconda3/bin/activate: Permission denied

我尝试将chmod文件/app/local/anaconda3/bin/activate设置为664(原为660),但这没有帮助。还尝试了chmod -R o+rx /app/local/anaconda3/envs/py35_myenv(该目录下的可执行文件最初为770,现在为775)。那也没有帮助。我尝试这样做的原因是因为我收到“权限被拒绝”的投诉,并且此计算机上的jenkins用户不属于这些Anaconda文件所在的组。

我根据建议here,尝试在Jenkins脚本的开头添加#!/bin/bash,但这没有帮助。

常规的非詹金斯用户可以很好地激活此conda环境。我正在尝试让Jenkins在此环境之外运行自动化脚本,但无法在Jenkins作业中激活它。

编辑:如果我没有提供activate的完整路径,则会收到“激活:无此类文件或目录”的投诉。

编辑:this answer上说明了给activate的{​​{1}}为664(不可执行)的原因。 chmod必须是不可执行的,并且必须通过activate运行,这样才能对环境进行更改。

Jenkins版本:2.129-1.1

2 个答案:

答案 0 :(得分:1)

chmod 664不授予您执行权限。您可以在chmod命令中显式指定要授予或撤销的特权。它更具可读性。尝试将脚本更改为以下内容:

#!/bin/bash
echo $PATH
echo $HOME
/app/local/anaconda3/bin/activate py35_myenv
chmod ug+x /app/local/anaconda3/bin/activate

您可以使用https://chmodcommand.com来验证该命令是否符合您的期望。

此外,如果jenkins用户无权访问脚本的父文件夹之一,则可能会出现问题。尝试对父文件夹设置相同的权限。以下命令来自注释中的代码段:

sudo find . -perm 770 -exec chmod o+rx {}; \
sudo find . -perm 750 -exec chmod o+rx {}; \
sudo find . -perm 660 -exec chmod o+r {}; \
sudo find . -perm 640 -exec chmod o+r {}

答案 1 :(得分:1)

在 Jenkins 的 Executed shell 中添加以下几行,因为 bash shell 不支持 conda init

export PATH=/path/to/anaconda3/bin:$PATH # modify this path 
eval "$(conda shell.bash hook)"
conda activate your_env # change your_env based on your env name
相关问题