Как передать переменные в параметры учетных данных в JenkinsFiles? - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь написать JenkinsFile, который автоматически достигнет git репо через s sh и выполнит некоторые действия, но я хочу, чтобы репо и s sh ключевые переменные использовали с s sh id хранится в Jenkins, но мне кажется, что мне не хватает документации Jenkins о том, как передавать переменные в Jenkins Files, поскольку я не могу передавать значения в ключ учетных данных. Переменные, передаваемые командам sh, разрешаются отлично, хотя ...

Пример конвейера ниже:

pipeline {
  parameters {
    string(name: 'SSH_priv', defaultValue: 'd4f19e34-7828-4215-8304-a2d1f87a2fba', description: 'SSH Credential with the private key added to Jenkins and the public key to the username stored in Git Server, this id can be found in the credential section of Jenkins post its creation.')
    string(name: 'REPO', defaultValue: 'git@--------------------')
  }
  stages {
    stage ('Output Variables'){
      // checks I can get these variables
      steps{
        sh("echo ${params.SSH_priv}")
        sh("echo ${params.REPO}")
      }
    }

stage('Do Something') {
      steps {
        // this below commented line, does not work.  
        // sshagent (credentials: ['${params.SSH_priv}']){

        // this line does work
        sshagent (credentials: ['d4f19e34-7828-4215-8304-a2d1f87a2fba']){
          sh("git clone --mirror ${params.REPO} temp")
          dir("temp"){
            // start doing fancy stuff ...
            ....
            ....
          }
        }
      }
    }

Целью является конвейер, который мои коллеги-разработчики могут вызвать и будут работать со своими собственными репозиториями и собственными s sh id, которые я не использую. Когда я пытаюсь запустить это с параметром SSH_priv, передавая значение, я получаю следующую ошибку в Jenkins.

Failure Output

The JenkinsFile works perfectly fine with the credential id hard-coded- as shown below: Результат успеха

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Лучше использовать этап среды в конвейере.

pipeline {
    agent any
    environment { 
                AN_ACCESS_KEY = credentials('an_access_key_id') 
            }
    stages {
        stage('Example') {
            steps {
                sh 'printenv'
            }
        }
    }
}

И учетные данные должны существовать в jenkins с идентификатором an_access_key_id

Взгляните на официальную документацию здесь

0 голосов
/ 14 июля 2020

Итак, после тестирования разных вещей друг решил это менее чем за 5 минут. Типы кавычек имеют значение в Groovy Script

Изменение

sshagent (credentials: ['${params.SSH_lower}']){

To

sshagent (credentials: ["${params.SSH_lower}"]){

Проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...