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
69 changes: 68 additions & 1 deletion .github/workflows/createrelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,19 @@ jobs:
run: |
dotnet restore TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet restore TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet restore HealthMonitoring/HealthMonitoring/HealthMonitoring.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }}

- name: Build Code
run: |
dotnet build TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.sln --configuration Release
dotnet build TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.sln --configuration Release
dotnet build HealthMonitoring/HealthMonitoring/HealthMonitoring.sln --configuration Release

- name: Publish API
run: |
dotnet publish "TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj" --configuration Release --output TransactionProcessing.MerchantPos/publishOutput -r win-x64 --self-contained
dotnet publish "TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj" --configuration Release --output TransactionProcessing.MerchantFileProcessor/publishOutput -r win-x64 --self-contained
dotnet publish "HealthMonitoring/HealthMonitoring/HealthMonitoring.csproj" --configuration Release --output HealthMonitoring/publishOutput -r win-x64 --self-contained

- name: Build Release Package (Merchant Pos)
run: |
Expand Down Expand Up @@ -69,10 +72,22 @@ jobs:
name: scheduledtasks
path: ScheduledTasks

- name: Build Release Package (Health Monitoring)
run: |
cd /home/runner/work/SupportTools/SupportTools/HealthMonitoring/publishOutput
zip -r ../healthmonitoring.zip ./*
echo "Zip file created at: $(realpath ../healthmonitoring.zip)"

- name: Upload the artifact (Health Monitoring)
uses: actions/upload-artifact@v4.4.0
with:
name: healthmonitoring
path: /home/runner/work/SupportTools/SupportTools/HealthMonitoring/healthmonitoring.zip

- name: Build and Publish Nuget Packages
if: ${{ github.event.release.prerelease == false }}
run: |
dotnet pack "HealthMonitoring.Client\HealthMonitoring.Client.csproj" /p:PackageVersion=${{ steps.get_version.outputs.VERSION }} --output Nugets
dotnet pack "HealthMonitoring\HealthMonitoring.Client\HealthMonitoring.Client.csproj" /p:PackageVersion=${{ steps.get_version.outputs.VERSION }} --output Nugets
dotnet nuget push Nugets/HealthMonitoring.Client.${{ steps.get_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }} --skip-duplicate

buildsqlagentjobdeploymenttool:
Expand Down Expand Up @@ -284,6 +299,32 @@ jobs:
New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic
Start-Service -Name $serviceName

- name: Download the artifact (Health Monitoring)
uses: actions/download-artifact@v4.1.8
with:
name: healthmonitoring

- name: Remove existing Windows service (Health Monitoring)
run: |
$serviceName = "Transaction Processing - Health Monitoring"
# Check if the service exists
if (Get-Service -Name $serviceName -ErrorAction SilentlyContinue) {
Stop-Service -Name $serviceName
sc.exe delete $serviceName
}

- name: Unzip the files (Health Monitoring)
run: |
Expand-Archive -Path healthmonitoring.zip -DestinationPath "C:\txnproc\transactionprocessing\healthmonitoring" -Force

- name: Install as a Windows service (Health Monitoring)
run: |
$serviceName = "Transaction Processing - Health Monitoring"
$servicePath = "C:\txnproc\transactionprocessing\healthmonitoring\HealthMonitoring.exe"

New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic
Start-Service -Name $serviceName

deployproduction:
runs-on: [productionserver, windows]
needs: [build, buildsqlagentjobdeploymenttool, deploystaging]
Expand Down Expand Up @@ -452,3 +493,29 @@ jobs:

New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic
Start-Service -Name $serviceName

- name: Download the artifact (Health Monitoring)
uses: actions/download-artifact@v4.1.8
with:
name: healthmonitoring

- name: Remove existing Windows service (Health Monitoring)
run: |
$serviceName = "Transaction Processing - Health Monitoring"
# Check if the service exists
if (Get-Service -Name $serviceName -ErrorAction SilentlyContinue) {
Stop-Service -Name $serviceName
sc.exe delete $serviceName
}

- name: Unzip the files (Health Monitoring)
run: |
Expand-Archive -Path healthmonitoring.zip -DestinationPath "C:\txnproc\transactionprocessing\healthmonitoring" -Force

- name: Install as a Windows service (Health Monitoring)
run: |
$serviceName = "Transaction Processing - Health Monitoring"
$servicePath = "C:\txnproc\transactionprocessing\healthmonitoring\HealthMonitoring.exe"

New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic
Start-Service -Name $serviceName
4 changes: 2 additions & 2 deletions .github/workflows/pullrequest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
dotnet-version: '10.0.x'

- name: Restore Health Monitoring solution
run: dotnet restore HealthMonitoring/HealthMonitoring.sln
run: dotnet restore HealthMonitoring/HealthMonitoring/HealthMonitoring.sln

- name: Run Health Monitoring unit tests
run: dotnet test HealthMonitoring.Tests/HealthMonitoring.Tests.csproj --configuration Release --no-restore --filter "FullyQualifiedName!~ConfigurationTests"
run: dotnet test HealthMonitoring/HealthMonitoring.Tests/HealthMonitoring.Tests.csproj --configuration Release --no-restore --filter "FullyQualifiedName!~ConfigurationTests"
45 changes: 43 additions & 2 deletions .github/workflows/pushtomain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,19 @@ jobs:
run: |
dotnet restore TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet restore TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }}
dotnet restore HealthMonitoring/HealthMonitoring/HealthMonitoring.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }}

- name: Build Code
run: |
dotnet build TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.sln --configuration Release
dotnet build TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.sln --configuration Release
dotnet build HealthMonitoring/HealthMonitoring/HealthMonitoring.sln --configuration Release

- name: Publish API
run: |
dotnet publish "TransactionProcessing.MerchantPos/TransactionProcessing.MerchantPos.csproj" --configuration Release --output TransactionProcessing.MerchantPos/publishOutput -r win-x64 --self-contained
dotnet publish "TransactionProcessing.MerchantFileProcessor/TransactionProcessing.MerchantFileProcessor.csproj" --configuration Release --output TransactionProcessing.MerchantFileProcessor/publishOutput -r win-x64 --self-contained
dotnet publish "HealthMonitoring/HealthMonitoring/HealthMonitoring.csproj" --configuration Release --output HealthMonitoring/publishOutput -r win-x64 --self-contained

- name: Build Release Package (Merchant Pos)
run: |
Expand Down Expand Up @@ -83,10 +86,22 @@ jobs:
with:
name: scheduledtasks
path: ScheduledTasks


- name: Build Release Package (Health Monitoring)
run: |
cd /home/runner/work/SupportTools/SupportTools/HealthMonitoring/publishOutput
zip -r ../healthmonitoring.zip ./*
echo "Zip file created at: $(realpath ../healthmonitoring.zip)"

- name: Upload the artifact (Health Monitoring)
uses: actions/upload-artifact@v4.4.0
with:
name: healthmonitoring
path: /home/runner/work/SupportTools/SupportTools/HealthMonitoring/healthmonitoring.zip

- name: Build and Publish Nuget Packages
run: |
dotnet pack "HealthMonitoring.Client\HealthMonitoring.Client.csproj" /p:PackageVersion=${{ steps.next_version.outputs.VERSION }} --output Nugets
dotnet pack "HealthMonitoring\HealthMonitoring.Client\HealthMonitoring.Client.csproj" /p:PackageVersion=${{ steps.next_version.outputs.VERSION }} --output Nugets
dotnet nuget push Nugets/HealthMonitoring.Client.${{ steps.next_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }}

buildsqlagentjobdeploymenttool:
Expand Down Expand Up @@ -297,3 +312,29 @@ jobs:

New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic
Start-Service -Name $serviceName

- name: Download the artifact (Health Monitoring)
uses: actions/download-artifact@v4.1.8
with:
name: healthmonitoring

- name: Remove existing Windows service (Health Monitoring)
run: |
$serviceName = "Transaction Processing - Health Monitoring"
# Check if the service exists
if (Get-Service -Name $serviceName -ErrorAction SilentlyContinue) {
Stop-Service -Name $serviceName
sc.exe delete $serviceName
}

- name: Unzip the files (Health Monitoring)
run: |
Expand-Archive -Path healthmonitoring.zip -DestinationPath "C:\txnproc\transactionprocessing\healthmonitoring" -Force

- name: Install as a Windows service (Health Monitoring)
run: |
$serviceName = "Transaction Processing - Health Monitoring"
$servicePath = "C:\txnproc\transactionprocessing\healthmonitoring\HealthMonitoring.exe"

New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic
Comment thread
StuartFerguson marked this conversation as resolved.
Resolved
Start-Service -Name $serviceName
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ public async Task RegisterAsync_posts_service_configuration_and_returns_acknowle
PollingInterval = TimeSpan.FromSeconds(30),
RequestTimeout = TimeSpan.FromSeconds(8),
RetentionPeriod = TimeSpan.FromDays(90),
IgnoreCertificateErrors = true
IgnoreCertificateErrors = true,
Version = "1.2.3"
});

Assert.Equal("created", result.Action);
Expand All @@ -46,6 +47,7 @@ public async Task RegisterAsync_posts_service_configuration_and_returns_acknowle
Assert.Equal(0, payload.MonitorType);
Assert.Equal(30, payload.PollingIntervalSeconds);
Assert.True(payload.IgnoreCertificateErrors);
Assert.Equal("1.2.3", payload.Version);
}

[Fact]
Expand Down Expand Up @@ -132,6 +134,7 @@ private sealed class ServiceRegistrationPayload
public int MonitorType { get; set; }
public int PollingIntervalSeconds { get; set; }
public bool IgnoreCertificateErrors { get; set; }
public string? Version { get; set; }
}

private sealed class DependencyMappingPayload
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public void Configuration_registration_binds_service_settings_and_adds_startup_r
["HealthMonitoring:Service:Name"] = "Mobile Configuration",
["HealthMonitoring:Service:HealthUrl"] = "https://mobile.example/healthui",
["HealthMonitoring:Service:Description"] = "Mobile Configuration",
["HealthMonitoring:Service:Version"] = "1.2.3",
["HealthMonitoring:Service:PollingInterval"] = "00:02:00",
["HealthMonitoring:Dependencies:0:DependencyName"] = "Security Service",
["HealthMonitoring:Dependencies:0:TargetServiceId"] = "security-service"
Expand All @@ -33,6 +34,7 @@ public void Configuration_registration_binds_service_settings_and_adds_startup_r

Assert.Equal(new Uri("https://monitoring.example/"), options.MonitoringServerUrl);
Assert.Equal("mobile-configuration", options.Service.ServiceId);
Assert.Equal("1.2.3", options.Service.Version);
Assert.Equal(TimeSpan.FromMinutes(2), options.Service.PollingInterval);
Assert.Single(options.Dependencies);
Assert.Contains(provider.GetServices<IHostedService>(), service => service is HealthMonitoringRegistrationHostedService);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.12" />
<PackageReference Include="KurrentDB.Client" Version="1.4.1" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.6" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="10.0.12" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddWindowsService(options =>
{
options.ServiceName = "Transaction Processing - Health Monitoring";
});

builder.Configuration.AddJsonFile("hosting.json", optional: true, reloadOnChange: true);
builder.Services.AddSingleton(new InitializationOptions
{
Expand Down
10 changes: 0 additions & 10 deletions HealthMonitoring/appsettings.Development.json

This file was deleted.

Loading