У меня есть Makefile, который я использую для создания контейнеров Docker. Я обнаруживаю текущую ветвь git, а затем использую ее как тег для сборки, но некоторые ветви git могут содержать косые черты, что является недопустимым символом для тегов Docker.Заменить символ в переменной Makefile после оценки
Я пытаюсь заменить косые черты «-» внутри Makefile, но сначала мне нужно определить ветвь git. Вот очень упрощенная версия того, что у меня есть:
NAME = foo
BRANCH = `git rev-parse --abbrev-ref HEAD`
TAG = $(subst /,-,$(BRANCH))
build:
docker build --tag=$(NAME):$(TAG) .
Вопрос заключается в том, что если BRANCH
заканчивает тем, что установлен в положение «Foo/бар» после обнаружения ветви GIT, затем TAG
также заканчивает тем, что «Foo/бар» , Однако, если я явно установил BRANCH
в «foo/bar» (вместо его обнаружения), то TAG
будет правильно настроен на «foo-bar», который является допустимым тегом.
Я довольно новичок в Makefiles, но думаю, что команда оболочки оценивается слишком поздно, а команда subst
пытается выполнить замену самой команды оболочки, а не результат команды ,
Я также попытался с помощью «: =» для немедленной оценки (если я правильно понял документацию):
BRANCH := `git rev-parse --abbrev-ref HEAD`
без толка.
Есть ли лучший способ сделать то, что я пытаюсь, или я застрял, чтобы передать имя ветки вручную команде make
?
Я думаю, что теги 'git' и' docker' этого вопроса не имеют отношения к делу, поскольку это чисто «make» и «shell». Не возражаете ли вы их сбросить? – ivant
Я добавил эти теги на случай, если кто-то делает что-то подобное, уже имело решение этой проблемы. Но, конечно, я их уберу, наверное, это где-то загромождает ваши списки. – JoeLinux