【问题标题】:How to create and edit pipeline definition files from Jenkins job DSL groovy code如何从 Jenkins 作业 DSL groovy 代码创建和编辑管道定义文件
【发布时间】:2019-05-22 08:28:18
【问题描述】:

我已经创建了大约 100 个测试作业的 groovy Job DSL 代码(主脚本)。方法是它们应该可以手动执行,并且我们希望有管道让它们在晚上执行。 因此,也将创建管道作业(多个)。不是问题。

但是由于主要的 DSL groovy 脚本会很大,我希望将相应的管道脚本(管道作业将加载)放在单独的文件中。由于有这么多的作业,我已经将所有作业的配置放在一个单独的文件中,它们在 MAP 中定义。 创建所有测试作业的逻辑都放在主脚本中,并循环通过位于单独文件中的 MAP。工作正常。

不希望将必须在管道定义中配置的作业名称硬编码(重复信息)!因此计划是从创建测试作业的相同主脚本逻辑创建管道定义文件。然后是所有相关信息,例如作业名称和目标主机等,可用于通过 MAP 进行的每次迭代。

知道如何从 groovy 作业 dsl 脚本创建和操作单独的管道脚本文件吗?

我尝试使用标准的 groovy 代码创建文件。但很明显,它们是在 Jenkins Master 中创建的。这必须在从站中。

def newFile = new File("${WORKSPACE}/scripts/jenkins_job_dsl/pipeline.conf")
print "${newFile}"

当使用“新文件”时,我在种子作业中得到了这个:

...
/home/builduser/workspace/Test_and_demo/Richard_Test/seed_job_richard/scripts/jenkins_job_dsl/pipeline.conf
FATAL: No such file or directory
13:33:50 java.io.IOException: No such file or directory
...

【问题讨论】:

    标签: jenkins-pipeline jenkins-groovy jenkins-job-dsl


    【解决方案1】:

    您的问题是读取种子作业中已存在的文件 pipeline.conf 吗?

    你应该可以使用readFileFromWorkspace,像这样:

    // read the file release.groovy from the seed job's workspace
    // and configure a Groovy build step using that script
    def releaseScript = readFileFromWorkspace('release.groovy')
    job('example-1') {
        steps {
            groovyCommand(releaseScript)
        }
    }
    
    // read the file run.bat from a workspace of job project-a
    // and use it to configure another job
    def runScript = readFileFromWorkspace('project-a', 'run.bat')
    job('example-2') {
        steps {
            batchFile(runScript)
        }
    }
    

    【讨论】:

    • 不,问题实际上是创建文件。
    • 经过进一步讨论、调查和试用,我最终得到了这个解决方案: * 使用单独的通用模板管道脚本文件。该文件有一些模式,例如标签、要调用的作业(=阶段)、默认输入参数值等。 * readFileFromWorkspace 用于将管道脚本文件读入主逻辑。然后根据所需的配置替换模板中的模式。 * 创建所有作业并完成管道脚本设置后,实际管道脚本映射到特定管道作业。
    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2018-06-20
    • 2017-12-17
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    相关资源
    最近更新 更多