Packer: git-хэш-функция для именования результирующего файла

Созданный на 1 дек. 2014  ·  3Комментарии  ·  Источник: hashicorp/packer

В настоящее время я настраиваю свой post_processor следующим образом:

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

Было бы неплохо иметь {{git_hash}} вместо метки времени. Если есть другой способ сделать это, кроме вызова функции в упаковщике, то я думаю, что недостаточно знаком с тем, как это сделать.

Я вижу, где это можно сделать: packer/config_template.go.

Я думал, что большинству людей это будет полезно.

Пример: если мы хотим знать всю конфигурацию нашего стека марионеток, мы также должны знать, на каком блоке упаковщика был построен каждый узел, а отметка времени не дает нам этого. Это хорошая вещь для аудита или даже для самых неприятных стратегий аварийного восстановления.

Мысли? Альтернативы?

_редактировать_:

Также есть вариант использования упаковщика против грязного дерева 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, поэтому найти правильный UX, когда git не установлен, может быть сложно (мы ошибаемся, заменяем пустой строкой и т. д.).

Все 3 Комментарий

Хм. Я думаю, что добавление функций, специфичных для git, сложно, потому что это открывает двери для других SCM, в которых у нас может не быть такого же уровня знаний. Есть ли причина, по которой вы не можете использовать user-var для этого, например:

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

А затем объявить переменную:

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

{{git_hash}} делает несколько предположений, наиболее важным из которых является то, что у вас установлен Git. Я не думаю, что все наши пользователи используют Git, поэтому найти правильный UX, когда git не установлен, может быть сложно (мы ошибаемся, заменяем пустой строкой и т. д.).

Согласен с @setvargo

Еще один маленький совет для тех, кто это читает: вы можете использовать аргумент --short для rev-parse:

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

чтобы получить значение вроде 21feafa вместо 21feafa9a86a45b3008d133f0803d2ac2087c63f .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги