在阶段詹金斯管道之间传递变量

时间:2018-10-10 08:55:31

标签: jenkins jenkins-pipeline

我正在创建一个Jenkins管道以将其轻松部署到kubernetes集群中,我有我的私有Docker注册表,在这里我只需克隆我的仓库并构建我的docker镜像并将更新docker镜像ID更新到kubernetes部署清单中并部署pod 。但是我在将构建映像ID传递到下一阶段时遇到了麻烦,我做了一些研究并试图解决该问题,因此我设法将ID传递到了下一阶段,但是当我尝试将新的ID添加到部署中时显示为空。 / p>

这是我的管道

pipeline {
  environment {
    BUILD_IMAGE_ID = ''
  }
  agent any
  stages {
    stage('Cloning Git') {
      steps {
      git( url: 'https://xxxxxx.git',
            credentialsId: 'id',
            branch: 'master')

      }
    }
  stage('Login Docker Registry') {
      steps{
        script {
            sh 'docker login --username=xxxx --password=xxxx registry.xxxx.com'
        }
      }
    }
    stage('Building Image') {
      steps{
         script {
         def IMAGE_ID = sh script:'docker run -e REPO_APP_BRANCH=xxxx -e REPO_APP_NAME=xxx --volume /var/run/docker.sock:/var/run/docker.sock registry.xxxx/image-build', returnStdout: true
         println "Build image id: ${IMAGE_ID} "
         BUILD_IMAGE_ID = IMAGE_ID.replace("/n","")
         env.BUILD_IMAGE_ID = BUILD_IMAGE_ID

        }
      }
    }

    stage('Integration'){
      steps{
        script{
          echo "passed: ${BUILD_IMAGE_ID} "
          //update deployment manifests with latest docker tag
          sh 'sed -i s,BUILD_ID,${BUILD_IMAGE_ID},g deployment-manifests/development/Service-deployments.yaml'



        }
      }
    }

  }
}

我不想将该值保存到文件中并读取并执行操作 输出

[Pipeline] echo
Build image id: 
 registry.xxxx.com/service:3426d51-baeffc2


[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Integration)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
passed: 
 registry.xxxx.com/service:3426d51-baeffc2


[Pipeline] sh
[orderservice] Running shell script
+ sed -i s,BUILD_ID,,g deployment-manifests/development/service-deployments.yaml

0 个答案:

没有答案