Add macos and linux publishing
This commit is contained in:
@@ -50,7 +50,7 @@
|
|||||||
<PackageVersion Include="ObservableCollections" Version="3.3.4" />
|
<PackageVersion Include="ObservableCollections" Version="3.3.4" />
|
||||||
<PackageVersion Include="ObservableCollections.R3" Version="3.3.4" />
|
<PackageVersion Include="ObservableCollections.R3" Version="3.3.4" />
|
||||||
<PackageVersion Include="Octokit" Version="14.0.0" />
|
<PackageVersion Include="Octokit" Version="14.0.0" />
|
||||||
<PackageVersion Include="ParallelPipelines" Version="2.1.0" />
|
<PackageVersion Include="ParallelPipelines" Version="3.0.0" />
|
||||||
<PackageVersion Include="Photino.Blazor" Version="4.0.13" />
|
<PackageVersion Include="Photino.Blazor" Version="4.0.13" />
|
||||||
<PackageVersion Include="R3" Version="1.3.0" />
|
<PackageVersion Include="R3" Version="1.3.0" />
|
||||||
<PackageVersion Include="XtermBlazor" Version="2.2.0" />
|
<PackageVersion Include="XtermBlazor" Version="2.2.0" />
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ builder.Services.AddParallelPipelines(
|
|||||||
builder.Services
|
builder.Services
|
||||||
.AddStep<RestoreAndBuildStep>()
|
.AddStep<RestoreAndBuildStep>()
|
||||||
.AddStep<CreateWindowsRelease>()
|
.AddStep<CreateWindowsRelease>()
|
||||||
|
.AddStep<CreateLinuxRelease>()
|
||||||
|
.AddStep<CreateMacosRelease>()
|
||||||
.AddStep<CreateGithubRelease>()
|
.AddStep<CreateGithubRelease>()
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ using ParallelPipelines.Host.Helpers;
|
|||||||
namespace Deploy.Steps;
|
namespace Deploy.Steps;
|
||||||
|
|
||||||
[DependsOnStep<CreateWindowsRelease>]
|
[DependsOnStep<CreateWindowsRelease>]
|
||||||
|
[DependsOnStep<CreateLinuxRelease>]
|
||||||
|
[DependsOnStep<CreateMacosRelease>]
|
||||||
public class CreateGithubRelease(IPipelineContext pipelineContext) : IStep
|
public class CreateGithubRelease(IPipelineContext pipelineContext) : IStep
|
||||||
{
|
{
|
||||||
public async Task<BufferedCommandResult?[]?> RunStep(CancellationToken cancellationToken)
|
public async Task<BufferedCommandResult?[]?> RunStep(CancellationToken cancellationToken)
|
||||||
@@ -47,6 +49,26 @@ public class CreateGithubRelease(IPipelineContext pipelineContext) : IStep
|
|||||||
RawData = stream
|
RawData = stream
|
||||||
};
|
};
|
||||||
var asset = await github.Repository.Release.UploadAsset(release, upload, cancellationToken);
|
var asset = await github.Repository.Release.UploadAsset(release, upload, cancellationToken);
|
||||||
|
|
||||||
|
var linuxReleaseTarball = await PipelineFileHelper.GitRootDirectory.GetFile("./artifacts/publish-godot/sharpide-linux-x64.tar.gz");
|
||||||
|
await using var linuxStream = linuxReleaseTarball.OpenRead();
|
||||||
|
var linuxUpload = new ReleaseAssetUpload
|
||||||
|
{
|
||||||
|
FileName = $"sharpide-linux-x64-{versionString}.tar.gz",
|
||||||
|
ContentType = "application/gzip",
|
||||||
|
RawData = linuxStream
|
||||||
|
};
|
||||||
|
var linuxAsset = await github.Repository.Release.UploadAsset(release, linuxUpload, cancellationToken);
|
||||||
|
|
||||||
|
var macosReleaseDmg = await PipelineFileHelper.GitRootDirectory.GetFile("./artifacts/publish-godot/sharpide-osx-universal.dmg");
|
||||||
|
await using var macosStream = macosReleaseDmg.OpenRead();
|
||||||
|
var macosUpload = new ReleaseAssetUpload
|
||||||
|
{
|
||||||
|
FileName = $"sharpide-osx-universal-{versionString}.dmg",
|
||||||
|
ContentType = "application/octet-stream",
|
||||||
|
RawData = macosStream
|
||||||
|
};
|
||||||
|
var macosAsset = await github.Repository.Release.UploadAsset(release, macosUpload, cancellationToken);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
30
iac/Deploy/Steps/CreateLinuxRelease.cs
Normal file
30
iac/Deploy/Steps/CreateLinuxRelease.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using CliWrap.Buffered;
|
||||||
|
using ParallelPipelines.Application.Attributes;
|
||||||
|
using ParallelPipelines.Domain.Entities;
|
||||||
|
using ParallelPipelines.Host.Helpers;
|
||||||
|
|
||||||
|
namespace Deploy.Steps;
|
||||||
|
|
||||||
|
[DependsOnStep<RestoreAndBuildStep>]
|
||||||
|
public class CreateLinuxRelease : IStep
|
||||||
|
{
|
||||||
|
public async Task<BufferedCommandResult?[]?> RunStep(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var godotPublishDirectory = await PipelineFileHelper.GitRootDirectory.GetDirectory("./artifacts/publish-godot");
|
||||||
|
godotPublishDirectory.Create();
|
||||||
|
var linuxPublishDirectory = await godotPublishDirectory.GetDirectory("./linux");
|
||||||
|
linuxPublishDirectory.Create();
|
||||||
|
|
||||||
|
var godotProjectFile = await PipelineFileHelper.GitRootDirectory.GetFile("./src/SharpIDE.Godot/project.godot");
|
||||||
|
|
||||||
|
var godotExportResult = await PipelineCliHelper.RunCliCommandAsync(
|
||||||
|
"godot",
|
||||||
|
$"--headless --verbose --export-release Windows --project {godotProjectFile.GetFullNameUnix()}",
|
||||||
|
cancellationToken
|
||||||
|
);
|
||||||
|
|
||||||
|
var linuxTarballFile = await linuxPublishDirectory.TarballDirectoryToFile($"{PipelineFileHelper.GitRootDirectory.FullName}/artifacts/publish-godot/sharpide-linux-x64.tar.gz");
|
||||||
|
|
||||||
|
return [godotExportResult];
|
||||||
|
}
|
||||||
|
}
|
||||||
31
iac/Deploy/Steps/CreateMacosRelease.cs
Normal file
31
iac/Deploy/Steps/CreateMacosRelease.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using CliWrap.Buffered;
|
||||||
|
using ParallelPipelines.Application.Attributes;
|
||||||
|
using ParallelPipelines.Domain.Entities;
|
||||||
|
using ParallelPipelines.Host.Helpers;
|
||||||
|
|
||||||
|
namespace Deploy.Steps;
|
||||||
|
|
||||||
|
[DependsOnStep<RestoreAndBuildStep>]
|
||||||
|
public class CreateMacosRelease : IStep
|
||||||
|
{
|
||||||
|
public async Task<BufferedCommandResult?[]?> RunStep(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var godotPublishDirectory = await PipelineFileHelper.GitRootDirectory.GetDirectory("./artifacts/publish-godot");
|
||||||
|
godotPublishDirectory.Create();
|
||||||
|
var macosPublishDirectory = await godotPublishDirectory.GetDirectory("./osx");
|
||||||
|
macosPublishDirectory.Create();
|
||||||
|
|
||||||
|
var godotProjectFile = await PipelineFileHelper.GitRootDirectory.GetFile("./src/SharpIDE.Godot/project.godot");
|
||||||
|
|
||||||
|
var godotExportResult = await PipelineCliHelper.RunCliCommandAsync(
|
||||||
|
"godot",
|
||||||
|
$"--headless --verbose --export-release macOS --project {godotProjectFile.GetFullNameUnix()}",
|
||||||
|
cancellationToken
|
||||||
|
);
|
||||||
|
|
||||||
|
var macosDmgFile = await macosPublishDirectory.GetFile("SharpIDE.dmg");
|
||||||
|
macosDmgFile.MoveTo($"{PipelineFileHelper.GitRootDirectory.FullName}/artifacts/publish-godot/sharpide-osx-universal.dmg");
|
||||||
|
|
||||||
|
return [godotExportResult];
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user