Как передать параметр учетных данных конвейера в скрипт Python как переменную env - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть конвейерное задание с параметром учетных данных (имя пользователя и пароль), а также файл groovy, который запускает скрипт оболочки, запускающий файл python. Как я могу передать эти параметры в env, чтобы скрипт python мог использовать их с os.getenv? Код файла Groovy:

def call() {
    final fileContent = libraryResource('com/amdocs/python_distribution_util/main.py')
    writeFile file: 'main.py', text: fileContent

    sh "python main.py"}

Я знаю, что синтаксис конвейера должен выглядеть примерно так:

withCredentials([usernamePassword(credentialsId: '*****', passwordVariable: 'ARTIFACTORY_SERVICE_ID_PW', usernameVariable: 'ARTIFACTORY_SERVICE_ID_UN')]) {
    // some block
}

как правильно это сделать?

credential parameter from the jenkins pipeline

1 Ответ

0 голосов
/ 05 ноября 2019

Правильный синтаксис:

def call() {
        def DISTRIBUTION_CREDENTIAL_ID = params.DISTRIBUTION_CREDENTIAL_ID

        withCredentials([usernamePassword(credentialsId: '${DISTRIBUTION_CREDENTIAL_ID}', passwordVariable: 'ARTIFACTORY_SERVICE_ID_PW',  usernameVariable: 'ARTIFACTORY_SERVICE_ID_UN')]) {
        sh '''
            export ARTIFACTORY_SERVICE_ID_UN=${ARTIFACTORY_SERVICE_ID_UN}
            export ARTIFACTORY_SERVICE_ID_PW=${ARTIFACTORY_SERVICE_ID_PW}
    }
}

, а затем вы можете использовать файл config.py для получения значений, используя:

import os

ARTIFACTORY_SERVICE_ID_UN = os.getenv('ARTIFACTORY_SERVICE_ID_UN')
ARTIFACTORY_SERVICE_ID_PW = os.getenv('ARTIFACTORY_SERVICE_ID_PW')
...