1

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

我得到一个名为<release version>.tgz.

但是,它没有按我的意愿命名,并且由于文档缺少命令行的使用,而且我没有编写命令来自动执行此操作,如果有人能准确地挑选出这些标志和命令的内容,那将会很有帮助为我做。

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

4

1 回答 1

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 控制器,您就可以发布它(或多个),以及描述您希望分布式部署的外观(或多个清单)的清单,director 将促进一切:部署、升级、故障恢复等。

要创建您自己的 BOSH 版本,您的所有位都必须位于以特殊方式构建的 git 存储库中。给定这样的存储库,您可以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时,它将确定这些作业和包中的哪些已经存在于 Director 中,将其余的放在一个 tarball 中,然后将其上传到 Director。如果您在--with-tarball期间传递标志create release,它将把所有东西放在一个 tarball 中。这仅在您希望该 tarball 用于其他目的而不是立即上传到 Director 时才有用,即如果您想将 tarball 放在某个共享位置以便其他人(或者可能是 CI 管道中的其他步骤)可以使用该 tarball无需重新运行bosh create release甚至查看 repo。
  • --final: 上面描述的 YAML 文件通常是您不必费心签入的。但是,如果您构建“最终”版本,它将把 YAML 文件放在您所做的不同目录中想要签入。创建最终版本时,它将确保您的 blob 也与“最终 blobstore”同步,以便签出您的存储库的人将能够确定性地构建相同的最终版本,因为他们还将获得来自最终 blobstore 的“官方”blob。最终版本、blob 等是全球唯一的,因此使用此版本的任何人在使用该版本的最终版本时都会获得确定性。“最终版本”的意思可能类似于“主要版本”。这与“开发版本”形成鲜明对比,其中两个开发人员都可以使用称为版本的东西18+dev.20并且实际上具有完全不同的位。
  • --name: 这不是生成文件的名称,而是版本本身的名称。即它是上面提到的 YAML 文件中的一段元数据。如果您上传版本并执行bosh releases,您将看到此名称。当您编写部署清单以实际部署发布中的内容时,您将通过此名称引用它。
  • --version: 和name类似,这是release的版本。如果您不指定自己的版本,BOSH 会根据之前的版本,加上您是否添加--final标志来为您确定版本。如果以前的版本是,18+dev.20那么--final新版本将是19和没有,新版本将是18+dev.21.

bosh create release命令不允许您为生成的 tarball 选择位置或名称。如果这是您需要的功能,您可以在此处打开一个问题。但是,在大多数用例中,如果您只是构建版本以将其上传到 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`
于 2015-11-27T19:05:15.803 回答