198
CONTRIBUTING.md
Archivo normal
198
CONTRIBUTING.md
Archivo normal
@@ -0,0 +1,198 @@
|
||||
# Contributing to Buque
|
||||
|
||||
Thank you for your interest in contributing to Buque! This document provides guidelines and instructions for contributing.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
This project adheres to a code of conduct. By participating, you are expected to uphold this code. Please be respectful and constructive in all interactions.
|
||||
|
||||
## How to Contribute
|
||||
|
||||
### Reporting Bugs
|
||||
|
||||
Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include:
|
||||
|
||||
- **Clear title and description**
|
||||
- **Steps to reproduce** the issue
|
||||
- **Expected behavior**
|
||||
- **Actual behavior**
|
||||
- **Environment details** (OS, Docker version, Go version)
|
||||
- **Log output** if applicable
|
||||
|
||||
### Suggesting Enhancements
|
||||
|
||||
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, include:
|
||||
|
||||
- **Clear title and description**
|
||||
- **Use case** for the enhancement
|
||||
- **Proposed solution** or implementation ideas
|
||||
- **Alternatives considered**
|
||||
|
||||
### Pull Requests
|
||||
|
||||
1. **Fork the repository** and create your branch from `main`
|
||||
2. **Make your changes** following the coding standards
|
||||
3. **Add tests** if applicable
|
||||
4. **Update documentation** if needed
|
||||
5. **Ensure tests pass** (`make test`)
|
||||
6. **Format your code** (`make fmt`)
|
||||
7. **Run linter** (`make vet`)
|
||||
8. **Commit your changes** with clear commit messages
|
||||
9. **Push to your fork** and submit a pull request
|
||||
|
||||
#### Pull Request Guidelines
|
||||
|
||||
- Use descriptive titles and descriptions
|
||||
- Reference related issues
|
||||
- Keep changes focused and atomic
|
||||
- Add tests for new functionality
|
||||
- Update README.md if needed
|
||||
- Follow the existing code style
|
||||
|
||||
## Development Setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Go 1.21 or higher
|
||||
- Docker 20.10 or higher
|
||||
- Make
|
||||
|
||||
### Setting Up Development Environment
|
||||
|
||||
```bash
|
||||
# Clone your fork
|
||||
git clone https://github.com/yourusername/buque.git
|
||||
cd buque
|
||||
|
||||
# Install dependencies
|
||||
make deps
|
||||
|
||||
# Build the project
|
||||
make build
|
||||
|
||||
# Run tests
|
||||
make test
|
||||
```
|
||||
|
||||
### Running Tests
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
make test
|
||||
|
||||
# Run specific tests
|
||||
go test ./internal/docker/...
|
||||
|
||||
# Run with coverage
|
||||
go test -cover ./...
|
||||
```
|
||||
|
||||
### Code Style
|
||||
|
||||
- Follow standard Go conventions and idioms
|
||||
- Use `gofmt` for formatting
|
||||
- Write clear, self-documenting code
|
||||
- Add comments for complex logic
|
||||
- Keep functions small and focused
|
||||
|
||||
### Commit Messages
|
||||
|
||||
Follow conventional commit format:
|
||||
|
||||
```
|
||||
type(scope): subject
|
||||
|
||||
body
|
||||
|
||||
footer
|
||||
```
|
||||
|
||||
Types:
|
||||
- `feat`: New feature
|
||||
- `fix`: Bug fix
|
||||
- `docs`: Documentation changes
|
||||
- `style`: Code style changes (formatting, etc.)
|
||||
- `refactor`: Code refactoring
|
||||
- `test`: Adding or updating tests
|
||||
- `chore`: Maintenance tasks
|
||||
|
||||
Example:
|
||||
```
|
||||
feat(proxy): add support for custom SSL certificates
|
||||
|
||||
Add ability to specify custom SSL certificates for nginx-proxy
|
||||
instead of relying only on Let's Encrypt.
|
||||
|
||||
Closes #123
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
buque/
|
||||
├── cmd/buque/ # Main application entry point
|
||||
├── internal/
|
||||
│ ├── cmd/ # CLI command implementations
|
||||
│ ├── config/ # Configuration management
|
||||
│ ├── docker/ # Docker operations
|
||||
│ ├── models/ # Data models
|
||||
│ ├── proxy/ # Nginx-proxy management
|
||||
│ └── stats/ # Statistics collection
|
||||
├── examples/ # Example configurations
|
||||
├── Makefile # Build automation
|
||||
├── go.mod # Go dependencies
|
||||
└── README.md # Project documentation
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
### Unit Tests
|
||||
|
||||
Place unit tests in `_test.go` files alongside the code they test.
|
||||
|
||||
```go
|
||||
func TestFunction(t *testing.T) {
|
||||
// Test implementation
|
||||
}
|
||||
```
|
||||
|
||||
### Integration Tests
|
||||
|
||||
Integration tests that require Docker should be tagged:
|
||||
|
||||
```go
|
||||
//go:build integration
|
||||
// +build integration
|
||||
|
||||
func TestDockerIntegration(t *testing.T) {
|
||||
// Test implementation
|
||||
}
|
||||
```
|
||||
|
||||
Run integration tests:
|
||||
```bash
|
||||
go test -tags=integration ./...
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- Update README.md for user-facing changes
|
||||
- Update code comments for API changes
|
||||
- Add examples for new features
|
||||
- Keep documentation clear and concise
|
||||
|
||||
## Release Process
|
||||
|
||||
Releases are managed by maintainers:
|
||||
|
||||
1. Update version in code
|
||||
2. Update CHANGELOG.md
|
||||
3. Create and push git tag
|
||||
4. Build and upload binaries
|
||||
5. Create GitHub release
|
||||
|
||||
## Questions?
|
||||
|
||||
Feel free to open an issue for questions or reach out to maintainers.
|
||||
|
||||
Thank you for contributing to Buque! 🚢
|
||||
Referencia en una nueva incidencia
Block a user