Jenkins Job-Builder:如何正确地包含外部文件中的作业模板?

 啊咧咧咧咧咧咧咧列 发布于 2022-12-09 14:34

我正在调查使用Jenkins Job-Builder(来自OpenStack)作为管理jenkins作业配置的方法.在这样做的过程中,我试图找出使用!include自定义标记从外部文件中包含作业模板的正确(最佳?)方式.

在当前的用例中,我们基本上会有一个模板将被很多工作使用.由于这里超出范围的原因,每个作业都需要存在于自己的文件中.

到目前为止,我已经得到了这个工作:

作业template.yml

name: 'pre-build-{proj}-{repo}'
project-type: freestyle
... etc ...

作业1.yml

- job-template:
    !include job-template.yml

- project: 
    name: job-1
    proj: my-proj
    repo: my-repo
    jobs:
      - 'build-config-{proj}-{repo}'

这似乎是错误的,因为模板定义会在两个文件中分开,并且需要-job-template:在每个作业文件中进行不必要的重复行.我希望以下工作:

作业template.yml

- job-template:
    name: 'pre-build-{proj}-{repo}'
    project-type: freestyle
    ... etc ...

作业1.yml

!include job-template.yml

- project: 
    name: job-1
    proj: my-proj
    repo: my-repo
    jobs:
      - 'build-config-{proj}-{repo}'

不幸的是,后者导致行上的yaml解析错误- project::

yaml.scanner.ScannerError:"job-1.yml",第3行,第10列中不允许使用映射值

有没有办法将整个模板定义放入模板文件中?如果我们需要从多个文件中提取多个模板,这将变得特别烦人.

1 个回答
  • 詹金斯的作业需要path,其可以是一个目录牵着你的文件(参数job-template.yaml,job-1.yaml以及job-2.yaml将它们组装为一个YAML文件,所以你不需要使用.!include所以,你可以写:

    作业template.yaml

    - job-template:
        name: 'pre-build-{proj}-{repo}'
        builders:
            - shell: 'echo building {proj} for {repo}'
    

    job1.yaml

    - project:
        name: job-1
        proj: my-proj
        repo: my-repo
        jobs:
            - 'pre-build-{proj}-{repo}'
    

    job2.yaml

    - project:
        name: job-2
        proj: my-other-proj
        repo: my-other-repo
        jobs:
            - 'pre-build-{proj}-{repo}'
    

    这将使用以下shell命令生成两个作业:

    前集结我 - 其他 - PROJ-MY-其他回购:

    <command>echo building my-other-proj for my-other-repo</command>
    

    前集结我-PROJ-我的回购:

    <command>echo building my-proj for my-repo</command>
    

    假设文件在目录中,config/您可以使用以下命令生成它们:

    jenkins-jobs test config/ -o /tmp/myjobs
    

    或者使用name参数来过滤将要实现的作业:

    jenkins-jobs test config/ -o /tmp/myjobs '*my-proj*'
    # Creates pre-build-my-proj-my-repo
    # Skips pre-build-my-other-proj-my-other-repo
    

    2022-12-11 02:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有