问题描述
我有一个针对Google Directory API运行的脚本。
此脚本的目的是从我们公司的Google目录中下载所有用户。
但是当我运行该脚本时,会给出错误消息
FileNotFoundError: [Errno 2] No such file or directory: 'credentials.json'
我需要将该文件放入凭据管理器还是... ??
这是常规代码
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 & 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脚本中定义环境变量吗?
解决方法
从工作区读取文件时,最好使用readFile function
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}"
}
}
}
}
}