create release pipeline v1

This commit is contained in:
Matt Parker
2025-11-14 23:19:18 +10:00
parent a26ba4f68c
commit 63d6dae754
7 changed files with 120 additions and 1 deletions

14
iac/Deploy/Deploy.csproj Normal file
View File

@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ParallelPipelines" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,6 @@
namespace Deploy;
public static class DeploymentConstants
{
public const string SolutionFileName = "SharpIDE.sln";
}

28
iac/Deploy/Program.cs Normal file
View File

@@ -0,0 +1,28 @@
using Deploy.Steps;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using ParallelPipelines.Host;
var builder = Host.CreateApplicationBuilder(args);
builder
.Configuration.AddJsonFile("appsettings.Development.json", true)
.AddUserSecrets<Program>()
.AddEnvironmentVariables();
builder.Services.AddParallelPipelines(
builder.Configuration,
config =>
{
config.Local.OutputSummaryToFile = true;
config.Cicd.OutputSummaryToGithubStepSummary = true;
config.Cicd.WriteCliCommandOutputsToSummary = true;
}
);
builder.Services
.AddStep<RestoreAndBuildStep>()
;
using var host = builder.Build();
await host.RunAsync();

View File

@@ -0,0 +1,29 @@
using CliWrap.Buffered;
using ParallelPipelines.Domain.Entities;
using ParallelPipelines.Host.Helpers;
using ParallelPipelines.Host.InternalHelpers;
namespace Deploy.Steps;
public class RestoreAndBuildStep : IStep
{
public async Task<BufferedCommandResult?[]?> RunStep(CancellationToken cancellationToken)
{
var slnFileName = DeploymentConstants.SolutionFileName;
var slnFile = await PipelineFileHelper.GitRootDirectory.GetFile(slnFileName);
var restoreResult = await PipelineCliHelper.RunCliCommandAsync(
"dotnet",
$"restore {slnFile.FullName}",
cancellationToken
);
var buildResult = await PipelineCliHelper.RunCliCommandAsync(
"dotnet",
$"build {slnFile.FullName} --no-restore -c Release",
cancellationToken
);
return [restoreResult, buildResult];
}
}