Packer: função git-hash para nomear o arquivo resultante

Criado em 1 dez. 2014  ·  3Comentários  ·  Fonte: hashicorp/packer

Atualmente, personalizo meu post_processor assim:

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

Seria bom ter {{git_hash}} em vez de timestamp. Se houver outra maneira de fazer isso, além de uma chamada de função no packer, acho que não estou familiarizado o suficiente sobre como fazê-lo.

Eu vejo onde isso pode ser feito: packer/config_template.go.

Achei que a maioria das pessoas acharia isso útil.

Ex: Se quisermos conhecer toda a configuração de nossa pilha de marionetes, também devemos saber em qual caixa do empacotador cada nó foi construído, e o timestamp não nos dá isso. É uma boa coisa para auditoria ou até mesmo para as mais desagradáveis ​​estratégias de recuperação de desastres.

Pensamentos? Alternativas?

_editar_:

Há também o caso de uso do empacotador em uma árvore git suja, onde o hash resultante não seria preciso. Você provavelmente gostaria que o git hash retornasse 'dirty_tree' nesse caso.

waiting-reply

Comentários muito úteis

Hum. Acho que adicionar funções específicas do git é complicado, porque abre a porta para outros SCMs nos quais podemos não ter o mesmo nível de experiência. Existe uma razão pela qual você não pode usar um user-var para isso como:

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

E então declare a variável:

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

{{git_hash}} faz algumas suposições, sendo a mais importante - você tem o Git instalado. Eu não acho que todos os nossos usuários usem o Git, então encontrar o UX correto quando o git não está instalado pode ser difícil (nós cometemos erros, substituímos por uma string vazia, etc).

Todos 3 comentários

Hum. Acho que adicionar funções específicas do git é complicado, porque abre a porta para outros SCMs nos quais podemos não ter o mesmo nível de experiência. Existe uma razão pela qual você não pode usar um user-var para isso como:

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

E então declare a variável:

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

{{git_hash}} faz algumas suposições, sendo a mais importante - você tem o Git instalado. Eu não acho que todos os nossos usuários usem o Git, então encontrar o UX correto quando o git não está instalado pode ser difícil (nós cometemos erros, substituímos por uma string vazia, etc).

Acordado com @sethvargo

Outra pequena dica para as pessoas que estão lendo isso: você pode querer usar o argumento --short para rev-parse:

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

para obter um valor como 21feafa em vez de 21feafa9a86a45b3008d133f0803d2ac2087c63f .

Esta página foi útil?
0 / 5 - 0 avaliações