我最近开始使用Jenkins。我提供了两个参数来收集动态设置,并将在以后的阶段(步骤)中使用它们(在bash脚本中)。我引用了一些示例,例如
我尝试直接使用参数,或者通过环境,多个组合,单引号,双引号等使用参数。但是从参数收集的值仍无法成功传递给bash命令。我认为这是一个非常基本的要求,但我找不到合适的工作示例。
这是我的示例代码。
pipeline {
agent {
docker {
image ...
args ...
}
}
environment {
USERNAME = ${params.E_USERNANE}
BRANCH = ${params.E_BRANCH}
}
parameters {
string(name: 'E_USERNANE', defaultValue: 'githubuser', description: 'Please input the username')
string(name: 'E_BRANCH', defaultValue: 'dev', description: 'Please input the git branch you want to test')
}
stages {
stage('build') {
steps {
echo "username: ${params.E_USERNANE}"
echo "branch: ${params.E_BRANCH}"
echo E_USERNANE
echo E_BRANCH
sh """
echo ${USERNAME} > /mydata/1.tmp
echo ${BRANCH} >> /mydata/1.tmp
"""
}
}
}
}
答案 0 :(得分:0)
我的同事真是太棒了。我们应该更改环境部分,如下所示:
environment {
USERNAME = "${params.E_USERNANE}"
BRANCH = "${params.E_BRANCH}"
}
收集参数并将其传递给环境,然后在指令脚本中使用定义的环境变量。有关更多信息,请访问jenkins.io/doc/pipeline/tour/environment。
我也想在这里包括lvthillo的解决方案。我们可以删除environment {}部分,并在阶段/步骤中使用以下bash脚本来实现相同的目标。
sh """
echo "${params.E_USERNANE}" > /mydata/1.tmp
echo "${params.E_BRANCH}" >> /mydata/1.tmp
"""