使用:bosh create release --final --with-tarball --version <release version>
我收到一个名为<release version>.tgz
的包。
但是,它并没有按照我的意愿命名,因为文档缺少使用命令行,而且我没有编写命令来自动执行此操作,如果有人可以正好挑选这些标志和命令对我做的事情。
在我等待的时候再次谷歌搜索,万一我错过了什么!
答案 0 :(得分:2)
$ bosh create release --help
Usage: bosh [options]
--force bypass git dirty state check
--final create final release
--with-tarball create release tarball
--dry-run stop before writing release manifest
--name NAME specify a custom release name
--version VERSION specify a custom version number (ex: 1.0.0 or 1.0-beta.2+dev.10)
BOSH版本是一种打包软件(源代码和已编译的二进制文件)然后以分布式方式部署并由BOSH主管管理的方法,即一旦你有BOSH导演运行,你可以给它一个发布(或多个),以及描述您希望分布式部署看起来如何(或多个清单)的清单,导向器将促进一切:部署,升级,故障恢复等。
要创建自己的BOSH版本,所有位必须存在于以特殊方式构建的git存储库中。有了这样的repo,您可以从存储库的根目录运行bosh create release
以生成工件,然后在实际部署时将其上载到Director。
--force
:通常情况下,如果您的git repo是脏的,BOSH CLI会抱怨,即它认为您即将构建一个带有一些无意更改的版本。使用此标志可跳过此检查。请注意,当您将版本上传到Director时,您可以说bosh releases
它会告诉您上传版本的所有名称,版本和git commit SHA。如果你在Director上有一个版本,你可能不太确定它来自哪里,但你至少可以看到SHA,这样你就可以在那个SHA上签出repo。如果您从脏回购中构建了版本,那么+
输出中的SHA旁边会显示一个小bosh releases
,所以现在您还不知道该版本是如何发布的。--with-tarball
:执行bosh create release
时创建的主要工件是一个YAML文件,用于描述构成发布的所有软件包和作业。执行bosh upload release
时,它将确定导演中已存在哪些作业和包,将其余部分放在tarball中,然后将其上载到Director。如果您在--with-tarball
期间传递create release
标记,则会将所有内容放入tarball中。这只有在你想要将tarball用于某些目的而不是立即上传到Director时才有用,即如果你想将tarball放在某个共享位置,以便其他人(或CI管道中的其他步骤)可以使用tarball无需重新运行bosh create release
,甚至可以查看回购。--final
:上面描述的YAML文件通常是您无需检查的内容。但是,如果您构建“最终”版本,它会将YAML文件放在您 想要签入。在创建最终版本时,它将确保您的blob也与“最终blobstore”同步,以便有人检查您的repo将能够确定性地构建相同的最终版本,因为他们也将从最后的blobstore获得“官方”blob。最终版本,blob等意味着全局唯一,因此使用此版本的任何人在使用该版本的最终版本时都会获得确定性。 “最终版本”意味着可能像“主要版本”。这与“Dev版本”形成对比,其中两个开发人员都可以使用名为版本18+dev.20
的东西并且实际上具有完全不同的位。--name
:这不是生成文件的名称,而是发布本身的名称。即它是上面提到的YAML文件中的一段元数据。如果您上传版本并执行bosh releases
,您将看到此名称。当您编写部署清单以在发布中实际部署内容时,您将通过此名称引用它。--version
:与name类似,这是该版本的版本。如果您未指定自己的版本,BOSH将根据以前的版本为您确定版本,以及是否添加了--final
标志。如果之前的版本为18+dev.20
,则--final
版本为19
,新版本为18+dev.21
,新版本为bosh create release
。 bosh upload release
命令不允许您为生成的tarball选择位置或名称。如果这是您需要的功能,您可以打开问题here。但是,在大多数用例中,如果您只是构建版本以将其上传到Director,则不需要该文件,--with-tarball
将上传正确的内容。实际上,在这种情况下,您甚至不需要传递CF_RELEASE_OUT="${TMPDIR}/create-release.out"
bosh -n create release --with-tarball --version $VERSION | tee -a $CF_RELEASE_OUT
TARBALL=`grep -a "Release tarball" $CF_RELEASE_OUT | cut -d " " -f4`
。另一方面,如果您需要知道tarball的位置,例如,因为您要将其上传到某个共享位置,您可以像这样编写脚本:
{{1}}