Skip to content

Commit ef60ec9

Browse files
committed
feat: Add CI/CD pipeline for automated NuGet publishing with Release 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.
1 parent 7be4d05 commit ef60ec9

21 files changed

Lines changed: 2014 additions & 192 deletions

File tree

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
## Description
2+
3+
<!-- Provide a brief description of the changes in this PR -->
4+
5+
## Type of Change
6+
7+
<!-- Please check the type of change your PR introduces -->
8+
9+
- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
10+
- [ ] 🚀 New feature (non-breaking change which adds functionality)
11+
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
12+
- [ ] 📚 Documentation update
13+
- [ ] 🧪 Test improvements
14+
- [ ] ⚡ Performance improvement
15+
- [ ] ♻️ Code refactoring
16+
- [ ] 🔧 Maintenance/chore
17+
18+
## Related Issue
19+
20+
<!-- Link to the issue this PR addresses, if applicable -->
21+
22+
Fixes #(issue number)
23+
24+
## Changes Made
25+
26+
<!-- List the specific changes made in this PR -->
27+
28+
-
29+
-
30+
-
31+
32+
## Testing
33+
34+
<!-- Describe the tests you ran to verify your changes -->
35+
36+
- [ ] Unit tests pass locally
37+
- [ ] Integration tests pass locally
38+
- [ ] Added new tests for new functionality
39+
- [ ] All existing tests still pass
40+
41+
## Checklist
42+
43+
<!-- Please check all that apply -->
44+
45+
- [ ] My code follows the code style of this project
46+
- [ ] I have performed a self-review of my own code
47+
- [ ] I have commented my code, particularly in hard-to-understand areas
48+
- [ ] I have made corresponding changes to the documentation
49+
- [ ] My changes generate no new warnings
50+
- [ ] I have added tests that prove my fix is effective or that my feature works
51+
- [ ] New and existing unit tests pass locally with my changes
52+
- [ ] Any dependent changes have been merged and published
53+
54+
## Labels
55+
56+
<!--
57+
Please add appropriate labels to this PR to help with automatic changelog generation:
58+
59+
🚀 Features:
60+
- feature, enhancement, feat
61+
62+
🐛 Bug Fixes:
63+
- bug, fix, bugfix
64+
65+
📚 Documentation:
66+
- documentation, docs
67+
68+
🧪 Tests:
69+
- test, testing
70+
71+
⚡ Performance:
72+
- performance, perf
73+
74+
🔧 Maintenance:
75+
- chore, maintenance
76+
77+
📦 Dependencies:
78+
- dependencies, deps
79+
80+
🔒 Security:
81+
- security
82+
83+
♻️ Refactoring:
84+
- refactor, refactoring
85+
86+
💥 Breaking Changes:
87+
- breaking, major, breaking-change
88+
89+
Labels help automatically categorize changes in release notes!
90+
-->
91+
92+
## Additional Notes
93+
94+
<!-- Any additional information that reviewers should know -->
95+

