#jenkins #jenkins-plugins #jenkins-groovy
#дженкинс #дженкинс-плагины #дженкинс-заводной
Вопрос:
У меня есть скрипт, который работает с API каталогов Google.
Цель этого скрипта — загрузить всех пользователей из каталога Google нашей компании.
Но когда я запускаю этот скрипт, он выдает ошибку
FileNotFoundError: [Errno 2] No such file or directory: 'credentials.json'
Хотя этот файл находится в папке.
Нужно ли мне поместить этот файл в диспетчер учетных данных или ….?
У меня также есть файл groovy, который просто устанавливает pip и активирует venv и ничего больше.
Вот заводной код
stage('Check activity') {
steps {
sh 'pwd'
sh '''#!/bin/bash
set -e
if ! which pipenv >/dev/null; then
echo 'no pipenv, installing...'
pip3 install --user pipenv
if ! which pipenv >/dev/null; then
# default location for: /home/jenkins/.local/bin/pipenv
my_pip_env="/home/${USER}/.local/bin/pipenv"
fi
else
echo 'pipenv already installed, nothing to do.'
my_pip_env=$(which pipenv)
fi
# pipenv version, check amp; install
${my_pip_env} --version
${my_pip_env} install
# run script
PYTHONPATH=$(pwd):${PYTHONPATH} \
PIPENV_PIPFILE=$(realpath ./Pipfile) \
${my_pip_env} run -v python3 ./it/google-users/google_user.py -v "${VERSION}" -dr "${DRY_RUN}" -et "${EXCLUDED_TYPES}"
# Remove virtualenv project
${my_pip_env} --rm
'''
}
}
нужно ли мне определять переменные среды в скрипте groovy?
Комментарии:
1. посмотрите в папке с файлами все ваши рабочие области — вы должны учитывать, что рабочая область может отличаться, если у вас несколько узлов. мой опыт подсказывает мне, что вам нужно подумать о том, как и когда вы выполняете такие операции,
Ответ №1:
При чтении файла из рабочей области лучше всего использовать функцию ReadFile
readFile('credentials.json')
В вашем случае вы могли бы прочитать его в переменную, а затем передать его в следующие шаги вашего скрипта. Что-то вроде этого:
pipeline {
agent any
stages {
stage('Check activity')
{
steps {
script {
sh '''#!/bin/bash
echo "hello" > hello.txt
'''
def mydata = readFile('hello.txt')
sh "echo My file data: ${mydata}"
}
}
}
}
}
Комментарии:
1. @Suresh но я хочу знать, как groovy script может передать этот ‘credentials.json’ моему сценарию? и он может его запустить? или мне нужно установить плагин привязки учетных данных, а затем я могу добавить атрибут withCredential в свой groovy-файл?
2. @bizimunda Спасибо за фрагмент кода. Я привел лучший пример, основанный на этом. Я не думаю, что вам нужен withCredentials, потому что с точки зрения кода это просто файл, сгенерированный некоторым кодом, и не имеет значения, имеет ли он фактические учетные данные или нет.