我在尝试创建参数化的jenkins管道。我在线检查了,我们必须在配置中选择“此项目是参数化的”并在其中添加参数,但是是否可以将这些参数配置添加到jenkinsfile中呢?
我知道我们可以在jenkinsfile中使用这个:
parameters {
string(name: 'name')
string(name: 'env')
}但是使用这个,当我试图使用curl远程触发作业时,参数为null。另一方面,如果我使用“这个项目是参数化的”添加参数配置,它可以很好地工作。是否可能只在jenkinsfile中配置这些配置?
发布于 2020-09-21 09:56:38
让我们以String参数为例。
下面的管道片段将帮助您在jenkinsfile中包含Straing参数。
properties([
parameters([
string(name: 'DEPLOY_ENV', defaultValue: 'TESTING', description: 'The target environment')
])
])所以,你的jenkinsfile就像:
properties([
parameters([
string(name: 'DEPLOY_ENV', defaultValue: 'TESTING', description: 'The target environment', )
])
])
pipeline {
agent any
stages {
stage ("Example") {
steps {
script{
echo "Hello World"
echo "${params.DEPLOY_ENV}"
}
}
}
}
}编辑:
使用下面的命令,我触发了jenkins作业。
curl -vvv -u "xxx:xxxx" -X POST "http://xx.xxx.xxx.xxx:8080/job/test-param/buildWithParameters?DEPLOY_ENV=SOURAV"输出:

发布于 2020-10-13 09:13:09
souravatta的答案是正确的,但我使用了另一种方法,并希望与一个例子分享。
//define the variable globally so that can be used by a fuction as well as pipeline
somevalue1=""; somevalue2=""; somevalue3=""; somevalue4="";
pipeline{
environment{
releasevalue = "r5"
depenv = "dev"
servicename = "Myservice"
setecsvalues = settingvalues(releasevalue,depenv,servicename)
}
agent any
stages{
stage(testing){
steps{
echo "${releasevalue}"
echo "${depenv}"
echo "${servicename}"
echo "${somevalue1}"
echo "${somevalue2}"
echo "${somevalue3}"
echo "${somevalue4}"
}
}
}
}
//Setting Values from this function, you can write any program here to dynamically set values or maybe read from an external file
def settingvalues(releasevalue,depenv,servicename){
//some code to set values dynamically
somevalue1 = value1
somevalue2 = value2
somevalue3 = value3
somevalue4 = value4
}它包含了你所要求的更多的东西,所以请容忍我:)
在环境块中,我编写了3个值和一个函数。您可以简单地编写这些值并在任何阶段中使用它。
您可以通过动态设置函数来编写函数并返回值。这里我不返回任何东西,因为我想设置4个值,而不是返回一个值。
最重要的是,我定义了4个值,这些值可以由函数使用,也可以在管道中使用。
TIP
如果硬编码Jenkinsfile中变量的值,这不是一个好的解决方案。相反,您需要做的是创建一个文件,JSON或Yaml。将其放在公共位置,并使用readJSON或readYaml读取这些文件并动态提取值。这样,如果您必须管理许多具有许多值的应用程序,那么您可以使用一个文件来放置所有的值。这可以派上用场,而且可以节省大量时间,因为您不想经常编辑Jenkisnfile。
https://stackoverflow.com/questions/63989763
复制相似问题