Thank you for your interest in contributing to JD.MSBuild.Containers! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to maintain a respectful and inclusive environment for all contributors.
Before creating bug reports, please check the existing issues to avoid duplicates. When creating a bug report, include:
- Clear title and description
- Steps to reproduce the issue
- Expected vs actual behavior
- Environment details:
- OS (Windows/Linux/macOS)
- .NET SDK version (
dotnet --info) - JD.MSBuild.Containers version
- Docker version (
docker --version)
- Relevant logs with
DockerLogVerbosityset todetailed - Sample project if possible (minimal reproduction)
- Generated Dockerfile if applicable
Feature suggestions are welcome! Please:
- Check existing feature requests first
- Describe the use case clearly
- Explain why this feature would be useful
- Provide examples of how it would work
- Fork the repository and create a branch from
main - Follow existing code style and patterns
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass before submitting
- Write clear commit messages
- .NET SDK 8.0 or later
- Visual Studio 2022, VS Code, or JetBrains Rider
- Docker Desktop or Docker Engine
- Git
# Clone the repository
git clone https://github.com/jerrettdavis/JD.MSBuild.Containers.git
cd JD.MSBuild.Containers
# Restore dependencies
dotnet restore JD.MSBuild.Containers.sln
# Build the solution
dotnet build JD.MSBuild.Containers.sln# Run all tests
dotnet test JD.MSBuild.Containers.sln
# Run tests with coverage
dotnet test JD.MSBuild.Containers.sln --collect:"XPlat Code Coverage"src/JD.MSBuild.Containers/- Main NuGet package with props/targetssrc/JD.MSBuild.Containers.Tasks/- MSBuild task implementationstests/JD.MSBuild.Containers.Tests/- Unit tests (TinyBDD/Xunit)
- Follow Clean Code, DRY, and SOLID principles
- Write self-documenting code with clear names
- Add XML documentation for all public APIs
- Keep methods small and focused
- Use meaningful variable names
- Use TinyBDD for BDD-style tests
- Follow Given/When/Then structure
- Test both success and failure scenarios
- Use descriptive test names with
[Scenario]attribute - Ensure tests are isolated and repeatable
- Update README.md for user-facing changes
- Add XML comments for all public APIs (docfx compatible)
- Include examples in documentation
- Update IMPLEMENTATION_SUMMARY.md for architectural changes
feature/description- New featuresfix/description- Bug fixesdocs/description- Documentation updatesrefactor/description- Code refactoring
Follow conventional commits format:
type(scope): short description
Longer explanation if needed.
Fixes #123
Types: feat, fix, docs, style, refactor, test, chore
- Update your fork with the latest main branch
- Create a feature branch from main
- Make your changes with clear commits
- Run all tests and ensure they pass
- Update documentation as needed
- Push to your fork and create a pull request
- Address review feedback promptly
All submissions require review. We use GitHub pull requests for this purpose. The review process checks:
- Code quality and style consistency
- Test coverage for new functionality
- Documentation completeness
- Build status (CI must pass)
- Security (CodeQL analysis)
Releases are automated via GitHub Actions:
- Merge to
maintriggers the release workflow - GitVersion calculates the version number
- Build and test run on all target frameworks
- NuGet packages are created and published
- GitHub Release is created with release notes
If you have questions about contributing:
- Open an issue for discussion
- Check existing issues and pull requests
- Review the documentation in the repository
Thank you for contributing to JD.MSBuild.Containers!