Contributing
Development Setup
Prerequisites
- Go 1.23 or later
make- An RPM-based Linux system (for running
yum-bundleitself; tests can run anywhere)
Clone and Build
git clone https://github.com/yum-bundle/yum-bundle.git
cd yum-bundle
make build
Run Tests
make test
Tests use dependency-injected mocks and do not require root or an RPM system.
Linting
make lint
Install Pre-commit Hook
make install-hooks
This installs a git pre-commit hook that runs golangci-lint --fix, go build, and golangci-lint on staged Go files.
Project Structure
yum-bundle/
├── cmd/yum-bundle/ # Binary entry point
├── internal/
│ ├── commands/ # CLI commands (cobra)
│ ├── yum/ # YumManager: packages, repos, keys, copr, epel, modules
│ ├── yumfile/ # Yumfile parser
│ └── testutil/ # Mock executor for tests
├── docs/ # Jekyll documentation site
├── Makefile
├── VERSION # Major.minor version (e.g. "0.1")
└── .nfpm.yaml # RPM packaging config
Release Process
Releases are automated via GitHub Actions:
- Bump
VERSIONfile (e.g.,0.1→0.2) - Commit and push to
main - The release workflow auto-calculates the next patch version, builds RPM packages for all architectures, and publishes a GitHub release
Submitting Changes
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Ensure
make test lint buildpasses - Open a pull request
Reporting Issues
Please report bugs and feature requests at GitHub Issues.