首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅使用jenkinsfile创建参数化jenkins管道并使用curl远程触发

如何仅使用jenkinsfile创建参数化jenkins管道并使用curl远程触发
EN

Stack Overflow用户
提问于 2020-09-21 09:41:29
回答 2查看 496关注 0票数 0

我在尝试创建参数化的jenkins管道。我在线检查了,我们必须在配置中选择“此项目是参数化的”并在其中添加参数,但是是否可以将这些参数配置添加到jenkinsfile中呢?

我知道我们可以在jenkinsfile中使用这个:

代码语言:javascript
复制
parameters {
        string(name: 'name')
        string(name: 'env')
}

但是使用这个,当我试图使用curl远程触发作业时,参数为null。另一方面,如果我使用“这个项目是参数化的”添加参数配置,它可以很好地工作。是否可能只在jenkinsfile中配置这些配置?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-21 09:56:38

让我们以String参数为例。

下面的管道片段将帮助您在jenkinsfile中包含Straing参数。

代码语言:javascript
复制
    properties([
    parameters([
    string(name: 'DEPLOY_ENV', defaultValue: 'TESTING', description: 'The target environment')
     ])
    ])

所以,你的jenkinsfile就像:

代码语言:javascript
复制
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作业。

代码语言:javascript
复制
curl -vvv -u "xxx:xxxx" -X POST "http://xx.xxx.xxx.xxx:8080/job/test-param/buildWithParameters?DEPLOY_ENV=SOURAV"

输出:

票数 1
EN

Stack Overflow用户

发布于 2020-10-13 09:13:09

souravatta的答案是正确的,但我使用了另一种方法,并希望与一个例子分享。

代码语言:javascript
复制
//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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63989763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档