如何在Jenkins上激活conda环境

如何在Jenkins上激活conda环境,jenkins,conda,Jenkins,Conda,我看到了这个问题,但我运行的是RHEL7.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/cli

我看到了这个问题,但我运行的是RHEL7.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-ro+rx/app/local/anaconda3/envs/py35_myenv
(那里的可执行文件最初是770,现在是775)。这也无济于事。我尝试这样做的原因是因为我收到了“拒绝许可”投诉,而且这台机器上的
jenkins
用户不属于这些Anaconda文件所在的组

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

普通的非Jenkins用户可以很好地激活conda环境。我试图让Jenkins在这个环境下运行自动脚本,但我无法在Jenkins作业中激活它

编辑:如果我没有提供激活的完整路径,我会收到“激活:没有这样的文件或目录”的投诉

编辑:原因
activate
在上给出了664(非可执行)的
chmod
<代码>激活必须是不可执行的,并通过
源运行
,以便它可以对环境进行更改


Jenkins版本:2.129-1.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
您可以使用来验证该命令是否达到预期效果

此外,如果
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 {}

将以下行添加到Jenkins中执行的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

对,我知道
chmod
664不授予可执行权限。这就是为什么我必须
source
调用
activate
,而不是直接执行
activate
。根据:“激活
文件故意不可执行,因为它必须来源。必须来源,因为它需要更改环境。如果它作为脚本运行,它将只更改用于运行脚本的子进程的环境。”如果jenkins用户没有访问脚本父文件夹之一的权限,也可能会出现问题。尝试对父文件夹设置相同的权限。谢谢!父文件夹的权限有问题。以及Anaconda安装中的“兄弟”文件夹。修复:(来自anaconda3目录)
sudo-find-perm 770-exec chmod o+rx{};sudo find-perm 750-exec chmod o+rx{};sudo find-perm660-execchmodo+r{};sudo find-perm640-execchmodo+r{}你介意把你的评论移到答案上吗?然后我就可以接受了,汉克斯,我刚刚接受了。另外,如果需要调整,请告诉我。