This document describes the release process for terraform-provider-wallix-bastion.
For a standard patch release:
# 1. Prepare the release
make release-patch
# 2. Push any remaining changes
git push origin develop
# 3. Create GitHub release from the new tag- Clean git working directory
- On
developbranch (recommended) - Go 1.23+ installed
- golangci-lint installed
- Git configured with proper user information
For bug fixes and small improvements:
make release-patch
# or
./scripts/prepare-release.sh --patchFor new features (backward compatible):
make release-minor
# or
./scripts/prepare-release.sh --minorFor breaking changes:
make release-major
# or
./scripts/prepare-release.sh --majorFor specific version numbers:
./scripts/prepare-release.sh --version v1.0.0-
Validates Environment
- Checks git working directory is clean
- Ensures you're on correct branch
- Verifies prerequisites
-
Updates Dependencies
- Updates Go module dependencies
- Runs
go mod tidyandgo mod verify
-
Quality Checks
- Runs golangci-lint
- Executes unit tests
- Builds the provider to ensure compilation
-
Creates Tag
- Determines next version number
- Creates annotated git tag
- Optionally pushes tag to remote
-
Generates Release Notes
- Shows commits since last release
- Lists changed files
- Provides template for GitHub release
After running the release script, you may need to:
-
Update CHANGELOG.md
- Finalize release notes
- Set correct release date
- Commit changes if needed
-
Create GitHub Release
- Go to GitHub releases page
- Create release from the new tag
- Use generated release notes as template
- Attach any additional assets
-
Verify Release
- Check that GitHub Actions workflows complete
- Verify release artifacts are created
- Test the released version
For urgent fixes that need to skip some checks:
./scripts/prepare-release.sh --patch --skip-testsIf you need to undo a release:
# Delete local tag
git tag -d v0.14.8
# Delete remote tag (if already pushed)
git push origin --delete v0.14.8
# Reset any committed changes
git reset --hard HEAD~1Regular maintenance without creating a release:
# Run all maintenance tasks
make maintenance
# Individual tasks
make update-deps # Update dependencies only
make dev-check # Run linting, tests, and build
./scripts/maintenance.sh test # Run tests only
./scripts/maintenance.sh clean # Clean build artifactsFollow semantic versioning:
- MAJOR: Breaking changes, incompatible API changes
- MINOR: New features, backward compatible
- PATCH: Bug fixes, backward compatible changes
Examples:
v0.14.7→v0.14.8(patch: bug fix)v0.14.7→v0.15.0(minor: new feature)v0.14.7→v1.0.0(major: breaking change)
git status
git add .
git commit -m "chore: prepare for release"git checkout develop
git pull origin developmake dev-check # Run individual checks
./scripts/maintenance.sh test # Run tests onlygit tag -d v0.14.8 # Delete local tag
./scripts/prepare-release.sh --version v0.14.9 # Use next versiongo mod tidy
go clean -modcache
go mod downloadThe release process integrates with GitHub Actions:
- On tag push: Triggers release workflow
- Release workflow: Builds artifacts, runs tests, creates GitHub release
- Documentation: Updates provider registry documentation
Check .github/workflows/ for workflow definitions.
- Always test releases in a staging environment first
- Keep CHANGELOG.md up to date throughout development
- Use feature branches for new functionality
- Tag releases promptly after merging to main
- Monitor release workflows for failures
- Communicate breaking changes clearly in release notes