Table of Contents

Atom Build Module

Invex.RepoUtils.Atom.Module is an Atom build module that contributes reusable, opinionated CI/CD building blocks for .NET repositories. Add the interfaces you need to your Atom IBuild definition and wire the provided targets into your workflows. Use it when your repository builds with Atom and runs on GitHub Actions.

Overview

This module provides:

  • Targets — Ready-to-use build targets that perform specific CI/CD actions (e.g., approve Dependabot PRs, check for breaking changes).
  • Helpers — Shared logic interfaces that the targets consume (e.g., API surface diffing, GitHub PR context).
  • Models — Data types representing breaking changes, releases, and diffs.
  • Extensions — Injection options for wiring GitHub-specific values into workflows.

Installation

dotnet add package Invex.RepoUtils.Atom.Module

The package targets net10.0.

Quick Start

Add the desired interfaces to your Atom build definition:

[BuildDefinition]
[GenerateEntryPoint]
internal interface IBuild :
    IWorkflowBuildDefinition,
    IApproveDependabotPr,
    ICheckPrForBreakingChanges
{
    // Point the breaking-change check at your public API definition files.
    IEnumerable<RootedPath> ICheckPrForBreakingChanges.BreakingChangeFilesToCheck =>
        RootedFileSystem
            .Directory
            .GetFiles(RootedFileSystem.AtomRootDirectory / "tests", "*.verified.txt", SearchOption.AllDirectories)
            .Select(RootedFileSystem.CreateRootedPath);
}

What's in the box

Interface Kind Purpose
ICheckPrForBreakingChanges Target Detects public API breaking changes in a PR and reports the result as a GitHub check run.
IApproveDependabotPr Target Enables auto-merge on pull requests opened by dependabot[bot].
IWaitForCopilotReview Target Blocks until GitHub Copilot has finished reviewing a PR (e.g. before enabling auto-merge).
IApiSurfaceHelper Helper Diffs API definition files between two commits and classifies major/minor changes.
IPrBreakingChangeHelper Helper Orchestrates the full PR breaking-change check against the latest release baseline.
IGithubPrHelper Helper Surfaces the GitHub pull-request number parameter for PR-scoped targets.
ICopilotReviewHelper Helper Polls a pull request until GitHub Copilot has finished reviewing it, failing on timeout.
IDocFxHelper Helper Builds, serves and publishes DocFX documentation to the gh-pages branch.
INugetPackageUnlistHelper Helper Unlists superseded prereleases (or all prereleases below a stable version) via the NuGet API, with a build-report summary.
InjectionOptionsExtensions Extension Adds BuildOptions.Inject.Github.PullRequestNumber and BuildOptions.Inject.Github.DependabotEnableAutoMergePat.
Note

Packing, testing, NuGet publishing and uploading packages to a GitHub release are not targets of this module. Repositories define those targets themselves using Atom's own Invex.Atom.Module.Dotnet and Invex.Atom.Module.GitHubWorkflows helpers, as this repository's _atom/IBuild.cs does.

See also