jenkins - 我可以将 Jenkins 配置存储在项目存储库中吗(比如 Travis CI)?

标签 jenkins continuous-integration jenkins-plugins

您如何在源代码旁边维护 SCM 中的 Jenkins 作业配置?

随着源代码的发展,作业配置也在发展。能够在 SCM 中保留作业配置将是理想的,以获得以下好处:

  • 容易看出谁的变迁史,包括作者和描述
  • 能够通过检查修订并构建工作来重建旧的分支/标签
  • 无需滚动 UI 即可找到适当的部分并进行更改

  • 我看到有一个 Jenkins Job Builder插入。我更喜欢遵循 ​​Travis CI 的解决方案,其中作业配置保存在 YAML 文件 (.travis.yml) 中。有什么好的建议吗?

    注意:我们的大部分项目都使用 Java 和 Maven。

    最佳答案

    2016 年更新: Jenkins 现在提供了一个 Jenkinsfile这正是提供了这一点。这是由 Jenkins 核心开发人员支持并积极开发的。

    好处:

    Creating a Jenkinsfile, which is checked into source control, provides a number of immediate benefits:

    • Code review/iteration on the Pipeline
    • Audit trail for the Pipeline
    • Single source of truth for the Pipeline, which can be viewed and edited by multiple members of the project.


    我已经 written a plugin这样做!

    除了我的插件之外,您对现有的 Jenkins 插件还有一些(有限的)选项:

    使用单个测试脚本

    如果您将 Jenkins 配置为简单地运行:
    $ bash run_tests.sh
    

    然后您可以 checkin run_tests.sh文件到您的 SCM 存储库中,您现在正在跟踪运行测试方式的更改。但是,这不会跟踪任何插件的配置。

    同样,如果您使用 Maven,则 Maven Project Plugin只需为您的 repo 运行指定的目标。

    Literate Plugin确实允许 Jenkins 运行 README.md 中的命令,但它尚未发布。

    跟踪对 Jenkins 配置的更改

    您可以使用 SCM Sync configuration plugin将配置更改写入 SCM,因此您至少有一个持久记录。这是全局的,跨 Jenkins 实例上的所有项目。

    还有 job config history plugin ,它将配置历史存储在文件系统上。

    从 SCM 编写 Jenkins 配置

    Jenkins job builder您提到的项目允许您将配置更改检查到 SCM 并将它们应用于您的 Jenkins 实例。同样,这涉及 Jenkins 实例上的所有项目。

    从另一个工作中编写 Jenkins 配置

    您可以使用 Job DSL Plugin带有一个 groovy 脚本的 repo。 Jenkins 然后轮询该 repo,执行 groovy 脚本,这些脚本创建作业配置。

    讨论

    Issue 996 (现已关闭) 讨论了这个,在邮件列表中也有讨论:'Keeping track of Hudson's configuration changes' , 和 'save hudson config in svn' .

    关于jenkins - 我可以将 Jenkins 配置存储在项目存储库中吗(比如 Travis CI)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28291313/

    相关文章:

    java - 让 Jenkins 自动运行失败的测试

    tomcat - 在 Amazon EC2 上打开一个 HTTP 端口

    android - Junit 输出使用 the-missing-android-xml-junit-test-runner

    continuous-integration - Bamboo Java 规范、单个管道存储库和多个项目

    docker - Drone - 使用 Drone.yml 自定义日期时间字符串格式命名 docker 图像标签

    continuous-integration - 如何: Teamcity + GitHub

    jenkins - 在步骤中未找到此类 DSL 方法 'publishHTML'

    docker - Jenkins支持docker-compose吗

    jenkins - 如何在Jenkins中创建Python virtualenv?

    java - Jenkins 作业的外部触发器