From e1c4646696805babe28ccabbf1807f752c49c075 Mon Sep 17 00:00:00 2001 From: dylanignite <57325972+dylanignite@users.noreply.github.com> Date: Sun, 3 Nov 2019 15:48:27 -0500 Subject: [PATCH 1/3] Create azure-pipelines-ci.yml --- azure-pipelines-ci.yml | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 azure-pipelines-ci.yml diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml new file mode 100644 index 0000000..6db2162 --- /dev/null +++ b/azure-pipelines-ci.yml @@ -0,0 +1,74 @@ +trigger: +- master + +pr: none + +pool: + vmImage: 'windows-latest' + +variables: + solution: '**/*.sln' + buildPlatform: 'Any CPU' + buildConfiguration: 'Release' + +steps: +- task: NuGetToolInstaller@1 + displayName: Install Nuget + +- task: NuGetCommand@2 + displayName: NuGet Restore + inputs: + restoreSolution: '$(solution)' + +- task: BatchScript@1 + displayName: Build Angular + inputs: + filename: '$(Build.SourcesDirectory)\src\PokerLeagueManager.UI.Web\BuildAngular.bat' + +- task: VSBuild@1 + displayName: Build Solution + inputs: + solution: '$(solution)' + msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true' + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + +- task: CopyFiles@2 + displayName: Copy Deployment Packages + inputs: + SourceFolder: '$(Build.SourcesDirectory)' + Contents: | + **\*.Commands.WebApi.zip + **\*.Events.WebApi.zip + **\*.Queries.WebApi.zip + **\*.UI.Web.zip + **\*.dacpac + TargetFolder: '$(Build.ArtifactStagingDirectory)' + flattenFolders: true + +- task: CopyFiles@2 + displayName: Copy Deploy folder + inputs: + SourceFolder: '$(Build.SourcesDirectory)\deploy' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)\deploy' + +- task: CopyFiles@2 + displayName: Copy Utility + inputs: + SourceFolder: '$(Build.SourcesDirectory)\src\PokerLeagueManager.Utilities\bin\$(BuildConfiguration)' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)\Utility' + +- task: VSTest@2 + displayName: Run Unit Tests + inputs: + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + +- task: PublishBuildArtifacts@1 + displayName: Publish Artifacts + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'drop' + publishLocation: 'Container' From c76c0f763af697b3b0d3a778d4cce10489ad94fe Mon Sep 17 00:00:00 2001 From: dylanignite <57325972+dylanignite@users.noreply.github.com> Date: Sun, 3 Nov 2019 15:49:17 -0500 Subject: [PATCH 2/3] trigger: none on PR build --- azure-pipelines.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a90b084..e8033d8 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -3,8 +3,7 @@ # Add steps that publish symbols, save build artifacts, deploy, and more: # https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4 -trigger: -- master +trigger: none pool: vmImage: 'windows-latest' @@ -74,4 +73,4 @@ steps: inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' - publishLocation: 'Container' \ No newline at end of file + publishLocation: 'Container' From b48b7b1cb3700e3e84d15d6ee1cdcc131e26f26a Mon Sep 17 00:00:00 2001 From: dylanignite <57325972+dylanignite@users.noreply.github.com> Date: Sun, 3 Nov 2019 16:23:07 -0500 Subject: [PATCH 3/3] Set up CI with Azure Pipelines [skip ci] --- azure-pipelines-ci.yml | 157 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 141 insertions(+), 16 deletions(-) diff --git a/azure-pipelines-ci.yml b/azure-pipelines-ci.yml index 6db2162..1925a12 100644 --- a/azure-pipelines-ci.yml +++ b/azure-pipelines-ci.yml @@ -1,4 +1,9 @@ -trigger: +# ASP.NET +# Build and test ASP.NET projects. +# Add steps that publish symbols, save build artifacts, deploy, and more: +# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4 + +trigger: - master pr: none @@ -10,21 +15,24 @@ variables: solution: '**/*.sln' buildPlatform: 'Any CPU' buildConfiguration: 'Release' + adhocrg: 'dylanadhocpoker005' steps: - task: NuGetToolInstaller@1 - displayName: Install Nuget + displayName: Install NuGet - task: NuGetCommand@2 displayName: NuGet Restore inputs: restoreSolution: '$(solution)' + enabled: true - task: BatchScript@1 displayName: Build Angular inputs: filename: '$(Build.SourcesDirectory)\src\PokerLeagueManager.UI.Web\BuildAngular.bat' - + enabled: true + - task: VSBuild@1 displayName: Build Solution inputs: @@ -32,19 +40,36 @@ steps: msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' + enabled: true + +- task: VSTest@2 + displayName: Run Unit Tests + inputs: + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + enabled: true - task: CopyFiles@2 - displayName: Copy Deployment Packages + displayName: Copy Artifacts inputs: - SourceFolder: '$(Build.SourcesDirectory)' + SourceFolder: '$(Build.SourcesDirectory)\' Contents: | + **\*.dacpac **\*.Commands.WebApi.zip **\*.Events.WebApi.zip **\*.Queries.WebApi.zip **\*.UI.Web.zip - **\*.dacpac TargetFolder: '$(Build.ArtifactStagingDirectory)' flattenFolders: true + enabled: true + +- task: CopyFiles@2 + displayName: Copy Utility + inputs: + SourceFolder: '$(Build.SourcesDirectory)\src\PokerLeagueManager.Utilities\bin\$(buildConfiguration)' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)\Utility' + enabled: true - task: CopyFiles@2 displayName: Copy Deploy folder @@ -52,23 +77,123 @@ steps: SourceFolder: '$(Build.SourcesDirectory)\deploy' Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)\deploy' + enabled: true -- task: CopyFiles@2 - displayName: Copy Utility +- task: AzureResourceManagerTemplateDeployment@3 + displayName: Provision Environment inputs: - SourceFolder: '$(Build.SourcesDirectory)\src\PokerLeagueManager.Utilities\bin\$(BuildConfiguration)' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)\Utility' + deploymentScope: 'Resource Group' + ConnectedServiceName: 'WorkshopAzure' + subscriptionName: 'e16d929e-2ebf-4445-805e-c032ef6c4559' + action: 'Create Or Update Resource Group' + resourceGroupName: '$(adhocrg)' + location: 'West US 2' + templateLocation: 'Linked artifact' + csmFile: '$(Build.ArtifactStagingDirectory)\deploy\Azure ARM\ArmTemplate.json' + overrideParameters: '-appname $(adhocrg)' + deploymentMode: 'Incremental' + enabled: true -- task: VSTest@2 - displayName: Run Unit Tests +- task: AzureRmWebAppDeployment@4 + displayName: Deploy Commands Service inputs: - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' + ConnectionType: 'AzureRM' + azureSubscription: 'WorkshopAzure' + appType: 'webApp' + WebAppName: '$(adhocrg)-commands' + packageForLinux: '$(Build.ArtifactStagingDirectory)\PokerLeagueManager.Commands.WebApi.zip' + enabled: true + +- task: AzureRmWebAppDeployment@4 + displayName: Deploy Events Service + inputs: + ConnectionType: 'AzureRM' + azureSubscription: 'WorkshopAzure' + appType: 'webApp' + WebAppName: '$(adhocrg)-events' + packageForLinux: '$(Build.ArtifactStagingDirectory)\PokerLeagueManager.Events.WebApi.zip' + enabled: true + +- task: AzureRmWebAppDeployment@4 + displayName: Deploy Queries Service + inputs: + ConnectionType: 'AzureRM' + azureSubscription: 'WorkshopAzure' + appType: 'webApp' + WebAppName: '$(adhocrg)-queries' + packageForLinux: '$(Build.ArtifactStagingDirectory)\PokerLeagueManager.Queries.WebApi.zip' + enabled: true + +- task: AzureRmWebAppDeployment@4 + displayName: Deploy UI Website + inputs: + ConnectionType: 'AzureRM' + azureSubscription: 'WorkshopAzure' + appType: 'webApp' + WebAppName: '$(adhocrg)' + packageForLinux: '$(Build.ArtifactStagingDirectory)\PokerLeagueManager.UI.Web.zip' + enabled: true + +- task: SqlAzureDacpacDeployment@1 + displayName: Deploy Events DB + inputs: + azureSubscription: 'WorkshopAzure' + AuthenticationType: 'server' + ServerName: '$(adhocrg).database.windows.net' + DatabaseName: 'Events' + SqlUsername: 'dylan' + SqlPassword: 'P2ssw0rd' + deployType: 'DacpacTask' + DeploymentAction: 'Publish' + DacpacFile: '$(Build.ArtifactStagingDirectory)\PokerLeagueManager.DB.EventStore.dacpac' + IpDetectionMethod: 'AutoDetect' + AdditionalArguments: '/p:CreateNewDatabase=true' + enabled: true + +- task: SqlAzureDacpacDeployment@1 + displayName: Deploy Queries DB + inputs: + azureSubscription: 'WorkshopAzure' + AuthenticationType: 'server' + ServerName: '$(adhocrg).database.windows.net' + DatabaseName: 'Queries' + SqlUsername: 'dylan' + SqlPassword: 'P2ssw0rd' + deployType: 'DacpacTask' + DeploymentAction: 'Publish' + DacpacFile: '$(Build.ArtifactStagingDirectory)\PokerLeagueManager.DB.QueryStore.dacpac' + IpDetectionMethod: 'AutoDetect' + AdditionalArguments: '/p:CreateNewDatabase=true' + enabled: true + +- task: CmdLine@2 + displayName: Register Event Subscriber + inputs: + script: 'PokerLeagueManager.Utilities.exe CreateEventSubscriber $(adhocrg).database.windows.net Events dylan P2ssw0rd http://$(adhocrg)-events.azurewebsites.net' + workingDirectory: '$(Build.ArtifactStagingDirectory)\Utility' + enabled: true + +- task: CmdLine@2 + displayName: Integration Test + inputs: + script: 'PokerLeagueManager.Utilities.exe GenerateSampleData http://$(adhocrg)-commands.azurewebsites.net 5' + workingDirectory: '$(Build.ArtifactStagingDirectory)\Utility' + enabled: true + +- task: AzureResourceManagerTemplateDeployment@3 + displayName: Delete Environment + inputs: + deploymentScope: 'Resource Group' + ConnectedServiceName: 'WorkshopAzure' + subscriptionName: 'e16d929e-2ebf-4445-805e-c032ef6c4559' + action: 'DeleteRG' + location: 'West US 2' + resourceGroupName: '$(adhocrg)' + enabled: true - task: PublishBuildArtifacts@1 displayName: Publish Artifacts inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: 'drop' - publishLocation: 'Container' + publishLocation: 'Container' \ No newline at end of file