Проблема конвейера Azure DevOps при развертывании - PullRequest
0 голосов
/ 27 октября 2019

Я новичок в Azure, и я был уверен, что настроить конвейер и развернуть мое решение в Azure было просто, но я застрял на 2 дня и не нашелДата статьи, которая объясняет полный CI / CD.

Вот мое решение (на основе ABP Boilerplate):

- solution folder
  - aspnet-core solution folder (API .NET Core 2.2)
  - angular (frontend part in Angular 8)

У меня есть учетная запись Azure, и я создал две службы приложений:

Для обеих настроек используются значения по умолчанию:

  • WEBSITE_RUN_FROM_PACKAGE '1'
  • WEBSITE_ENABLE_SYNC_UPDATE_SITE 'true'

В Azure DevOps все зеленое...

2 Трубопроводы:

  • Угловые:
trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    cd angular
    npm install -g @angular/cli
    npm install
    ng build --prod
  displayName: 'npm install and build'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: 'angular/dist'
    TargetPath: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'UiApp'
    publishLocation: 'Container''
  • API:
# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishBuildArtifacts@1
  inputs:
    TargetPath: '$(Build.ArtifactStagingDirectory)'

Для релизной части:

  • Angular

Создана подпапка UIApp в wwwroot, но я не понимаю, почему

steps:
- task: AzureWebApp@1
  displayName: 'Azure Web App Deploy: XXXXX'
  inputs:
    azureSubscription: 'XXXXXXXX'
    appType: webApp
    appName: 'XXXXX'
    package: '_XXX - Angular'
  enabled: false
  • API

Я пробовал развертывание Azure Web App и Azure App Service.

Я пытался использовать развертывание Zip / Run из пакета/ развернуть Web ... безуспешно.

В API я вижу, что он создан:

В / data / sitePackages / zip-файл с датой и временем

В / site / wwwroot / также zip-файл, но с другим названием (wwwroot только для чтения)

Yaml:

steps:
- task: AzureWebApp@1
  displayName: 'Azure Web App Deploy: XXXXX'
  inputs:
    azureSubscription: 'XXXXXXXXXXX'
    appType: webApp
    appName: 'XXXXXX'
    package: '_XXXXX - API/drop'
    deploymentMethod: runFromPackage
  enabled: false

Я не понимаю, что мне не хватает, это должно быть легкоиспользовать полный стек Azure ... Я должен пропустить детали где-то (или, может быть, я пропускаю большую картинку и тренинг по Yaml)

Я бы хотел предотвратить создание подпапки UiApp в wwwroot для внешнего интерфейса.

Бэкэнд вообще не работает с пакетом, и я не знаю, как исправить или отладить проблему. Кстати мне не нужно запускать из пакета. Я бы предпочел "классический" способ с IIS

1 Ответ

1 голос
/ 27 октября 2019

Я наконец-то заставил его работать корректно.

Я сейчас использую для обоих приложений развертывание службы приложений Azure, и я не увидел кнопку "..." в "Пакете или папке".

После выбора правильного файла артефакта (zip-файл для выпуска .Net и папка "drop" для приложения Angular) я успешно синхронизировал файлы.

Следующий шаг: update-базы данных для сущности Framework Core и применения переменных конфигурации.

...