Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions devops-pipelines/api-postman-test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
schedules:
- cron: "0 5 * * Tue-Sat"
displayName: "Weekday 5am UTC Api Test"
- cron: "0 3 * * Tue-Sat"
displayName: "Weekday 3am UTC Api Test"
branches:
include:
- main
Expand Down
49 changes: 24 additions & 25 deletions devops-pipelines/backend/backend-build-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ variables:
- name: buildConfiguration
value: "Release"
- name: dotNetVersion
value: '10.x'
value: "10.x"
- name: efVersion
value: '10.0.*'
value: "10.0.*"
- name: asposeLicenceFileName
value: "Aspose.Total.NET.lic"

Expand All @@ -43,7 +43,6 @@ stages:
parameters:
projectPath: "backend/CPS.ComplexCases.API.HttpTelemetry/CPS.ComplexCases.API.HttpTelemetry.csproj"
projectName: "HttpTelemetry"
buildConfiguration: $(buildConfiguration)
dotNetVersion: $(dotNetVersion)
useLocalNuGet: false
publishOutput: false
Expand All @@ -68,7 +67,7 @@ stages:
jobs:
- ${{ if or(eq(parameters.deployMainApi, true), eq(parameters.deployDB, true)) }}:
- job: Build_Main_API_And_DB
displayName: "Build Main API & DB Migration Scripts"
displayName: "Build Main API / DB Migration Scripts"
steps:
- ${{ if eq(parameters.deployMainApi, true) }}:
- task: DownloadSecureFile@1
Expand All @@ -90,11 +89,12 @@ stages:
parameters:
projectPath: "backend/CPS.ComplexCases.API/CPS.ComplexCases.API.csproj"
projectName: "lacc-main-api"
buildConfiguration: $(buildConfiguration)
dotNetVersion: $(dotNetVersion)
useLocalNuGet: true
${{ if eq(parameters.deployMainApi, true) }}:
publishOutput: true
releaseVersionArg: "/p:Version=$(releaseVersion)"
releaseSourceVersionArg: "/p:SourceRevisionId=$(Build.SourceVersion)"
${{ else }}:
publishOutput: false
runTests: false
Expand Down Expand Up @@ -130,47 +130,46 @@ stages:
parameters:
projectPath: "backend/CPS.ComplexCases.FileTransfer.API/CPS.ComplexCases.FileTransfer.API.csproj"
projectName: "lacc-filetransfer-api"
buildConfiguration: $(buildConfiguration)
dotNetVersion: $(dotNetVersion)
useLocalNuGet: true
publishOutput: true
runTests: false
releaseVersionArg: "/p:Version=$(releaseVersion)"
releaseSourceVersionArg: "/p:SourceRevisionId=$(Build.SourceVersion)"

# Deployment stages:
- template: ../templates/backend-deploy-stages.yml
parameters:
environment: dev
requireValidation: false
deployMainApi: ${{ parameters.deployMainApi }}
deployFiletransfer: ${{ parameters.deployFiletransfer }}
deployDB: ${{ parameters.deployDB }}

- template: ../templates/backend-deploy-stages.yml
parameters:
environment: staging
requireValidation: true
notifyUsers: $(preprodNotifyUsers)
approvers: $(preprodApprovers)
dependsOn: Build_Backend
deployToSlot: true
slotName: "stg"
runPostmanSmokeTest: true
deployMainApi: ${{ parameters.deployMainApi }}
deployFiletransfer: ${{ parameters.deployFiletransfer }}
deployDB: ${{ parameters.deployDB }}

- stage: Run_E2E_Tests
displayName: "Run E2E tests"
- stage: Release_Gate
displayName: "Release Gate"
jobs:
- template: ../templates/e2e-playwright-test-job.yml
parameters:
environment: staging
- job: Manual_Validation
pool: server
timeoutInMinutes: 6500
steps:
- task: ManualValidation@1
displayName: Request Validation
timeoutInMinutes: 6480
inputs:
notifyUsers: $(prodNotifyUsers)
approvers: $(prodApprovers)
allowApproversToApproveTheirOwnRuns: true
instructions: "Approval is required to deploy to production."
onTimeout: "reject"

