我正在嘗試比較 pacakge.json 最新 git 標簽之間的版本值,以便如果版本不匹配,我可以使 CI 構建失敗。我創建了一個 make 目標,它將采用兩個版本值并進行字串比較以確保它們相同,盡管如果可能的話我愿意進行數字比較。
PKG_VERSION=$(shell echo v$$(jq .version package.json))
LATEST_TAG=$(shell git describe --tags --abbrev=0 $$(git rev-list --tags --max-count=1))
enforce-versions:
@echo "Comparing \"$(PKG_VERSION)\" & \"$(LATEST_TAG)\""
ifeq ($(PKG_VERSION), $(LATEST_TAG))
exit 0;
else
exit 1;
endif
輸出:
$ make enforce-versions
Comparing "v1.0.0" & "v1.1.0"
exit 1;
make: *** [enforce-versions] Error 1
$ make enforce-versions
Comparing "v1.1.0" & "v1.1.0"
exit 1;
make: *** [enforce-versions] Error 1
uj5u.com熱心網友回復:
您可以在 shell 命令中而不是在 a 內部進行比較,ifeq如下所示:
PKG_VERSION=$(shell echo v$$(jq .version package.json))
LATEST_TAG=$(shell git describe --tags --abbrev=0 $$(git rev-list --tags --max-count=1))
enforce-versions:
@echo "Comparing \"$(PKG_VERSION)\" & \"$(LATEST_TAG)\""
@[ "$(PKG_VERSION)" = "$(LATEST_TAG)" ]
請注意,在這種情況下,您不需要顯式exit 0或exit 1。如果標簽不相等,該命令將回傳 false,這將導致 make 使配方行失敗,并回傳 1
uj5u.com熱心網友回復:
你可以試試這個來洗掉\r:
PKG_VERSION=$(shell echo v$$(jq .version package.json | tr -d $$\'\\r\'))
您可能還需要將管道應用于 LATEST_TAG。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/356299.html
