【问题标题】:How to get version number when using Chef to deploy application使用 Chef 部署应用程序时如何获取版本号
【发布时间】:2013-07-23 02:44:13
【问题描述】:

我正在使用 Jenkins 在测试服务器中构建应用程序,然后,jenkins 执行一个结构脚本,其中厨师脚本将在生产服务器中执行。

在 chef 脚本中,首先我要从 github 获取要部署的 jar,并且我想获取测试阶段生成的版本,所以问题是如何获取这个版本号。

【问题讨论】:

    标签: jenkins chef-infra fabric


    【解决方案1】:

    应用程序的版本应该保存在属性中。然后,您可以在每次厨师运行时轻松覆盖它。只需使用所需的应用程序版本创建一个 json 文件,然后在下次运行时将其提供给主厨客户端或单独运行:

    chef-client --json-attributes path/to/file.json
    

    这会覆盖从其他位置设置的属性,例如从食谱中或由角色设置。

    【讨论】:

      【解决方案2】:

      这里有一些选项:

      1. 使用chef-client -j ...。当您针对单个服务器或一组服务器时,这是可以的。多个/复杂的部署可能会变得复杂,因为您必须为每个应用设置和分发不同的 json 属性。

      2. 将工件版本写入数据包项,例如: knife data bag from file applications myapp.json。您的 myapp 食谱被编码为在 applications/myapp 数据包项中查找所需的应用程序版本信息。 我创建了一个执行此操作的 Jenkins 插件:https://github.com/zhelyan/jenkins-chef-artifact-release

      3. 编写您的食谱以从 Jenkins 服务器本身获取工件,例如来自:https://jenkins.mycompany.com:8080/job/myapp/lastSuccessfulBuild/artifact/target/myapp.war,查看此处了解详细信息:https://github.com/woohgit/jenkins-chef-traceability-example

      实施选项 2 或 3 还会为您提供一个部署仪表板页面,显示部署的位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-15
        • 2015-01-19
        • 1970-01-01
        • 2016-05-14
        • 2015-01-26
        • 2022-11-30
        • 1970-01-01
        • 2015-09-25
        相关资源
        最近更新 更多