次の手順があります。
tag ?= `date +%s`
build:
docker build -t org/client-api:$(tag) -t org/client-api:latest .
push:
docker push org/client-api:$(tag)
docker push org/client-api:latest
tag
私がしなければ値が再評価されているmake build push
タグが123123123であるため、最初のステップは、通過するよう1及びので、第二に障害が発生したtag
今123123123である2。ステップ間
の値をキャッシュするにはどうすればよいtag
ですか?使う?=
だけで十分だと思いました
問題は、シェルバック一重引用符演算子を使用する割り当てです。変数にtag
は、この引用符を含む文字列が割り当てられ、2回評価されます。
:でshell
演算子(評価を1回実行する:=
ため)と演算子(date
コマンドは常に何かを出力するため)を使用しますMakefile
:
tag:=$(shell date +%s)
build:
echo "build: ${tag}"
sleep 3
push:
echo "push: ${tag}"
それは与える:
$ make build push
echo "build: 1510323684"
build: 1510323684
sleep 3
echo "push: 1510323684"
push: 1510323684
gnumakeマニュアルからの参照
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加