這裏的情況是:在混帳回購我有3個文件夾: 一個 乙 Ç 如果更改了A或C製成,建設必須啓動。在其他情況下,如果對B進行了更改,則不應啓動。如何使用TeamCity VCS觸發器實現此類行爲?的TeamCity - 如何結合VCS觸發器
1
A
回答
-1
我沒有找到方法來「防止從特定文件夾中發生更改時開始構建」。 Build將開始。但是,如果檢測到B文件夾中的更改,我決定製定解決方法並跳過下一步的實際執行。下面是腳本,它爲我提供了環境變量,可以優雅地避免下一個構建步驟的執行。
這個腳本是基於TeamCity的環境變量
%system.teamcity.build.changedFiles.file%
重要:不使用 - :B(在我的情況 - :LISP)觸發規則,否則您將無法從腳本中檢測到此文件夾中的更改。
腳本:
#!/bin/bash
listFiles=$(echo %system.teamcity.build.changedFiles.file%)
echo "List files from $listFiles"
echo "--------------------------"
cat $listFiles
echo "--------------------------"
lispFound=$(cat $listFiles | grep -c '^src\/lisp\/*.')
echo "LISP CHANGES WERE DETECTED: $lispFound time(s)"
echo "##teamcity[setParameter name='env.LISP_CHANGES_DETECTED' value ='$lispFound']"
結果,在%env.LISP_CHANGES_DETECTED%,其中已更改的文件數量將可在任何下一步。在我的情況下,下一步是Ant,並且可以在任何目標中檢測是否應該回應「無所事事」並出去。下面是執行日誌的exmple:
改進: 如這裏所描述Can I cancel a TeamCity build from my msbuild script?
執行可以優雅地從一腳本停止,你將需要添加的呼叫取消執行:
curl -v -u user:password --request POST "http://teamcity:8111/app/rest/builds/<buildLocator>" --data "<buildCancelRequest comment='' readdIntoQueue='false' />" --header "Content-Type: application/xml"
1
您應該爲該VCS根配置VCS觸發器規則。 添加VCS觸發as usual,然後添加這規則:
-:B/**
這將觸發對您的VCS根一切,除了文件夾乙。 或者你可以採取不同的方式,只爲改變一個或Ç文件夾觸發構建:
+:A/**
+:C/**
,將工作,因爲
當進入規則,請注意,一旦輸入任何「+」 規則,TeamCity將刪除默認的「包含全部」設置。要包含所有文件到 ,請使用「+:」。規則。
相關問題
- 1. VCS觸發器在TeamCity的工作不
- 2. TeamCity:可以結合構建觸發器和計劃觸發器嗎?
- 3. TeamCity VCS在連接到構建配置的多個VCS根目錄時觸發
- 4. TeamCity複合構建觸發器
- 5. VCS觸發規則的TeamCity和塑料SCM
- 6. 如何設置水銀VCS構建TeamCity的觸發忽略標籤操作
- 7. WPF - 如何結合DataTrigger和觸發器?
- 8. 如何在不檢出任何文件的情況下使用VCS觸發器觸發構建
- 9. TeamCity觸發器是or'd?
- 10. 團隊城市VCS觸發器每次提交合並分支時
- 11. Teamcity VCS修訂版GUID
- 12. TeamCity:從VCS獲取版本
- 13. TeamCity多個VCS根目錄
- 14. teamcity中觸發器依賴的作業
- 15. TeamCity的構建鏈觸發
- 16. TeamCity完成構建觸發器Hiearchy
- 17. 使用TeamCity Kotlin DSL觸發器
- 18. 需要記錄TeamCity構建觸發器
- 19. TeamCity完成生成觸發器
- 20. Teamcity:禁用項目範圍觸發器
- 21. 結合外鍵與觸發器
- 22. TeamCity:爲所有TeamCity項目禁用構建觸發器
- 23. 結合文物在TeamCity的
- 24. 如何觸發一個TeamCity項目部署到服務器
- 25. 的TeamCity在合併
- 26. 如何將觸發器與SourceName和DataTrigger結合使用?
- 27. 如何在TeamCity中的VCS根目錄之間切換
- 28. 如何清除TeamCity 7+中未決的VCS更改?
- 29. 在VCS中使用模板參數SVN的觸發器規則
- 30. 使用NAnt從TeamCity獲取VCS更改
這樣的配置是否意味着如果在B和A中進行更改,它將不會被觸發?實際上,我需要以某種方式配置,比如說規則,「如果B中有變化 - 不啓動構建,無論發生什麼變化在其他文件夾中「。 –
如果在** A ** *和** ** B **中都發生變化,則Teamcity將觸發構建。這是正確的,就像** A **包含一些源信息,應該構建,跳過它將是不正確的。 無論如何,你可以做的是: 1.按用戶過濾:如果文件夾** B **將僅由bot用戶修改,則可以像這樣跳過它: - :user = bot-user ; root = VcsRootName:B/** 2.按評論過濾正則表達式: - :comment =自動生成,跳過構建:B/** – grundic
沒有這樣的選項,不同的用戶,不同的評論,但只有在文件夾B中沒有更改。對於文件夾B中的更改,應該啓動另一個生成。任何其他想法? –