詹金斯管道从Yaml中读取

如何从一个阶段读取的YAML文件中读取数据,并在另一阶段或该阶段之外使用它?

pipeline {
  agent any
  environment {
    MY_ENV_VAR1 = 'VALUE1'
  }
  parameters {
    string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: 'Environment to deploy on')
    booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: 'Debug the build')
  }
  stages {
    stage('Stage1') {
      steps {
        script {
          def datas = readYaml file: 'release.yml'
          echo "Got version as ${datas.version} "
        }
        echo "Deploying to ${params.DEPLOY_ENV} with debug=${params.DEBUG_BUILD}"
      }
    }
    stage('Stage 2') {
      steps {
        sh 'run.sh datas.version'
      }
    }
  }
}

我想访问其中Stage 2提取的$ {datas.version}内部步骤Stage 1

我想让管道定义尽可能保持声明性。如果我正确阅读了文档,则只能在一个阶段内添加脚本部分。我在全局管道级别尝试了此操作,但出现了错误Undefined section "script" at line 10

我只是datas = readYaml file: 'release.yml'在管道级别添加,但收到错误消息Not a valid section definition: "datas = readYaml file: 'release.yml'". Some extra configuration is required line 10, column 3.

一次读取文件然后在任何阶段使用读取的数据的正确方法是什么?

似乎我需要node一段有关readYaml代码的内容。然后,我可以${datas.version}在所有阶段访问

node {
  datas = readYaml file: 'release.yml'
}
pipeline {

...
}

这是一个正在跟踪的问题JENKINS-40167

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章