ScenariuszWłącz MvcBuildViews korzystających TeamCity jeśli widok jest zmieniany
Mamy TeamCity 8.1.3 budowę każdą prośbę ciągnąć. Błędy budowania są zgłaszane w GitHub. To jest świetne. Jednak błędy wyświetlania nie są wykrywane. To jest złe. Mogłem włączyć MvcBuildViews na całej płycie, ale wolałbym nie, ponieważ nasze rozwiązanie jest dość duże i z grubsza potraja czas kompilacji.
Co chcę zrobić, to włączyć MvcBuildViews tylko wtedy, gdy widok został zmieniony w zatwierdzeniu w PR. Na przykład, jeśli ktoś zmieni plik .cs, a następnie skompiluj go tak, jak zwykle. Jeśli plik .cshtml zostanie zmieniony, włącz MvcBuildViews i skompiluj.
Co Próbowałem
Moja pierwsza próba wykorzystywane VCS triggers. W TeamCity utworzyłem dwa niemal identyczne projekty. Jedyną różnicą były wyzwalacze VCS. Jedna kompilacja została zaprojektowana do tworzenia zmian w kodzie i innych zmian widoku.
zasady zmiana spustowe Kod: Zasady zmiany wyzwalające -:\**.cshtml
i +:**.cs
Widok: +:**.cshtml
To nie działa jak się spodziewałem. Zatwierdzenie pliku .cs i pliku .cshtml w tej samej gałęzi spowoduje wyzwolenie obu wersji.
Moja druga próba polegała na użyciu kroku budowania PowerShell. Zastanawiałem się, czy można użyć PowerShell do odczytu właściwości kompilacji agenta teamcity.build.changedFiles.file, ustalić, czy plik cshtml został zmieniony, a jeśli tak, ustawić MvcBuildViews na true.
Nie powiodło się, ponieważ nie mogłem wymyślić, aby przeczytać właściwości agenta. Znalazłem to relevant SO question, ale nie zadziałało.
Mój krok budowania PS wygląda następująco. W większości trzymam się słomek.
write-host "##teamcity[message text='Starting PhilTest build step']"
write-host "##teamcity[message text='Build number $env:build_number']" #Outputs build number
write-host "##teamcity[message text='Changed files $env:teamcity_build_changedFiles_file']" #Outputs nothing
foreach ($row in $env:teamcity_build_changedFiles_file)
{
write-host "##teamcity[message text='Changed files row $row']" #Outputs nothing
}
write-host "##teamcity[message text='Ending PhilTest build step']"
Co dalej?
Czy ktoś to wcześniej zrobił? Czy ktoś wie, jak mogę uzyskać jedną z moich wcześniejszych prób pracy lub wiem o innym sposobie jej wykonania?