当前位置: 首页 > 面试题库 >

Jenkinsfile-如何为所有阶段传递参数

颜宸
2023-03-14
问题内容

为了解释这个问题,请考虑我有2个詹金斯工作。

职位1:PARAM_TEST1

它接受称为“ MYPARAM”的参数化值

职位2:PARAM_TEST2

它还接受称为“ MYPARAM”的参数化值

有时我需要按顺序运行这两个作业-因此我创建了一个单独的管道作业,如下所示。它工作正常。

它还接受名为“ MYPARAM”的参数化值,以将其简单地传递到构建作业步骤。

pipeline {
    agent any
    stages {
        stage("PARAM 1") {
            steps {
                build job: 'PARAM_TEST1', parameters: [string(name: 'MYPARAM', value: "${params.MYPARAM}")]
            }
        }
        stage("PARAM 2") {
            steps {
                build job: 'PARAM_TEST2', parameters: [string(name: 'MYPARAM', value: "${params.MYPARAM}")]
            }
        }     
    }
}

我的问题:

这个例子很简单。其实我有20个工作。我不想parameters: [string(name: 'MYPARAM', value: "${params.MYPARAM}")]在每个阶段都重复。

有没有办法在一个地方为所有构建作业步骤设置参数?


问题答案:

您可以做的是将通用参数放在管道级别上,并在阶段中添加特定的参数

pipeline {
    agent any
    parameters {
        string(name: 'PARAM1', description: 'Param 1?')
        string(name: 'PARAM2', description: 'Param 2?')
    }
    stages {
        stage('Example') {
            steps {
                echo "${params}"
                script {
                    def myparams = params + string(name: 'MYPARAM', value: "${params.MYPARAM}")
                    build job: 'downstream-pipeline-with-params', parameters: myparams
                }    
            }
        }
    }
}


 类似资料:
  • 我有一个简单的方法,我想把片段名作为参数传递。我几乎没有像这样的碎片 1) AddNewDatesFragment 2) AskFragment 3)免责声明片段 我有下面的代码可以正常工作 我想在方法中编写一些代码,在这里我可以调用这样的方法 等 我曾经尝试过这样的代码,但在if条件下不工作会导致编译时错误。 我对实施这种方法感到好奇。谢谢

  • 我想将GitLab CI与.gitlab-ci.yml文件一起使用以使用单独的脚本运行不同的阶段。第一阶段生成一个工具,该工具必须在稍后阶段用于执行测试。我已将生成的工具声明为工件。 现在我如何在后期工作中执行该工具?正确的路径是什么,它周围会有哪些文件? 例如,第一阶段构建工件/bin/TestTool/TestTool。exe,该目录包含其他必需的文件(DLL和其他文件)。我的gitlab c

  • 问题内容: 我有一个以结尾的Dockerfile 该可以采取一些不同的论点,我也需要暴露口容器,所以如果我运行手动我做这样的事情: 如何在Jenkinsfile中执行此操作?我的测试将与此容器通信,因此它需要在运行测试之前运行。我在测试运行之前先让它运行,但我看不到如何指定 问题答案: 您可以使用withRun的第二个参数

  • 我确认电子邮件是唯一的。这是注册期间的工作。但当我试图更改用户配置文件中的电子邮件时,我出现了一个错误。 我检查电子邮件以运行userRepository。findByEmail。如果找到用户,则电子邮件不是唯一的。但当用户在profile中更改其电子邮件时,findByEmail将返回此用户。验证失败。 我需要检查用户是由findByUser返回的不是更改电子邮件的同一用户。为此,我需要传递在验

  • 问题内容: 我正在创建一种通过传递搜索字段从任何表中选择ID的方法。 但是我得到一个有关语法错误的MySqlException。当我查看“异常”消息时,它向我显示带引号的查询表!如何将表格作为不带引号的参数传递? 问题答案: 大多数数据库不允许您通过参数指定表名或列名。参数用于 值 。如果确实确实需要使它动态化,则应验证输入(它应该是一个已知的表名,并且该表中具有已知的列名),然后将其包括在SQL

  • 问题内容: 我正在使用一个存储过程,在其中发送数据库中其类型为的存储过程,并且还声明parameter 。 当我将列名传递为float时,它给出了错误: 消息8114,将数据类型nvarchar转换为float时出错。 这是我的测试查询 当我将参数类型更改为时,它给了我这个错误: 消息8117,操作数数据类型varchar对avg运算符无效。 我该如何解决? 更新 : 这是我的存储过程: 问题答案