Skip to content

Conversation

@matt-goldman
Copy link
Owner

This pull request introduces significant improvements to the CI/CD pipeline, package metadata, and repository automation. Key changes include the addition of workflows for automated labeling, versioning, and publishing, enhancements to package metadata for NuGet compatibility, and updates to the .github configuration files for better release management.

CI/CD Pipeline Enhancements:

  • Added a ci.yml workflow to automate version generation based on pull request labels, validate label configurations, and publish packages to NuGet. It includes logic to handle preview and release labels for pre-release and stable versions (.github/workflows/ci.yml).
  • Introduced a reusable workflow (reusable-publish.yml) for building and publishing .NET packages, enabling consistent package publishing across projects (.github/workflows/reusable-publish.yml).

Repository Automation:

  • Configured a pr-labels.yml workflow to automatically add a preview label to new pull requests and apply content-based labels using labeler.yml (.github/workflows/pr-labels.yml).
  • Updated labeler.yml to define granular labels for different project areas and dependency updates (.github/labeler.yml).

Release Management:

  • Added a release.yml file to define changelog categories and exclude specific labels/authors from release notes, improving release automation and clarity (.github/release.yml).
  • Updated the pull request template to guide contributors on labeling for release types and notes (.github/pull_request_template.md).

Package Metadata Improvements:

  • Enhanced .csproj files across projects to include PackageIcon, ensuring NuGet packages display a custom icon. The icon file is packaged with the project (src/Blake.BuildTools/Blake.BuildTools.csproj, src/Blake.CLI/Blake.CLI.csproj, src/Blake.MarkdownParser/Blake.MarkdownParser.csproj, src/Blake.Types/Blake.Types.csproj). [1] [2] [3] [4]
  • Adjusted package references to use pre-release versioning (*-*) for better dependency management in release builds (src/Blake.BuildTools/Blake.BuildTools.csproj, src/Blake.CLI/Blake.CLI.csproj). [1] [2]

@matt-goldman matt-goldman requested a review from Copilot July 25, 2025 08:35

This comment was marked as outdated.

@matt-goldman matt-goldman requested a review from Copilot July 25, 2025 08:37

This comment was marked as outdated.

@matt-goldman matt-goldman requested a review from Copilot July 25, 2025 08:39
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request introduces comprehensive CI/CD automation for the Blake project, including automated versioning, package publishing, and release management. The changes enable automatic generation of NuGet packages with proper metadata and streamlined release workflows.

Key changes:

  • Added CI/CD workflows for automated versioning based on PR labels and NuGet package publishing
  • Enhanced package metadata across all projects with icons, license files, and improved dependency versioning
  • Implemented repository automation for PR labeling and release note generation

Reviewed Changes

Copilot reviewed 10 out of 11 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
.github/workflows/ci.yml Main CI workflow for version generation and package publishing
.github/workflows/reusable-publish.yml Reusable workflow for building and publishing NuGet packages
.github/workflows/pr-labels.yml Automated PR labeling workflow
.github/release.yml Release notes configuration
.github/pull_request_template.md PR template with labeling guidance
.github/labeler.yml Labeler configuration for content-based labels
src/Blake.Types/Blake.Types.csproj Added package icon and extra whitespace
src/Blake.MarkdownParser/Blake.MarkdownParser.csproj Added package metadata including icon, license, and README
src/Blake.CLI/Blake.CLI.csproj Added package icon and updated dependency versioning
src/Blake.BuildTools/Blake.BuildTools.csproj Added package icon and updated dependency versioning
Comments suppressed due to low confidence (1)

path: src/Blake.CLI/Blake.CLI.csproj
steps:
- name: Publish
uses: ./.github/workflows/reusable-publish.yml
Copy link

Copilot AI Jul 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow is attempting to call a reusable workflow using a local path, but this syntax is incorrect. Reusable workflows should be called using the 'uses' keyword with the repository and workflow path format, like 'uses: ./.github/workflows/reusable-publish.yml@main' or by moving this to a separate job that calls the reusable workflow properly.

Suggested change
uses: ./.github/workflows/reusable-publish.yml
uses: ./.github/workflows/reusable-publish.yml@main

Copilot uses AI. Check for mistakes.
@matt-goldman
Copy link
Owner Author

Note that labelling action fails because repo is private, so action can't access the repo. Will leave this until making repo public.

- Added logging in Build-LocalPackages.ps1 to indicate
  which project is being packed and ensured each project
  is processed individually with the correct version and
  output path.

- Refactored SiteGenerator.cs to improve markdown file
  handling by moving the pipeline instantiation inside
  the loop for each markdown page, ensuring statelessness
  and deterministic behavior. Added comments for clarity.
@matt-goldman matt-goldman merged commit f3fb314 into main Aug 1, 2025
1 check failed
@matt-goldman matt-goldman deleted the automation branch August 1, 2025 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants