如何将凭据.json文件加载到詹金斯管道作业中?

问题描述

我有一个针对Google Directory API运行的脚本。

此脚本的目的是从我们公司的Google目录中下载所有用户

但是当我运行该脚本时,会给出错误消息

FileNotFoundError: [Errno 2] No such file or directory: 'credentials.json'

尽管该文件位于文件夹中。

我需要将该文件放入凭据管理器还是... ??

我也有一个普通文件,只需安装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 & 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}"
                }
            }
        }
    }
}