В настоящее время я настраиваю свой post_processor следующим образом:
"output": "boxes/rhel-server-6.5-x64-{{.Provider}}-{{.BuildName}}_{{timestamp}}.box"
Было бы неплохо иметь {{git_hash}} вместо метки времени. Если есть другой способ сделать это, кроме вызова функции в упаковщике, то я думаю, что недостаточно знаком с тем, как это сделать.
Я вижу, где это можно сделать: packer/config_template.go.
Я думал, что большинству людей это будет полезно.
Пример: если мы хотим знать всю конфигурацию нашего стека марионеток, мы также должны знать, на каком блоке упаковщика был построен каждый узел, а отметка времени не дает нам этого. Это хорошая вещь для аудита или даже для самых неприятных стратегий аварийного восстановления.
Мысли? Альтернативы?
_редактировать_:
Также есть вариант использования упаковщика против грязного дерева git, где результирующий хеш не будет точным. В этом случае вы, вероятно, захотите, чтобы хэш git возвращал «dirty_tree».
Хм. Я думаю, что добавление функций, специфичных для 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
.
Самый полезный комментарий
Хм. Я думаю, что добавление функций, специфичных для git, сложно, потому что это открывает двери для других SCM, в которых у нас может не быть такого же уровня знаний. Есть ли причина, по которой вы не можете использовать user-var для этого, например:
А затем объявить переменную:
{{git_hash}}
делает несколько предположений, наиболее важным из которых является то, что у вас установлен Git. Я не думаю, что все наши пользователи используют Git, поэтому найти правильный UX, когда git не установлен, может быть сложно (мы ошибаемся, заменяем пустой строкой и т. д.).