Skip to content

Update continuous-integration-workflow.yml #2547

Update continuous-integration-workflow.yml

Update continuous-integration-workflow.yml #2547

name: Continuous Integration
on: [push]
env:
BuildParameters.RestoreBuildProjects: '**/*.csproj'
BuildParameters.TestProjects: '**/*[Tt]ests/*.csproj'
jobs:
build:
name: Build and test
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Modify web.config
shell: pwsh
run: |
[xml]$config = Get-Content "${{ github.workspace }}\WebAPI\LearningHub.Nhs.Api\web.config"
if (-not $config.configuration.'system.webServer') {
$systemWebServer = $config.CreateElement("system.webServer")
$config.configuration.AppendChild($systemWebServer) | Out-Null
} else {
$systemWebServer = $config.configuration.'system.webServer'
}
if (-not $systemWebServer.httpProtocol) {
$httpProtocol = $config.CreateElement("httpProtocol")
$systemWebServer.AppendChild($httpProtocol) | Out-Null
} else {
$httpProtocol = $systemWebServer.httpProtocol
}
if (-not $httpProtocol.customHeaders) {
$customHeaders = $config.CreateElement("customHeaders")
$httpProtocol.AppendChild($customHeaders) | Out-Null
} else {
$customHeaders = $httpProtocol.customHeaders
}
foreach ($name in @("X-Powered-By", "Server")) {
$removeNode = $config.CreateElement("remove")
$removeNode.SetAttribute("name", $name)
$customHeaders.AppendChild($removeNode) | Out-Null
}
if (-not $systemWebServer.security) {
$security = $config.CreateElement("security")
$systemWebServer.AppendChild($security) | Out-Null
} else {
$security = $systemWebServer.security
}
if (-not $security.requestFiltering) {
$requestFiltering = $config.CreateElement("requestFiltering")
$requestFiltering.SetAttribute("removeServerHeader", "true")
$security.AppendChild($requestFiltering) | Out-Null
}
$config.Save("${{ github.workspace }}/LearningHub.Nhs.WebUI/web.config")
- name: Setup .NET Core SDK 6.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Add Azure artifact
run: dotnet nuget add source 'https://pkgs.dev.azure.com/e-LfH/_packaging/LearningHubFeed/nuget/v3/index.json' --name 'LearningHubFeed' --username 'kevin.whittaker' --password ${{ secrets.AZURE_DEVOPS_PAT }} --store-password-in-clear-text
- name: Use Node 12.19 with Yarn
uses: actions/setup-node@v4
with:
node-version: '18'
npm: '6.14.8'
- name: Typescript install WebUI
run: yarn install --network-timeout 600000 --frozen-lockfile
working-directory: ./LearningHub.Nhs.WebUI
- name: Typescript build WebUI
run: yarn build:webpack
working-directory: ./LearningHub.Nhs.WebUI
- name: Typescript install AdminUI
run: yarn install
working-directory: ./AdminUI/LearningHub.Nhs.AdminUI
- name: Typescript build AdminUI
run: yarn build:webpack
working-directory: ./AdminUI/LearningHub.Nhs.AdminUI
- name: Setup MSBuild
uses: microsoft/[email protected]
- name: Build SQL Server Database project
run: |
# List all .sqlproj files except for .sqlproj
$sqlproj_files = Get-ChildItem -Path . -Filter *.sqlproj -Recurse
# Build each .csproj file
foreach ($sqlproj_file in $sqlproj_files) {
Write-Host "Building $($sqlproj_file.FullName)"
msbuild "$($sqlproj_file.FullName)" /p:Configuration=Release
}
- name: Build solution excluding SQL project
run: |
# List all .csproj files except for .sqlproj
$csproj_files = Get-ChildItem -Path . -Filter *.csproj -Recurse | Where-Object { $_.FullName -notmatch '\\.sqlproj$' }
# Build each .csproj file
foreach ($csproj_file in $csproj_files) {
Write-Host "Building $($csproj_file.FullName)"
dotnet build "$($csproj_file.FullName)"
}
# - name: Test
# run: dotnet test ${{ env.BuildParameters.TestProjects }}