- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过 readYaml 实用程序读取声明性 Jenkinsfile 中的 yaml 文件的内容。我的理解是 readYaml 应该返回一个 Map,但是,我看到返回的对象类型是一个字符串。这违背了将数据放在 yaml 文件中的初衷。
具体来说,我想从 helm values.yaml 文件中获取一些值,以便在 Jenkinsfile 的全局环境部分中设置 env 值,以便所有后续阶段都能够使用。
println valuesYaml.getClass()
返回 java.lang.String,我认为这是不正确的,因为这个对象来自嵌套的 yaml 文件,所以我认为返回的对象应该是一个 map 。
当以下 echo 语句运行 echo valuesYaml.appName.toString()
时,它会出错并出现以下错误:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:找不到这样的字段:字段 java.lang.String appName
这是我正在尝试阅读的 values.yaml 的片段:
replicaCount: 1
appName: test
def loadValuesYaml(){
def valuesYaml = readYaml (file: './chart/values.yaml')
return valuesYaml;
}
pipeline {
agent {
label "jenkins-maven"
}
environment {
valuesYaml = loadValuesYaml()
}
stages {
stage('CICD Initialize') {
steps {
script{
echo valuesYaml
println valuesYaml.getClass()
}
echo valuesYaml.appName.toString()
}
}
}
最佳答案
您正在 environment
block 中设置您的 valuesYaml
变量,使其成为 string。将您的变量声明移动到 script
block ,该变量将在后续阶段可访问。
def loadValuesYaml(){
def valuesYaml = readYaml (file: './chart/values.yaml')
return valuesYaml;
}
pipeline {
agent {
label "jenkins-maven"
}
stages {
stage('CICD Initialize') {
steps {
script{
valuesYaml = loadValuesYaml()
println valuesYaml.getClass()
}
}
}
stage('Deploy') {
steps {
echo valuesYaml.appName
}
}
}
}
或者,如果你想在 environment
block 中声明它们,你可以重写你的 loadValuesYaml
函数以返回一个特定的字符串,但是,这将调用 readYaml
多次。
def loadValuesYaml(x){
def valuesYaml = readYaml (file: './chart/values.yaml')
return valuesYaml[x];
}
pipeline {
agent {
label "jenkins-maven"
}
environment {
APP=loadValuesYaml('appName')
REPLICACOUNT=loadValuesYaml('replicaCount')
}
stages {
stage('CICD Initialize') {
steps {
script{
println APP
println REPLICACOUNT
}
}
}
}
}
关于yaml - 使用 readYaml 从声明式 Jenkinsfile 中的文件返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57261787/
当我在 jenkins 管道中调用 readYaml() 时,我收到一个错误,指出这种方法不可用。 def parameters = readYaml(file: "public/symfony/ap
我想通过 readYaml 实用程序读取声明性 Jenkinsfile 中的 yaml 文件的内容。我的理解是 readYaml 应该返回一个 Map,但是,我看到返回的对象类型是一个字符串。这违背了
我使用Jenkins readYaml读取数据如下: data = readYaml file: "test.yml" //modify data.info = "b" 我想将修改后的数据写回到 Je
我正在尝试使用 Jenkins 插件“Pipeline Utility Steps”中的 readYaml 方法解析 Jenkins 管道中的 YAML 文件。 我在论坛上读到应该在管道的节点块中调用
我是一名优秀的程序员,十分优秀!