0

I'm new with Azure and I was confident that it was just easy to configure a pipeline and deploy my solution within Azure ... but I'm stuck for 2 days and I don't find an up-to-date article that explains the full CI/CD.

Here's my solution (based on ABP Boilerplate):

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

I have an Azure account and I created two App Service:

For both the settings are the default one:

  • WEBSITE_RUN_FROM_PACKAGE '1'
  • WEBSITE_ENABLE_SYNC_UPDATE_SITE 'true'

In Azure DevOps everything is green ...

2 Pipelines:

  • Angular:
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://learn.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)'

For the release part:

  • Angular

It is created a subfolder UIApp within wwwroot but I don't understand why

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

I tried both Azure Web App Deploy and Azure App Service Deploy.

I tried to use deploy Zip / Run from package / deploy Web ... without success.

In the API, I see that it is created:

In /data/sitePackages/ a zip file with the datetime

In /site/wwwroot/ the zip file as well but named differently (wwwroot is readonly)

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

I don't understand what I miss, it should be easy to use the full azure stack ... I should miss a detail somewhere (or maybe I miss a big picture and a training on Yaml)

I would like to prevent the creation of the subfolder UiApp in wwwroot for the frontend.

The backend is not working at all with the package and I don't know how to fix or debug the issue. BTW I don't need to run from package. I would prefer the "classic" way with IIS

1 Answer 1

3

I finally got it to work correctly.

I'm now using for both app the Azure App Service Deploy and I didn't see the "..." button at the "Package or folder".

After selecting the right artifact file (zip file for .Net release and folder "drop" for Angular app), I got the files to sync with success.

Next step: update-database for entity framework Core and apply the config variables.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.