Write your pipelines in C#!
If you want to see how to get started, or want to know more about ModularPipelines, read the Wiki page here
await PipelineHostBuilder.Create()
.ConfigureAppConfiguration((context, builder) =>
{
builder.AddJsonFile("appsettings.json")
.AddUserSecrets<Program>()
.AddEnvironmentVariables();
})
.ConfigureServices((context, collection) =>
{
collection.Configure<NuGetSettings>(context.Configuration.GetSection("NuGet"));
collection.Configure<PublishSettings>(context.Configuration.GetSection("Publish"));
})
.AddModule<FindNugetPackagesModule>()
.AddModule<UploadNugetPackagesModule>()
.ExecutePipelineAsync();public class FindNugetPackagesModule : Module<FileInfo>
{
protected override async Task<List<File>?> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
{
await Task.Yield();
return context.FileSystem.GetFiles(context.Environment.GitRootDirectory!.Path,
SearchOption.AllDirectories,
path => path.Extension is ".nupkg")
.ToList();
}
}[DependsOn<FindNugetPackagesModule>]
public class UploadNugetPackagesModule : Module<FileInfo>
{
private readonly IOptions<NuGetSettings> _nugetSettings;
public UploadNugetPackagesModule(IOptions<NuGetSettings> nugetSettings)
{
_nugetSettings = nugetSettings;
}
protected override async Task<CommandResult?> ExecuteAsync(IModuleContext context, CancellationToken cancellationToken)
{
var nugetFiles = await GetModule<FindNugetPackagesModule>();
return await context.NuGet()
.UploadPackages(new NuGetUploadOptions(packagePaths.Value!.AsPaths(), new Uri("https://api.nuget.org/v3/index.json"))
{
ApiKey = _nugetSettings.Value.ApiKey,
NoSymbols = true
});
}
}