Mam Azure Devop Rurociągi , który zawiera Azure App Service Deplday zadanie (AzureRmWebAppDeployment) do wdrażania ASP.NET Core 3.1 projekt:

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'Azure Subscription(01234567-89ab-cdef-0123-456789abcdef)'
    appType: 'webApp'
    WebAppName: 'MyStagingSite'
    packageForLinux: '$(Build.ArtifactStagingDirectory)/**/*.zip'
    enableCustomDeployment: true
    DeploymentType: 'webDeploy'
    enableXmlTransform: false
    enableXmlVariableSubstitution: true
    RemoveAdditionalFilesFlag: false

Serwis Azure App Service , jednak zawiera pliki w kilku wcześniej ustalonych folderach zarządzanych niezależnie od procesu dostarczania ciągłego. Chcielibyśmy użyć dodatkowych plików w miejscu docelowym (RemoveAdditionalFilesFlag), pozostawiając te foldery nienaruszone.

Zrzeczenie się: Nie uważam tej najlepszej praktyki, aw przyszłości przenosimy te pliki do oddzielnej lokalizacji pamięci masowej. Do tego czasu chciałbym znaleźć rozwiązanie, które będzie działać rozwiązać to.

W Visual Studio 2019 , osiągamy to, z wyłączeniem tych plików z naszego procesu publikacji za pomocą MsDeploySkipRules w naszym csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">
  …
  <ItemGroup>
    <MsDeploySkipRules Include="CustomSkipFolder">
      <ObjectName>dirPath</ObjectName>
      <AbsolutePath>wwwroot\\Uploads</AbsolutePath>
    </MsDeploySkipRules>
  </ItemGroup>
</Project>

To podejście działa dobrze dla studiów wizualnych i jest honorowany przez proces publikowania wdrażania Web. Zasady te nie wydają się być honorowane przez zadanie AzureRmWebAppDeployment, nawet przy użyciu metody wdrażania "Web Deploy" (DeploymentType).

Czy istnieje sposób na honorowanie MsDeploySkipRules podczas korzystania z zadania AzureRmWebAppDeployment? Jeśli nie, jeśli istnieje sposób, aby dostarczyć listę folderów, które powinny być pominięte lub ignorowane w ramach procesu wdrażania? Albo, alternatywnie, jeśli istnieje inne zadanie, które pozwolą na jedną z tych opcji podczas publikacji usługi Azure App?

Uwaga: Opublikowałem również to do Devops Beta, ale ponieważ strona nie osiągnęła jeszcze masy krytycznej, przekierowuję go tutaj.

1
Jeremy Caney 5 marzec 2020, 04:31

2 odpowiedzi

Najlepsza odpowiedź

Czy istnieje sposób na honorowanie MsDeployiprułów podczas korzystania z zadania AzurermwebappDepDepDepdeploy?

Nie jestem pewien, czy istnieje sposób na zastosowanie zasad pomijania MSDEPLOX, ale istnieje istniejący sposób pomijania określonych plików podczas procesu osiaka.

Aby uzyskać szczegółowe informacje, sprawdź Wyłącz / pomiń pliki w wersji VSTS.

Jak sugerowano w powyższym wątku, dodaj additional arguments do zadania, aby pominąć określone pliki.

Wypełnij filepath w argumencie Pomiń. Więcej informacji w Azure App Service Dogboy zadanie (naciśnij Ctrl + F, aby wyszukać additional arguments) i Operacja wdrażania web Ustawienia dla składni.

Spróbuj spróbować nadziei, że to może pomóc.

1
Yang Shen - MSFT 5 marzec 2020, 08:45

Ponieważ @ Yang-Shen-MSFT Notatki w akceptowanej odpowiedzi, nie wydaje się być sposobem na honorowanie MSDeploySkipRules zdefiniowanego w pliku csproj. Zamiast tego pliki i foldery można pominąć, definiując dodatkowe argumenty (AdditionalArguments) Parametr wdrożenia usługi Azure App Service (AzureRmWebAppDeployment).

Ponieważ nie wydaje się, że nie ma żadnej oficjalnej dokumentacji dla zasad {x0}}, i Dokumentacja {X1}}, do której referencje gazociągów Azure jest Date, następujące informacje zawiera dodatkowe szczegóły.

Po pierwsze, warto rozpoznać, że po wdrożeniu projektu za pośrednictwem Studio Visual, po prostu przyjmowanie MSDeploySkipRules skonfigurowano w pliku csproj i dodając je do jego wewnętrznego połączenia msdeploy.exe jako msdeploy.exe jako msdeploy.exe jako msdeploy.exe jako msdeploy.exe X3}} Reguły. Dlatego, biorąc pod uwagę następującą regułę określoną w csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">
  …
  <ItemGroup>
    <MsDeploySkipRules Include="CustomSkipFolder">
      <ObjectName>dirPath</ObjectName>
      <AbsolutePath>wwwroot\\Uploads</AbsolutePath>
    </MsDeploySkipRules>
  </ItemGroup>
</Project>

Zasada -skip jest interpretowana jako:

msdeploy.exe -skip:objectName=dirPath,absolutePath=wwwroot\\Uploads

Tłumaczenie tego do wdrożenia usługi Azure App Service (AzureRmWebAppDeployment), wynikowe yml może wyglądać:

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'Azure Subscription'
    appType: 'webApp'
    WebAppName: 'MyStagingSite'
    packageForLinux: '$(Build.ArtifactStagingDirectory)/**/*.zip'
    enableCustomDeployment: true
    DeploymentType: 'webDeploy'
    enableXmlTransform: false
    enableXmlVariableSubstitution: true
    RemoveAdditionalFilesFlag: true
    AdditionalArguments: '-skip:objectName=dirPath,absolutePath=wwwroot\\Uploads'

Należy pamiętać, że wielokrotne reguły -skip można zdefiniować na tym samym msdeploy.exe.

    AdditionalArguments: '-skip:objectName=dirPath,absolutePath=wwwroot\\Uploads -skip:objectName=dirPath,absolutePath=wwwroot\\Downloads'

Niestety, jak wspomniano powyżej, nie ma {EM>, aby być dowolną oficjalną, pierwszej dokumentacji dla zasad -skip na msdeploy.exe. Dokumentacja 2014 potwierdza je i zapewnia dwa przykłady, ale nie rozwija się na opcjach. To powiedziawszy, W drodze powrotnej w 2012 r., @ Richard-Szalay napisał przydatny artykuł "Demystiving MsDeploy Skip Zasady ", który zapewnia wiele szczegółów dla każdego, kto wymaga dodatkowej kontroli.

1
Jeremy Caney 21 październik 2020, 22:56