This document describes the release process for the peelman-kea Puppet module.
Releases are automated via GitHub Actions. When a version tag (e.g., v0.1.0) is pushed,
the CI pipeline runs all tests and, if successful, publishes the module to the
Puppet Forge.
The following secrets must be configured in the repository settings (Settings → Secrets and variables → Actions):
| Secret | Description |
|---|---|
FORGE_API_KEY |
Puppet Forge API key (generate at https://forge.puppet.com → Profile → API Keys) |
Use the provided rake tasks to bump the version in metadata.json:
# Patch release (0.0.4 → 0.0.5)
bundle exec rake module:bump:patch
# Minor release (0.0.4 → 0.1.0)
bundle exec rake module:bump:minor
# Major release (0.0.4 → 1.0.0)
bundle exec rake module:bump:majorAdd a new section for the release version:
## [0.1.0] - YYYY-MM-DD
### Added
- New feature description
### Changed
- Changed behavior description
### Fixed
- Bug fix descriptiongit add metadata.json CHANGELOG.md
git commit -m "Release v0.1.0"
git push
git tag v0.1.0
git push origin v0.1.0The tag push triggers the CI pipeline:
- Lint - Puppet-lint and metadata validation
- Syntax - Puppet syntax validation
- Unit Tests - RSpec tests with Puppet 8
- Acceptance Tests - Beaker tests on Debian 11/12, Ubuntu 22.04/24.04
- Release - Build and publish to Puppet Forge (only on tags)
Monitor progress at: https://github.com/peelman/puppet-kea/actions
After CI completes successfully, verify the release at: https://forge.puppet.com/modules/peelman/kea
The CI configuration is in .github/workflows/ci.yml.
| Event | Behavior |
|---|---|
Push to main |
Runs lint, syntax, unit, and acceptance tests |
Pull request to main |
Runs lint, syntax, unit, and acceptance tests |
Push tag v* |
Runs all tests, then publishes to Forge |
| Job | Environment |
|---|---|
| Lint | Ubuntu latest, Ruby 3.2 |
| Syntax | Ubuntu latest, Ruby 3.2, Puppet 8 |
| Unit | Ubuntu latest, Ruby 3.2, Puppet 8 |
| Acceptance | Docker containers: Debian 11/12, Ubuntu 22.04/24.04 |
Acceptance tests use litmusimage containers which have SSH and systemd pre-configured for faster test execution.
This project follows Semantic Versioning:
- MAJOR - Incompatible API changes
- MINOR - New functionality (backwards compatible)
- PATCH - Bug fixes (backwards compatible)
- Verify
FORGE_API_KEYsecret is set correctly - Ensure the API key hasn't expired (regenerate at Forge profile page)
- The environment variable must be
BLACKSMITH_FORGE_API_KEYin the workflow
- The version already exists on the Forge
- Deleted versions cannot be re-uploaded
- Bump to a new version number and try again
- Check Docker is available in the CI runner
- Verify the litmusimage containers are accessible
- Review Beaker logs in the CI output
Before pushing a release, run the full test suite locally:
# Install dependencies
bundle install
# Run linting
bundle exec rake lint
# Run unit tests
bundle exec rake spec
# Run acceptance tests (requires Docker)
bundle exec rake beaker:debian12This module uses puppet-blacksmith for version management and Forge publishing.
Available rake tasks:
bundle exec rake -T | grep moduleKey tasks:
module:bump:patch- Bump patch versionmodule:bump:minor- Bump minor versionmodule:bump:major- Bump major versionmodule:build- Build the module tarballmodule:push- Push to Puppet Forgemodule:release- Full release (bump, tag, push)