использование стратегии не работает для AzureRmWebAppDeployment @ 4 - PullRequest
0 голосов
/ 06 октября 2019

Я начал использовать стратегию runonce yaml, чтобы я мог добавить тег среды к своему реле и добавить этапы утверждения. https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema

НО при этом AzureRmWebAppDeployment @ 4 шага развертывает весь файл в следующем формате:

/ site / wwwroot / mywebApi / Content / D_C / a / 1 / s / src / mywebApi /obj / Release / Package / PackageTmp /

вместо разархивирования пакета в / site / wwwroot / mywebApi /

это работало, когда я не использовал стратегию

thisиспользуется для работы


jobs:
  - job: Deploy
    variables:
      vmImage: 'windows-latest'   
    pool:
      vmImage: $(vmImage)  
    displayName: 'Deploy ${{ parameters.project }} ${{ parameters.envName }}'         
    continueOnError: "false"
    steps:
    - task: DownloadBuildArtifacts@0
      inputs:
        buildType: 'current'
        downloadType: 'single'
        artifactName: '${{ parameters.project }}${{ parameters.envName }}'
        downloadPath: '$(build.artifactStagingDirectory)'
    - task: AzureRmWebAppDeployment@4
      inputs:
        ConnectionType: 'AzureRM'
        azureSubscription: '****Azure'
        appType: 'webApp'
        WebAppName: '${{ parameters.webAppName }}'
        deployToSlotOrASE: true
        ResourceGroupName: '****'
        SlotName: '${{ parameters.slotName }}'
        VirtualApplication: '${{ parameters.virtualApplication }}'
        packageForLinux: '$(build.artifactStagingDirectory)/**/*.zip'

это не работает, но это то, что я хочу для пометки релиза со средой

jobs:
  # track deployments on the environment
- deployment: DeployWeb
  displayName: deploy paystub Web App 
  environment: ${{ parameters.envName }}  
  variables:
    vmImage: 'windows-latest'   
  pool:
    vmImage: $(vmImage)  
  continueOnError: "false"
  strategy:
    runOnce:
      deploy:
        steps:
        - task: DownloadBuildArtifacts@0
          inputs:
            buildType: 'current'
            downloadType: 'single'
            artifactName: '${{ parameters.project }}${{ parameters.envName }}'
            downloadPath: '$(build.artifactStagingDirectory)'
        - task: AzureRmWebAppDeployment@4
          inputs:
            ConnectionType: 'AzureRM'
            azureSubscription: '***Azure'
            appType: 'webApp'
            WebAppName: '${{ parameters.webAppName }}'
            deployToSlotOrASE: true
            ResourceGroupName: '*****'
            SlotName: '${{ parameters.slotName }}'
            VirtualApplication: '${{ parameters.virtualApplication }}'
            packageForLinux: '$(build.artifactStagingDirectory)/**/*.zip'

Я ожидаю, что новый шаг также развернет код в этой папкепакет в / site / wwwroot / mywebApi /

вместо создания некоторой копии куду в

/ site / wwwroot / mywebApi / Content / D_C / a / 1 / s / src / mywebApi / obj/ Выпуск / Упаковка / PackageTmp /

1 Ответ

0 голосов
/ 08 октября 2019

Мне удалось воспроизвести тот же сценарий. К сожалению, я не нашел способа исправить это с помощью задачи настройки AzureRmWebAppDeployment. Похоже, задача автоматически использует kudu для копирования файлов в службу приложений Azure, а msdeploy используется для развертывания файлов в нестратегическом конвейере. Вы можете сообщить об этой проблеме здесь .

Я нашел обходной путь, изменив аргументы msbuild задачи vsbuild и добавив задачу zip-архива. Проверьте ниже:

Используйте /t: publish, чтобы опубликовать сборки в папку $(build.artifactstagingdirectory)\publish для архивирования в задаче ArchiveFiles.

- task: VSBuild@1
      displayName: 'Build solution **\*.sln'
      inputs:
        msbuildArgs: '/t:publish /p:outputpath="$(build.artifactstagingdirectory)\\"'
        platform: '$(BuildPlatform)'
        configuration: '$(BuildConfiguration)'
        clean: true
        restoreNugetPackages: true

Используйте задачу archiveFiles, чтобы сжать все файлы в папке \publish сверху, шаг.

 - task: ArchiveFiles@2
      inputs:
        rootFolderOrFile: '$(Build.ArtifactStagingDirectory)\\publish\\*'
        includeRootFolder: true
        archiveType: 'zip'
        archiveFile: '$(Build.ArtifactStagingDirectory)/package/$(Build.BuildId).zip'
        replaceExistingArchive: true

Используйте задачу PublishBuildArtifacts, чтобы опубликовать файл ZIP, созданный вышеstep

 - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)\\package\\' 
        artifactName: 'strategy' 

При выполнении вышеуказанных шагов zip-файл, загруженный на этапе Deploy, будет содержать только развернутый код.

Надеюсь, что вышеприведенный шаг будет вам полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...