- template: ../templates/backend-deploy-stages.yml
parameters:
environment: prod
requireValidation: true
notifyUsers: $(prodNotifyUsers)
approvers: $(prodApprovers)
dependsOn: Release_Gate
agentPool: "LACC Prod Pool"
azureSubscription: "Azure Pipeline: Large and Complex Cases - Prod"
deployToSlot: true
Expand Down
142 changes: 142 additions & 0 deletions devops-pipelines/backend/backend-dev-build-and-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
trigger:
batch: true
branches:
include:
- development
paths:
include:
- backend/*

parameters:
- name: deployDB
type: boolean
default: true
- name: deployMainApi
type: boolean
default: true
- name: deployFiletransfer
type: boolean
default: true

pr: none

variables:
- name: buildConfiguration
value: "Release"
- name: dotNetVersion
value: "10.x"
- name: efVersion
value: "10.0.*"
- name: asposeLicenceFileName
value: "Aspose.Total.NET.lic"

stages:
- stage: Build_Local_NuGet
displayName: "Pack and Publish NuGet Package"
pool: "LACC PreProd Pool"
jobs:
- job: Package_NuGet
displayName: "Pack and Publish NuGet Package"
steps:
- template: ../templates/dotnet-build-steps.yml
parameters:
projectPath: "backend/CPS.ComplexCases.API.HttpTelemetry/CPS.ComplexCases.API.HttpTelemetry.csproj"
projectName: "HttpTelemetry"
dotNetVersion: $(dotNetVersion)
useLocalNuGet: false
publishOutput: false
runTests: false

- task: DotNetCoreCLI@2
displayName: "Pack HttpTelemetry"
inputs:
command: "pack"
packagesToPack: "backend/CPS.ComplexCases.API.HttpTelemetry/CPS.ComplexCases.API.HttpTelemetry.csproj"
outputDir: "$(Build.ArtifactStagingDirectory)"
arguments: "--configuration $(buildConfiguration) --no-build"

- publish: "$(Build.ArtifactStagingDirectory)"
artifact: "localnuget"
displayName: "Publish HttpTelemetry Package"

- stage: Build_Backend
displayName: "Generate Build Artifacts for Deployment"
dependsOn: Build_Local_NuGet
pool: "LACC PreProd Pool"
jobs:
- ${{ if or(eq(parameters.deployMainApi, true), eq(parameters.deployDB, true)) }}:
- job: Build_Main_API_And_DB
displayName: "Build Main API / DB Migration Scripts"
steps:
- ${{ if eq(parameters.deployMainApi, true) }}:
- task: DownloadSecureFile@1
inputs:
secureFile: $(asposeLicenceFileName)
displayName: "Download Aspose Licence File"

- task: CopyFiles@2
inputs:
sourceFolder: $(Agent.TempDirectory)
contents: $(asposeLicenceFileName)
targetFolder: "backend/CPS.ComplexCases.API/Licences"
OverWrite: true
displayName: "Copy Aspose Licence File to Project Folder"

# When buildMainApi=false, the project still needs building
# as the startup project for the database migration script
- template: ../templates/dotnet-build-steps.yml
parameters:
projectPath: "backend/CPS.ComplexCases.API/CPS.ComplexCases.API.csproj"
projectName: "lacc-main-api"
dotNetVersion: $(dotNetVersion)
useLocalNuGet: true
${{ if eq(parameters.deployMainApi, true) }}:
publishOutput: true
${{ else }}:
publishOutput: false
runTests: false

- ${{ if eq(parameters.deployDB, true) }}:
- task: DotNetCoreCLI@2
displayName: "Build Database Project"
inputs:
command: "build"
projects: "backend/CPS.ComplexCases.Data/CPS.ComplexCases.Data.csproj"
arguments: "--configuration $(buildConfiguration)"

- task: Bash@3
displayName: "Generate Migration Scripts"
inputs:
filePath: "$(System.DefaultWorkingDirectory)/devops-pipelines/scripts/generateDBMigrationScripts.sh"
env:
EF_VERSION: $(efVersion)
DATA_PROJECT_PATH: "backend/CPS.ComplexCases.Data/CPS.ComplexCases.Data.csproj"
STARTUP_PROJECT_PATH: "backend/CPS.ComplexCases.API/CPS.ComplexCases.API.csproj"
MIGRATION_SCRIPT_OUT: "database-artifact/migration-script.sql"
ROLLBACK_SCRIPT_OUT: "database-artifact/rollback-migration-script.sql"

- publish: "database-artifact"
artifact: "database-scripts-drop"
displayName: "Publish Database Scripts"

- ${{ if eq(parameters.deployFiletransfer, true) }}:
- job: Build_FileTransfer_API
displayName: "Build FileTransfer API"
steps:
- template: ../templates/dotnet-build-steps.yml
parameters:
projectPath: "backend/CPS.ComplexCases.FileTransfer.API/CPS.ComplexCases.FileTransfer.API.csproj"
projectName: "lacc-filetransfer-api"
dotNetVersion: $(dotNetVersion)
useLocalNuGet: true
publishOutput: true
runTests: false

# Deploy to the dev environment
- template: ../templates/backend-deploy-stages.yml
parameters:
environment: dev
dependsOn: Build_Backend
deployMainApi: ${{ parameters.deployMainApi }}
deployFiletransfer: ${{ parameters.deployFiletransfer }}
deployDB: ${{ parameters.deployDB }}
14 changes: 1 addition & 13 deletions devops-pipelines/backend/backend-pr-build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,11 @@ pr:
branches:
include:
- main
- development
paths:
include:
- backend/*

parameters:
- name: buildDB
type: boolean
default: true
- name: buildMainApi
type: boolean
default: true
- name: buildFiletransfer
type: boolean
default: true

variables:
- name: buildConfiguration
value: "Release"
Expand All @@ -42,7 +32,6 @@ stages:
parameters:
projectPath: "backend/CPS.ComplexCases.API.HttpTelemetry/CPS.ComplexCases.API.HttpTelemetry.csproj"
projectName: "HttpTelemetry"
buildConfiguration: $(buildConfiguration)
dotNetVersion: $(dotNetVersion)
useLocalNuGet: false
publishOutput: false
Expand All @@ -68,7 +57,6 @@ stages:
parameters:
projectPath: "backend/CPS.ComplexCases.sln"
projectName: "Backend Solution"
buildConfiguration: "$(buildConfiguration)"
dotNetVersion: $(dotNetVersion)
useLocalNuGet: true
publishOutput: false
Expand Down
2 changes: 1 addition & 1 deletion devops-pipelines/backend/backend-pr-integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ trigger: none
pr:
branches:
include:
- main
- development
paths:
include:
- backend/*
Expand Down
3 changes: 0 additions & 3 deletions devops-pipelines/backend/db-rollback.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,17 @@ parameters:
- name: environment
displayName: 'Target Environment'
type: string
default: 'dev'
values:
- dev
- staging
- prod
- name: agentPool
type: string
default: 'LACC PreProd Pool'
values:
- 'LACC PreProd Pool'
- 'LACC Prod Pool'
- name: azureSubscription
type: string
default: 'Azure Pipeline: Large and Complex Cases - Pre-Prod'
values:
- 'Azure Pipeline: Large and Complex Cases - Pre-Prod'
- 'Azure Pipeline: Large and Complex Cases - Prod'
Expand Down
4 changes: 2 additions & 2 deletions devops-pipelines/cleanup-testfiles.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
schedules:
- cron: "0 3 * * Tue-Sat"
displayName: "Weekday 3am UTC cleanup"
- cron: "0 5 * * Tue-Sat"
displayName: "Weekday 5am UTC cleanup"
branches:
include:
- main
Expand Down
32 changes: 3 additions & 29 deletions devops-pipelines/templates/backend-deploy-stages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,6 @@ parameters:
values:
- "LACC PreProd Pool"
- "LACC Prod Pool"
- name: requireValidation
type: boolean
default: false
- name: notifyUsers
type: string
default: ""
- name: approvers
type: string
default: ""
- name: azureSubscription
type: string
default: "Azure Pipeline: Large and Complex Cases - Pre-Prod"
Expand All @@ -34,9 +25,9 @@ parameters:
- name: runPostmanSmokeTest
type: boolean
default: false
- name: buildStageName
- name: dependsOn
type: string
default: "Build_Backend"
default: ""
- name: deployDB
type: boolean
- name: deployMainApi
Expand All @@ -45,26 +36,9 @@ parameters:
type: boolean

stages:
- ${{ if eq(parameters.requireValidation, true) }}:
- stage: Approve_Deployment_${{ parameters.environment }}
displayName: "${{ parameters.environment }} - Approve Deployment"
jobs:
- template: ./manual-validation-jobs.yml
parameters:
instructions: "Please verify the deployment to the lower environment worked as expected before approving deployment to ${{parameters.environment}}."
notifyUsers: ${{ parameters.notifyUsers }}
approvers: ${{ parameters.approvers }}
agentPool: ${{ parameters.agentPool }}

- stage: Deploy_Backend_${{ parameters.environment }}
${{ if eq(parameters.requireValidation, true) }}:
dependsOn:
- Approve_Deployment_${{ parameters.environment }}
- ${{ parameters.buildStageName }}
${{ else }}:
dependsOn:
- ${{ parameters.buildStageName }}
displayName: "${{ parameters.environment }} - Deploy Backend Services"
dependsOn: ${{ parameters.dependsOn }}
variables:
- template: ./variables/backend-deploy-vars.yml
parameters:
Expand Down
Loading
Loading