如何命名 BOSH 发行版 tarball?

How to name a BOSH release tarball?

使用:bosh create release --final --with-tarball --version <release version>

我收到一个名为 <release version>.tgz 的包裹。

但是,它并没有按照我的意愿命名,并且由于缺少命令行使用方面的文档,而且我没有编写命令来自动执行此操作,如果有人能准确地分辨出来,那将很有帮助这些标志和命令对我有什么用。

在我等待的时候再次谷歌搜索以防我错过了什么!

$ 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 主管 运行ning,你可以给它一个版本(或多个),以及一个描述你希望分布式部署看起来如何的清单(或多个清单),而 director 将促进一切:部署、升级、故障恢复等。

要创建您自己的 BOSH 版本,您的所有位都必须位于以特殊方式构建的 git 存储库中。给定这样一个存储库,您可以 运行 bosh create release 从存储库的根目录生成工件,然后在您真正想要部署时上传到 Director。

  • --force:如果您的 git 存储库不干净,通常 BOSH CLI 会抱怨,即它认为您将要构建一个带有一些无意更改的版本。使用此标志跳过此检查。请注意,当您将版本上传到 Director 时,您可以说 bosh releases,它会告诉您所有名称、版本和上传版本的 git 提交 SHA。如果你有一个关于 Director 的版本,这可能很好,你不知道它到底来自哪里,但你至少可以看到 SHA,这样你就可以在那个 SHA 上检查回购。如果你从一个脏的 repo 构建版本,你会在 bosh releases 输出中的 SHA 旁边看到一个小的 +,所以现在你真的不知道该版本是如何制作的。
  • --with-tarball:当您执行 bosh create release 时创建的主要工件是一个 YAML 文件,它描述了构成您的版本的所有包和作业。当您执行 bosh upload release 时,它会确定 director 上已经存在这些作业和包中的哪些,将其余的放入 tarball 中,然后将其上传到 Director。如果您在 create release 期间传递 --with-tarball 标志,它会将所有内容放入压缩包中。这仅在您希望将 tarball 用于某些目的而不是立即上传到 Director 时才有用,即如果您想将 tarball 放在某个共享位置以便其他人(或者 CI 管道中的其他步骤)无需重新 运行 bosh create release 或什至检查回购就可以使用 tarball。
  • --final:上面描述的 YAML 文件通常是您不会费心签入的。但是,如果您构建 "final" 版本,它将把 YAML 文件放在不同的目录中您 想要签入的内容。创建最终版本时,它将确保您的 blob 也与 "final blobstore" 同步,以便有人签出您的回购能够确定地构建相同的最终版本,因为他们还将从最终的 blobstore 中获取 "official" blob。最终发布版本、blob 等应该是全局唯一的,因此使用此版本的任何人在使用最终版本时都会获得一些确定性。 "Final version" 的意思可能类似于 "major version"。这与 "Dev versions" 形成对比,其中两个开发人员都可以使用称为版本 18+dev.20 的东西并且实际上具有完全不同的位。
  • --name:这不是生成文件的名称,它是版本本身的名称。 IE。它是上面提到的 YAML 文件中的一段元数据。如果您上传发布并执行 bosh releases,您将看到此名称。当您编写部署清单以实际部署发布中的内容时,您将通过此名称引用它。
  • --version:与name类似,这是release的版本。如果您不指定自己的版本,BOSH 将根据之前的版本,加上您是否添加 --final 标志来为您确定版本。如果以前的版本是 18+dev.20 那么使用 --final 新版本将是 19 没有,新版本将是 18+dev.21.

bosh create release 命令不允许您为生成的压缩包选择位置或名称。如果这是您需要的功能,您可以提出一个问题 here。但是,在大多数情况下,如果您只是为了将其上传到 Director 而构建版本,则不需要该文件,bosh upload release 会上传正确的内容。事实上,在这种情况下您甚至不需要传递 --with-tarball。另一方面,如果您需要知道 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`