Как создать исходный код bash в разделе среды Jenkins Pipeline - PullRequest
0 голосов
/ 06 июня 2019

У меня есть существующий скрипт bash, который просто устанавливает около 100 переменных, например, пути, номера версий и т. д., которые мы предоставляем как часть первой части всех наших работ по сборке. Я перемещаю некоторые из этих заданий сборки в конвейеры jenkins и пытаюсь выяснить, есть ли способ получения переменных из этого файла на этапе среды jenkins, чтобы его можно было использовать на всех последующих этапах конвейера сборки.

Я чувствую, что что-то упустил, потому что я не очень хорошо знаком с Groovy. я думаю, что, возможно, с помощью System.getenv, но для этого нужно, чтобы они были установлены, и я думаю, что поиск его в блоке сценария sh не сохраняется.

Ниже приведено то, с чем я работаю, но не работает (хотя и дает концептуальную идею).

любой совет был бы оценен!

#!/usr/bin/env groovy

pipeline {
agent {label "${params.VM_to_use}"}

    environment {
        TARGET_VM = "${params.VM_to_use}"
        //I'd like to be able to access vars globally or if better way I'm up for it.
    }

    stages {
        stage ('Get vars in preperation for subsequent build steps...'){
            steps {
                sh '''
                    source /net/machine1/globalvars/functions/my_global_vars.sh
                    # product_123_version number in that file.
                '''
                script {
                    currentBuild.displayName = " ${env.product_123_version} - ${TARGET_VM}"
                    currentBuild.displayName = System.getenv("TESTVAR")
                }
            }
        }

        stage ('Build Step 2...'){
            steps {
                sh '''
                    # pass version to script...
                    /build_step_2.sh ${env.product_123_version}

                '''

            }
        }
    }

}

1 Ответ

0 голосов
/ 07 июня 2019

Существует два способа загрузки (или исходного файла в jenkins): -

  1. Использование функции load jenkins (используется для загрузки файла по локальному пути)
  2. Использование функции fileLoader (используется для загрузки файла, расположенного в удаленном местоположении, т.е. будет загружен любой файл только с SCM с расширением .groovy)

Файл должен содержать (loadFile.sh или loadFile.groovy) данные, как показано ниже: -

// Comments should start like this one
env.Location='Pune'
env.Day='Friday'
env.Job_UI='Jenkins'

Вы можете использовать приведенный ниже код с некоторыми изменениями: -

stages {
           stage('Load') {    
              agent { node { label 'master' } }
                steps {
                  script {
                    // From the below two lines of code, you can use the one suits your need better
                    // def localenv = fileLoader.fromGit ("./Vars/loadFile.sh", "GITURL", 'BRANCH_NAME', 'Credentials', '')
                       load '/u/users/admin/loadFile.sh'
                            }
                        }
                    }    
           stage('Print') {    
              agent { node { label 'master' } }
                steps {
                   script {
                              echo "Location :- ${env.Location}"
                              echo "Day :- ${env.Day}"
                              echo "Job :- ${env.Job_UI}"
                          }
                       }
                 }
            }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...