.github/labels.yml

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,215 @@
1+
# GitHub Labels Configuration
2+
# This file defines the labels used for automatic changelog generation
3+
# To apply these labels to your repository, you can use:
4+
# - GitHub CLI: gh label create <name> --color <color> --description <description>
5+
# - GitHub Settings UI: Settings > Labels
6+
# - github-label-sync tool: https://github.com/Financial-Times/github-label-sync
7+
8+
# Type Labels - Used for categorizing changes in changelog
9+
10+
- name: feature
11+
color: '0e8a16'
12+
description: 'New feature or enhancement'
13+
14+
- name: enhancement
15+
color: '0e8a16'
16+
description: 'Enhancement to existing functionality'
17+
18+
- name: feat
19+
color: '0e8a16'
20+
description: 'New feature (conventional commits style)'
21+
22+
- name: bug
23+
color: 'd73a4a'
24+
description: 'Something is not working'
25+
26+
- name: fix
27+
color: 'd73a4a'
28+
description: 'Bug fix'
29+
30+
- name: bugfix
31+
color: 'd73a4a'
32+
description: 'Bug fix'
33+
34+
- name: documentation
35+
color: '0075ca'
36+
description: 'Improvements or additions to documentation'
37+
38+
- name: docs
39+
color: '0075ca'
40+
description: 'Documentation changes'
41+
42+
- name: test
43+
color: 'fbca04'
44+
description: 'Test improvements or additions'
45+
46+
- name: testing
47+
color: 'fbca04'
48+
description: 'Testing related changes'
49+
50+
- name: performance
51+
color: 'ff6b6b'
52+
description: 'Performance improvements'
53+
54+
- name: perf
55+
color: 'ff6b6b'
56+
description: 'Performance optimization'
57+
58+
- name: chore
59+
color: 'fef2c0'
60+
description: 'Maintenance tasks and chores'
61+
62+
- name: maintenance
63+
color: 'fef2c0'
64+
description: 'Repository maintenance'
65+
66+
- name: dependencies
67+
color: '0366d6'
68+
description: 'Dependency updates'
69+
70+
- name: deps
71+
color: '0366d6'
72+
description: 'Dependency changes'
73+
74+
- name: security
75+
color: 'ee0701'
76+
description: 'Security related changes'
77+
78+
- name: refactor
79+
color: 'fbca04'
80+
description: 'Code refactoring'
81+
82+
- name: refactoring
83+
color: 'fbca04'
84+
description: 'Code restructuring'
85+
86+
# Version Impact Labels - Used for semantic versioning
87+
88+
- name: major
89+
color: 'b60205'
90+
description: 'Breaking changes - major version bump'
91+
92+
- name: breaking
93+
color: 'b60205'
94+
description: 'Breaking changes'
95+
96+
- name: breaking-change
97+
color: 'b60205'
98+
description: 'Introduces breaking changes'
99+
100+
- name: minor
101+
color: '0e8a16'
102+
description: 'New features - minor version bump'
103+
104+
- name: patch
105+
color: 'c5def5'
106+
description: 'Bug fixes and patches - patch version bump'
107+
108+
# Workflow Labels
109+
110+
- name: skip-changelog
111+
color: 'ffffff'
112+
description: 'Do not include in changelog'
113+
114+
- name: no-changelog
115+
color: 'ffffff'
116+
description: 'Exclude from changelog'
117+
118+
- name: duplicate
119+
color: 'cfd3d7'
120+
description: 'This issue or pull request already exists'
121+
122+
- name: invalid
123+
color: 'e4e669'
124+
description: 'This does not seem right'
125+
126+
- name: wontfix
127+
color: 'ffffff'
128+
description: 'This will not be worked on'
129+
130+
# Status Labels
131+
132+
- name: good first issue
133+
color: '7057ff'
134+
description: 'Good for newcomers'
135+
136+
- name: help wanted
137+
color: '008672'
138+
description: 'Extra attention is needed'
139+
140+
- name: question
141+
color: 'd876e3'
142+
description: 'Further information is requested'
143+
144+
- name: wip
145+
color: 'fbca04'
146+
description: 'Work in progress'
147+
148+
- name: ready for review
149+
color: '0e8a16'
150+
description: 'Ready for code review'
151+
152+
- name: needs review
153+
color: 'fbca04'
154+
description: 'Awaiting review'
155+
156+
- name: approved
157+
color: '0e8a16'
158+
description: 'Approved and ready to merge'
159+
160+
- name: blocked
161+
color: 'd93f0b'
162+
description: 'Blocked by other work'
163+
164+
# Provider-Specific Labels
165+
166+
- name: provider/azure
167+
color: '0078d4'
168+
description: 'Azure Blob Storage provider'
169+
170+
- name: provider/consul
171+
color: 'ca2171'
172+
description: 'Consul provider'
173+
174+
- name: provider/filesystem
175+
color: '5319e7'
176+
description: 'File System provider'
177+
178+
- name: provider/inmemory
179+
color: 'bfdadc'
180+
description: 'In-Memory provider'
181+
182+
- name: provider/postgresql
183+
color: '336791'
184+
description: 'PostgreSQL provider'
185+
186+
- name: provider/redis
187+
color: 'dc382d'
188+
description: 'Redis provider'
189+
190+
- name: provider/sqlserver
191+
color: 'cc2927'
192+
description: 'SQL Server provider'
193+
194+
- name: provider/zookeeper
195+
color: 'ff6b00'
196+
description: 'ZooKeeper provider'
197+
198+
# Priority Labels
199+
200+
- name: priority/critical
201+
color: 'b60205'
202+
description: 'Critical priority'
203+
204+
- name: priority/high
205+
color: 'd93f0b'
206+
description: 'High priority'
207+
208+
- name: priority/medium
209+
color: 'fbca04'
210+
description: 'Medium priority'
211+
212+
- name: priority/low
213+
color: 'c5def5'
214+
description: 'Low priority'
215+

0 commit comments

Comments
 (0)