【问题标题】:Chef: Jenkins supermarket cookbook automated job deploymentChef:Jenkins 超市食谱自动化作业部署
【发布时间】:2017-06-12 13:38:33
【问题描述】:

我目前正在使用Jenkins supermarket cookbook 在我的 Chef 托管节点上部署作为服务运行的 Jenkins 实例。到目前为止,我已经修改了我的 _master_war_ 配方文件以安装 Jenkins 并使用 runit 将 Jenkins 作为服务启动,安装我需要的所有插件版本以及启用基于矩阵的安全性并创建一个基本管理员帐户。还应该注意的是,我们使用 BitBucket 进行源代码控制。

我还想将我的作业添加为自动化 Jenkins 部署的一部分。据我了解,这样做的方法是将作业配置文件从我的厨师工作站上的目录复制到受管节点上的目录(厨师的缓存路径)。

根据Jenkins public supermarket cookbook 自述文件:

:create 操作需要 Jenkins 作业 config.xml。这个配置文件 必须存在于目标节点上并包含有效的 Jenkins 作业 配置文件。因为 Jenkins CLI 实际上读取和 生成它自己的这个文件的副本,不要写这个配置 在詹金斯的工作中。我们建议将它们放在 Chef 的文件中 缓存路径。

由于这些作业配置会定期更改,我想知道在我的厨师工作站上维护作业配置文件的最新副本以部署到我的托管节点的最佳方法是什么?

我是否正确理解说明书文档,因为我们需要作业配置文件的本地副本(在 Chef 工作站上),然后将其复制到受管节点上 Chef 的缓存文件路径?

提前感谢任何人能够提供的任何帮助。

【问题讨论】:

    标签: jenkins chef-infra bitbucket


    【解决方案1】:

    就个人而言,我认为将 Jenkins 作业设置到 Jenkins 领域而不是 Chef 领域。 Jenkins 社区开发了几种“工作即代码”方法,最流行的是Job DSLJenkins Pipelines,后者可能是更好的起点。

    剩下的就是由 Chef 食谱来定义种子作业,例如用于“Bitbucket 组织文件夹”插件(以及在 BitBucket 中指向您的组织的一项工作)或 Job DSL 的所谓“种子工作”。

    关于流水线的自动化设置,我推荐看看Torben Knerr's examples。这使用

    • 用于实际构建作业的管道(如 Jenkinsfiles 中所定义)
    • 用于设置管道作业的作业 DSL 种子作业

    关于 Chef 中的实际实现,您可以在 a cookbook of mine 中查看示例。 template 资源将文件从说明书(在 templates/ 子目录中)复制到某个临时路径中,jenkins_job 资源从该路径中获取它(在 Jenkins 服务器上)。

    所以我不确定你是否正确:

    需要作业配置文件的本地副本(在 Chef 工作站上)

    所以你只需要在你的工作站上一次将它添加到食谱中,是的。

    【讨论】:

    • 我听取了您的建议,并开始调查 Jenkins Pipeline 的 Jenkinsfile 作为可能的解决方案。感谢@StephenKing 的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2018-12-06
    • 2019-09-30
    • 1970-01-01
    相关资源
    最近更新 更多