Как активировать среду conda на Jenkins - PullRequest
0 голосов
/ 29 июня 2018

Я видел этот вопрос, но я работаю на RHEL 7.3, а не на Windows.

С помощью этого простого сценария оболочки Jenkins:

#!/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.

Я попытался добавить #!/bin/bash в начало моего сценария Дженкинса, согласно предложению здесь , но это не помогло.

Обычные пользователи, не являющиеся пользователями Jenkins, могут нормально активировать эту среду conda. Я пытаюсь, чтобы Jenkins запускал автоматические сценарии из этой среды, но не могу активировать его в задании Jenkins.

РЕДАКТИРОВАТЬ: Если я не предоставил полный путь к activate, я получаю жалобы «активировать: нет такого файла или каталога».

РЕДАКТИРОВАТЬ: причина activate получает chmod из 664 (неисполняемый) указано в этот ответ . activate должен быть неисполняемым и запускаться через source, чтобы он мог вносить изменения в среду.

версия Jenkins: 2.129-1.1

1 Ответ

0 голосов
/ 29 июня 2018

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 {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...