Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 使用Chef部署应用程序时如何获取版本号_Jenkins_Chef Infra_Fabric - Fatal编程技术网

Jenkins 使用Chef部署应用程序时如何获取版本号

Jenkins 使用Chef部署应用程序时如何获取版本号,jenkins,chef-infra,fabric,Jenkins,Chef Infra,Fabric,我正在使用Jenkins在测试服务器中构建应用程序,之后,Jenkins执行一个fabric脚本,其中一个chef脚本将在生产服务器中执行 在chef脚本中,首先我必须从github获得要部署的jar,并且我希望获得在测试阶段生成的版本,所以问题是如何获得这个版本号。应用程序的版本应该保存在属性中。然后你就可以很容易地在每一次chef跑步中覆盖它。只需创建一个具有所需应用程序版本的json文件,并在下一次运行时提供给chef client或solo: chef-client --json-att

我正在使用Jenkins在测试服务器中构建应用程序,之后,Jenkins执行一个fabric脚本,其中一个chef脚本将在生产服务器中执行


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

应用程序的版本应该保存在属性中。然后你就可以很容易地在每一次chef跑步中覆盖它。只需创建一个具有所需应用程序版本的json文件,并在下一次运行时提供给chef client或solo:

chef-client --json-attributes path/to/file.json
这将覆盖从其他位置设置的属性,例如从烹饪书中或由角色设置的属性。

以下是一些选项:

  • 使用厨师客户端-j…。当您以单个服务器或一组服务器为目标时,这是正常的。对于多个/复杂的部署,它可能会变得复杂,因为您必须为每个应用设置和分发不同的json属性

  • 将工件版本写入数据包项目,例如: 来自文件应用程序myapp.json的数据包。您的
    myapp
    cookbook被编码为在
    applications/myapp
    数据包项目中查找所需的应用程序版本信息。 我创建了一个Jenkins插件,可以实现以下功能:

  • 编写烹饪书的代码,从Jenkins服务器本身获取工件,例如:https://jenkins.mycompany.com:8080/job/myapp/lastSuccessfulBuild/artifact/target/myapp.war,请在此处查看详细信息:

  • 实现选项2或3还将为您提供一个部署仪表板页面,显示在何处部署了什么