![]() |
VOOZH | about |
dotnet add package Invex.StructuredText.GithubActions --version 1.0.0
NuGet\Install-Package Invex.StructuredText.GithubActions -Version 1.0.0
<PackageReference Include="Invex.StructuredText.GithubActions" Version="1.0.0" />
<PackageVersion Include="Invex.StructuredText.GithubActions" Version="1.0.0" />Directory.Packages.props
<PackageReference Include="Invex.StructuredText.GithubActions" />Project file
paket add Invex.StructuredText.GithubActions --version 1.0.0
#r "nuget: Invex.StructuredText.GithubActions, 1.0.0"
#:package Invex.StructuredText.GithubActions@1.0.0
#addin nuget:?package=Invex.StructuredText.GithubActions&version=1.0.0Install as a Cake Addin
#tool nuget:?package=Invex.StructuredText.GithubActions&version=1.0.0Install as a Cake Tool
A strongly-typed C# library for generating structured YAML text files, specifically GitHub Actions workflows, Dependabot configurations, and Azure DevOps Pipelines, using a fluent, type-safe API with a powerful expression system.
Define CI/CD pipelines as C# objects with full IntelliSense and compile-time validation
Build complex expressions (conditions, string interpolation, functions) that compile to platform-specific syntax
Full support for workflow YAML generation including triggers, jobs, steps, matrix strategies, permissions, concurrency, containers, and more
Generate dependabot.yml configurations with registries, update rules, groups, and schedules
Comprehensive pipeline generation with stages, jobs, deployment strategies (runOnce, rolling, canary), resources, templates, and parameters
| Package | Description |
|---|---|
Invex.StructuredText |
Core library with StructuredTextWriter and the expression system |
Invex.StructuredText.GithubActions |
GitHub Actions workflow and Dependabot config generation |
Invex.StructuredText.AzureDevopsPipelines |
Azure DevOps Pipelines YAML generation |
dotnet add package Invex.StructuredText.GithubActions
# or
dotnet add package Invex.StructuredText.AzureDevopsPipelines
Both platform packages depend on Invex.StructuredText core, so it will be installed automatically.
Comprehensive guides live in the directory:
dependabot.yml generationAn auto-generated is built with docfx from the XML documentation comments.
var workflow = new GithubAction
{
Name = "CI",
On =
[
new On.Push
{
Branches = ["main"],
BranchesIgnore = null,
Tags = null,
TagsIgnore = null,
Paths = null,
PathsIgnore = null,
},
],
Jobs =
[
new Job
{
Name = new RawExpression("build"),
RunsOn = new() { Labels = [new RawExpression("ubuntu-latest")] },
Steps =
[
new Step.UsesStep
{
Name = new RawExpression("Checkout"),
Uses = new RawExpression("actions/checkout@v4"),
},
new Step.RunStep
{
Name = new RawExpression("Build"),
Run = ["dotnet build --configuration Release"],
},
],
},
],
};
var writer = new GithubActionWriter();
writer.Write(workflow);
var yaml = writer.TextWriter.ToString();
var pipeline = new DevopsPipeline.DevopsPipelineWithSteps
{
Trigger = new Trigger.BranchList { Branches = ["main"] },
Steps =
[
new Step.Script { ScriptContent = new RawExpression("echo Hello, world!") },
],
};
var writer = new DevopsPipelineWriter();
writer.Write(pipeline);
var yaml = writer.TextWriter.ToString();
The expression system provides a fluent API for building platform-specific expressions that are formatted differently
depending on the target (GitHub Actions uses ${{ }} syntax, Azure DevOps uses its own macro/runtime expression
syntax).
// Reference step outputs
var output = new StepOutputExpression
{
StepName = "build-step",
OutputName = "artifact-path",
};
// Use conditions
var condition = output.Contains("release").Evaluate();
// String interpolation with format expressions
var formatted = TextExpressions.Format($"Release-{output}");
// Logic operators
var combined = output.Contains("main") & new BooleanExpression(true);
Invex.StructuredText)StructuredTextWriter: A low-level indentation-aware text writer that handles YAML-style output with automatic
indent management via IDisposable scopesTextExpression hierarchy) representing values, functions, logic
operators, and workflow-specific constructs (step outputs, job outcomes, etc.)TextExpressionFormatter: Base class for platform-specific expression formattersInvex.StructuredText.GithubActions)GithubActionWriter: Serializes a GithubAction model to valid workflow YAMLDependabotConfigWriter: Serializes a DependabotConfig model to valid dependabot.ymlGithubExpressionFormatter: Formats expressions using GitHub's ${{ }} syntaxInvex.StructuredText.AzureDevopsPipelines)DevopsPipelineWriter: Serializes a DevopsPipeline model to valid pipeline YAMLDevopsExpressionFormatter: Formats expressions using Azure DevOps syntaxThis project is licensed under the .
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on Invex.StructuredText.GithubActions:
| Package | Downloads |
|---|---|
|
Invex.Atom.Module.GithubWorkflows
An opinionated task and build automation framework |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0-rc.8 | 41 | 6/17/2026 |
| 1.1.0-rc.6 | 44 | 6/15/2026 |
| 1.1.0-rc.4 | 46 | 6/11/2026 |
| 1.1.0-rc.2 | 49 | 6/10/2026 |
| 1.0.0 | 1,337 | 6/10/2026 |
| 0.4.0-rc.10 | 50 | 6/10/2026 |
| 0.3.0 | 1,963 | 6/7/2026 |
| 0.3.0-rc.1 | 49 | 6/7/2026 |
| 0.2.0 | 91 | 6/6/2026 |
| 0.2.0-rc.3 | 59 | 6/6/2026 |
| 0.2.0-rc.1 | 49 | 6/6/2026 |
| 0.1.0 | 87 | 6/6/2026 |
| 0.1.0-rc.1 | 43 | 6/6/2026 |