Azure Devops Изменить папку развертывания - PullRequest
0 голосов
/ 11 февраля 2020

Я использую Azure Devops для автоматизации c сборка и развертывание asp. net core 3.1 веб-приложения для Azure Службы приложений.

Проблема заключается в том, что он развертывает приложение в странную папку. Вместо папки wwwroot она находится в /home/site/wwwroot/Content/D_C/a/1/s/ExampleFolder/ExampleFolder2/ExampleFolder3/obj/Staging/netcoreapp3.1/PubTmp/Out Служба приложений включена Linux, если это имеет значение.

Как я могу просто исправить / изменить ее так, чтобы она находилась в основной папке?

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Я решил свою проблему, создав новый конвейер, в котором вместо агентов сборки Visual Studio используются агенты dotnet. При развертывании в Linux Служба приложений обязательно используйте CLI. Вы можете увидеть ответ @ martin-brandl, например, pipe.

Вы также можете обратиться к этому вопросу Devops SE. Проблема похожа: https://devops.stackexchange.com/questions/9598/azure-devops-artifact-zip-folder-structure-for-net-core-3-0-application

Я смотрю этот факт:

У меня есть ASP. NET Ядро 3.0 приложение, для которого у меня есть полная настройка CI / CD в Azure DevOps. Приложение размещено на сервере Ubuntu 18.04.

Поэтому я могу с уверенностью предположить, что вы разрабатываете приложение ASP. NET Core 3.0 для размещения в Ubuntu. Любое приложение. NET Core 3.0 (или более поздней) означает, что вы должны полагаться на dotnet build вместо использования VSBuild.

Также вы заявили, что вы будете размещать приложение в Ubuntu 18.x, затем вам также следует запустить сборку на Azure агенте DevOps, который работает в Ubuntu. Это означает, что вы должны использовать dotnet build только в задаче DotNetCoreCLI@2, поскольку задача VSBuild выполняется только на агенте на основе Windows, а не в Ubuntu и предназначена для компиляции. NET Framework и другая платформа, отличная от NET Core.

Пожалуйста, обратитесь к официальному заданию c из DotNetCoreCLI@2 по https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops

После того, как вы используете dotnet build, используйте dotnet publish для Publi sh ваш артефакт. Это намного проще, и это также лучший способ опубликовать sh. NET Основные приложения.

У меня есть пример использования dotnet build и dotnet publish этого в моем репо: https://github.com/eriawan/dotnetcore-cicd-samples/blob/master/yaml-samples/sample_pipelines_check.yml

1 голос
/ 11 февраля 2020

Вы должны поделиться своим конвейером с нами, в противном случае мы не сможем сказать вам, что вы должны изменить / исправить.

Однако здесь приведен пример, в котором используется задача AzureWebApp@1 для развертывания приложения. NET Core 3.1 в Azure веб-приложении.

trigger:
  branches:
    include:
    - master

stages:
- stage: Build
  jobs:
  - job: 'BuildArtifact'
    pool:
      vmImage: 'ubuntu-latest'
    steps:

    - task: UseDotNet@2
      inputs:
        packageType: sdk
        version: 3.1.x

    - task: DotNetCoreCLI@2
      displayName: Build
      inputs:
        command: 'build'
        projects: PATH/TO/YOUR/Project.csproj
        arguments: --output $(System.DefaultWorkingDirectory)/publish_output --configuration Release

    - task: ArchiveFiles@2
      displayName: 'Archive files'
      inputs:
        rootFolderOrFile: '$(System.DefaultWorkingDirectory)/publish_output'
        includeRootFolder: false
        archiveType: zip
        archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
        replaceExistingArchive: true

    - publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
      artifact: drop

- stage: Deploy
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: 'Deploy'
    pool:
      vmImage: 'ubuntu-latest'
    environment: Development
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: Azure Web App Deploy
            inputs:
              azureSubscription: YourAzureSubscription
              appName: YourAppName
              package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip
              appType: webAppLinux
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...