Skip to content

feat: Add CI/CD pipeline for automated NuGet publishing with Release Drafter - #9

Merged
steingran merged 1 commit into
mainfrom
5-nuget-publishing
Nov 7, 2025
Merged

feat: Add CI/CD pipeline for automated NuGet publishing with Release Drafter#9
steingran merged 1 commit into
mainfrom
5-nuget-publishing

Conversation

@steingran

Copy link
Copy Markdown
Owner

Implement comprehensive CI/CD infrastructure for automated NuGet package publishing and release management to prepare MultiLock for production deployment.

NuGet Publishing Workflow

  • Add automated NuGet publishing workflow with manual and tag-based triggers
  • Configure package validation using dotnet-validate tool
  • Implement selective publishing to exclude core MultiLock package (embedded in providers)
  • Add dry-run mode for testing without actual publication
  • Include symbol package (.snupkg) publishing for debugging support
  • Integrate with Release Drafter for automatic changelog updates

Package Configuration & Standardization

  • Centralize package metadata in Directory.Build.props
  • Implement MinVer for semantic versioning from Git tags (v-prefix, 1.0 minimum)
  • Enable SourceLink for source code debugging support
  • Configure deterministic builds for reproducibility
  • Add XML documentation generation for all packages
  • Standardize package metadata (authors, license, repository, tags)
  • Optimize package logo to NuGet standards (128x128px, 27.65 KB)

Release Automation

  • Add Release Drafter for PR-based automatic changelog generation
  • Configure 9 changelog categories (Breaking Changes, Features, Bug Fixes, etc.)
  • Implement auto-labeling based on files, branches, and PR titles
  • Create comprehensive label definitions (215 labels across all categories)
  • Add PR template to guide contributors on proper labeling

Project Structure Improvements

  • Clean up all .csproj files by removing redundant properties
  • Standardize provider package configuration across all 8 providers
  • Update .gitignore to exclude build artifacts and temporary files

Documentation

  • Add comprehensive Release Drafter usage guide
  • Document GitHub Actions workflows and their purposes
  • Create label setup automation script

This implementation provides a production-ready CI/CD pipeline that ensures consistent versioning, automated changelog generation, and reliable package publishing to NuGet.org for all 8 MultiLock provider packages.

Copilot AI review requested due to automatic review settings November 6, 2025 22:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This PR consolidates build configuration and establishes a comprehensive NuGet package publishing and release management infrastructure for the MultiLock project. The changes centralize common build properties, update package metadata, and introduce automated changelog generation using Release Drafter.

Key changes:

  • Centralized build configuration in Directory.Build.props with common properties for all projects
  • Updated provider package references from MultiLock.Net.dll to MultiLock.dll
  • Introduced Release Drafter workflow for automated changelog generation
  • Added comprehensive NuGet publishing workflow with validation and dry-run support

Reviewed Changes

Copilot reviewed 19 out of 21 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/Directory.Build.props Centralized build configuration including versioning, package metadata, SourceLink, and deterministic builds
src/MultiLock/MultiLock.csproj Simplified project file by consolidating common properties to Directory.Build.props
src/Providers/*/MultiLock.*.csproj Consolidated provider project files and corrected asset references from MultiLock.Net.dll to MultiLock.dll
.github/workflows/release-drafter.yml New workflow for automated draft release creation and changelog generation
.github/workflows/publish-nuget.yml Comprehensive NuGet publishing workflow with testing, validation, and release creation
.github/release-drafter.yml Configuration for Release Drafter with PR categorization and version resolution
.github/labels.yml Label definitions for PR categorization and changelog generation
.github/scripts/setup-labels.ps1 PowerShell script to automate GitHub label creation
CHANGELOG.md New changelog file with initial structure and guidelines
docs/RELEASE_DRAFTER_GUIDE.md Comprehensive guide for using Release Drafter workflow
.github/workflows/README.md Documentation for GitHub Actions workflows
.github/PULL_REQUEST_TEMPLATE.md PR template with label guidelines
logo.png Project logo for NuGet packages
.gitignore Added .excluded/ directory to gitignore

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/Directory.Build.props
Comment thread src/Directory.Build.props
Comment thread .github/workflows/publish-nuget.yml Outdated
Comment thread docs/RELEASE_DRAFTER_GUIDE.md Outdated
…Drafter

Implement comprehensive CI/CD infrastructure for automated NuGet package publishing and release management to prepare MultiLock for production deployment.

### NuGet Publishing Workflow
- Add automated NuGet publishing workflow with manual and tag-based triggers
- Configure package validation using dotnet-validate tool
- Implement selective publishing to exclude core MultiLock package (embedded in providers)
- Add dry-run mode for testing without actual publication
- Include symbol package (.snupkg) publishing for debugging support
- Integrate with Release Drafter for automatic changelog updates

### Package Configuration & Standardization
- Centralize package metadata in Directory.Build.props
- Implement MinVer for semantic versioning from Git tags (v-prefix, 1.0 minimum)
- Enable SourceLink for source code debugging support
- Configure deterministic builds for reproducibility
- Add XML documentation generation for all packages
- Standardize package metadata (authors, license, repository, tags)
- Optimize package logo to NuGet standards (128x128px, 27.65 KB)

### Release Automation
- Add Release Drafter for PR-based automatic changelog generation
- Configure 9 changelog categories (Breaking Changes, Features, Bug Fixes, etc.)
- Implement auto-labeling based on files, branches, and PR titles
- Create comprehensive label definitions (215 labels across all categories)
- Add PR template to guide contributors on proper labeling

### Project Structure Improvements
- Clean up all .csproj files by removing redundant properties
- Standardize provider package configuration across all 8 providers
- Update .gitignore to exclude build artifacts and temporary files

### Documentation
- Add comprehensive Release Drafter usage guide
- Document GitHub Actions workflows and their purposes
- Create label setup automation script

This implementation provides a production-ready CI/CD pipeline that ensures consistent versioning, automated changelog generation, and reliable package publishing to NuGet.org for all 8 MultiLock provider packages.
@steingran
steingran merged commit ef60ec9 into main Nov 7, 2025
2 of 3 checks passed
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