как получить шаблон модуля агента из другого репозитория в конвейере Дженкинса

Я хочу сохранить шаблоны агентов конвейера jenkins (kubernetes pod) в репо A. Файл jenkins находится в репо B. Чтобы запустить этап ci в репо B, мне нужна папка агентов, извлеченная из репо A.

pipeline {
  agent none
  stages {
    stage('ci') {
      agent {
        kubernetes {
          yamlFile "agents/ci.yaml"
        }
      }
      steps {
      }
    }
    stage('staging deploy') {
      agent {
        kubernetes {
          yamlFile "agents/stage-deploy.yaml"
        }
      }
      steps {
      }
    }
  }
}

Когда я запускаю задание конвейера jenkins, оно проверяет Repo B (имя ветки = develop). Но я не могу проверить репо A (имя ветки = master), чтобы получить шаблоны агентов. Любая помощь здесь была бы замечательной. Я много боролся с этим.

1 ответ

вам нужно сначала вытащить репо с шаблонами pod, а затем сослаться на содержимое желаемого файла yaml. Первый этап нужно выполнить на главном узле. Вот пример конвейера:

      def currentLabel = "${UUID.randomUUID().toString()}"
def podTemplate 

pipeline {
  agent any

  stages {
    stage('Checkout pod templates') {
      agent {
        label 'master'
      }
      steps {
        sh "mkdir podTemplates"

        dir("podTemplates") {
          git branch: "master",
          url: "git@github.com/your-pod-templates.git",
          credentialsId: "$REPO_CREDS"
        }
        script {
            podTemplate = new File("${WORKSPACE}/podTemplates/pod-template.yml").text
        }
      }
    }


    stage('Second stage') {
        agent {
          kubernetes {
            label currentLabel
            defaultContainer 'jnlp'
            yaml podTemplate
          }
        }  

        steps {
            script {
                ...
                do something here
                ...
            }
        }
    }

  }
}

Я думаю, вы можете создать столько переменных podTemplate, сколько вам нужно.

Другие вопросы по тегам