diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 67d861c45..f881fdc1c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,58 +1,89 @@ trigger: -- '*' - -pool: - vmImage: 'ubuntu-20.04' - demands: - - npm - + - '*' + variables: buildConfiguration: 'Release' - wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' - dotnetSdkVersion: '6.x' - -steps: -- task: UseDotNet@2 - displayName: 'Use .NET SDK $(dotnetSdkVersion)' - inputs: - version: '$(dotnetSdkVersion)' - -- task: Npm@1 - displayName: 'Run npm install' - inputs: - verbose: false - -- script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' - displayName: 'Compile Sass assets' - -- task: gulp@1 - displayName: 'Run gulp tasks' - -- script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' - displayName: 'Write build info' - workingDirectory: $(wwwrootDir) - -- task: DotNetCoreCLI@2 - displayName: 'Restore project dependencies' - inputs: - command: 'restore' - projects: '**/*.csproj' - -- task: DotNetCoreCLI@2 - displayName: 'Build the project - $(buildConfiguration)' - inputs: - command: 'build' - arguments: '--no-restore --configuration $(buildConfiguration)' - projects: '**/*.csproj' - -- task: DotNetCoreCLI@2 - displayName: 'Publish the project - $(buildConfiguration)' - inputs: - command: 'publish' - projects: '**/*.csproj' - publishWebProjects: false - arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' - zipAfterPublish: true - -- publish: '$(Build.ArtifactStagingDirectory)' - artifact: drop + +stages: +- stage: 'Build' + displayName: 'Build the web application' + jobs: + - job: 'Build' + displayName: 'Build job' + pool: + vmImage: 'ubuntu-20.04' + demands: + - npm + + variables: + wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' + dotnetSdkVersion: '6.x' + + steps: + - task: UseDotNet@2 + displayName: 'Use .NET SDK $(dotnetSdkVersion)' + inputs: + version: '$(dotnetSdkVersion)' + + - task: Npm@1 + displayName: 'Run npm install' + inputs: + verbose: false + + - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' + displayName: 'Compile Sass assets' + + - task: gulp@1 + displayName: 'Run gulp tasks' + + - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' + displayName: 'Write build info' + workingDirectory: $(wwwrootDir) + + - task: DotNetCoreCLI@2 + displayName: 'Restore project dependencies' + inputs: + command: 'restore' + projects: '**/*.csproj' + + - task: DotNetCoreCLI@2 + displayName: 'Build the project - $(buildConfiguration)' + inputs: + command: 'build' + arguments: '--no-restore --configuration $(buildConfiguration)' + projects: '**/*.csproj' + + - task: DotNetCoreCLI@2 + displayName: 'Publish the project - $(buildConfiguration)' + inputs: + command: 'publish' + projects: '**/*.csproj' + publishWebProjects: false + arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' + zipAfterPublish: true + + - publish: '$(Build.ArtifactStagingDirectory)' + artifact: drop + +- stage: 'Deploy' + displayName: 'Deploy the web application' + dependsOn: Build + jobs: + - deployment: Deploy + pool: + vmImage: 'ubuntu-20.04' + environment: dev + variables: + - group: Release + strategy: + runOnce: + deploy: + steps: + - download: current + artifact: drop + - task: AzureWebApp@1 + displayName: 'Azure App Service Deploy: website' + inputs: + azureSubscription: 'Resource Manager - Tailspin - Space Game' + appName: '$(WebAppName)' + package: '$(Pipeline.Workspace)/drop/$(buildConfiguration)/*.zip' \ No newline at end of file