Makefile + valor da variável com base na string de cli.

Isso é meio hackeado, então não sei se vai caber em alguém, mas com certeza vai funcionar para mim.

No (s) projeto (s) em que estou trabalhando, estamos usando Makefile com bash para criar scripts de vida fáceis de usar, implantar / automatizar / simplificar.
Temos tantas ferramentas rodando de cli (phpunit, uglifyjs, casperjs + phantomjs, phing, rsync e mais) que Makefile + bash é meio incrível para fazer coisas simples (ish).

Também estamos usando muitos ambientes de desenvolvedor. Vamos chamá-los de: desenvolvimento, teste, teste e produção. A lógica por trás da implantação na maioria deles é a mesma – faça algumas coisas (como minimizar JS) e execute rsync ou algo semelhante.

Então, em nosso Makefile, temos coisas como:

PRODUCTION_STATIC = 0.0.0.0
TESTING_STATIC
= 0.0.0.0

e seria incrível implantá-lo (de Jenkins ou não) com um comando como:
make deploy env=production

O problema é com o Makefile e obter esse valor com PRODUCTION_STATICbase na string productionde $(env)var enquanto executa o make de cli.

Eu estava tentando fazer isso hoje e encontrei uma opção hacky / feia / bacana (o que você quiser) para fazer o que eu quero / preciso.

SHELL := bash

environment
:= $(shell echo $(env) | tr a-z A-Z)

PRODUCTION_HOST
= 0.0.0.0
TESTING_HOST
= 1.1.1.1

rsync_or_smth
=
echo $
($(environment)_HOST)

deploy
:
@$(call rsync_or_smth)

E agora make deploy env=productionestá me dando 0.0.0.0. Exatamente o que eu queria.

Se você tiver um exemplo de como isso pode ser feito de outra forma, basta postar um comentário!