Packer: 用于命名结果文件的 git-hash 函数

创建于 2014-12-01  ·  3评论  ·  资料来源: hashicorp/packer

我目前像这样自定义我的 post_processor:

"output": "boxes/rhel-server-6.5-x64-{{.Provider}}-{{.BuildName}}_{{timestamp}}.box"

最好有 {{git_hash}} 而不是时间戳。 如果除了打包器中的函数调用之外还有另一种方法,那么我想我对如何做到这一点还不够熟悉。

我知道这可能在哪里完成:packer/config_template.go。

我想大多数人会觉得这很有用。

例如:如果我们想知道我们的 puppet 堆栈的整个配置,我们还应该知道每个节点是在哪个打包器盒上构建的,而时间戳没有给我们。 对于审计甚至最讨厌的灾难恢复策略来说,这是一件好事。

想法? 备择方案?

_编辑_:

还有针对脏 git 树运行打包程序的用例,其中生成的哈希值不准确。 在这种情况下,您可能希望 git 哈希返回“dirty_tree”。

waiting-reply

最有用的评论

嗯。 我认为添加特定于 git 的功能很棘手,因为它为我们可能没有相同专业水平的其他 SCM 打开了大门。 您是否有理由不能为此使用 user-var:

packer -var "git_sha=`git rev-parse HEAD`"

然后声明变量:

{
  "variables": {
    "git_sha": "none"
  }
}

{{git_hash}}做了一些假设,最重要的是 - 你已经安装了 Git。 我不认为我们所有的用户都使用 Git,因此在未安装 git 时找到正确的 UX 可能很困难(我们是否出错,替换为空字符串等)。

所有3条评论

嗯。 我认为添加特定于 git 的功能很棘手,因为它为我们可能没有相同专业水平的其他 SCM 打开了大门。 您是否有理由不能为此使用 user-var:

packer -var "git_sha=`git rev-parse HEAD`"

然后声明变量:

{
  "variables": {
    "git_sha": "none"
  }
}

{{git_hash}}做了一些假设,最重要的是 - 你已经安装了 Git。 我不认为我们所有的用户都使用 Git,因此在未安装 git 时找到正确的 UX 可能很困难(我们是否出错,替换为空字符串等)。

同意@sethvargo

给正在阅读本文的人的另一个小提示:您可能希望使用--short参数进行 rev-parse:

packer -var "git_sha=`git rev-parse --short HEAD`"

获得类似21feafa而不是21feafa9a86a45b3008d133f0803d2ac2087c63f的值。

此页面是否有帮助?
0 / 5 - 0 等级