This document describes the release process for lldap-cli.
lldap-cli uses automated release management with:
- Conventional Commits for structured commit messages
- git-cliff for automated changelog generation
- GitHub Actions for CI/CD pipeline
- npm OIDC Trusted Publishing for secure npm releases
All commits should follow the Conventional Commits specification:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description | Changelog Section |
|---|---|---|
feat |
New feature | Added |
fix |
Bug fix | Fixed |
docs |
Documentation only | Documentation |
perf |
Performance improvement | Performance |
refactor |
Code change (no feature/fix) | Changed |
style |
Formatting, missing semicolons | Styling |
test |
Adding/updating tests | Testing |
chore |
Maintenance tasks | Miscellaneous |
ci |
CI/CD changes | CI/CD |
feat: add user search functionality
fix: resolve password prompt on Windows
docs: update README with new options
ci: add automated changelog generation
chore(deps): bump commander to v14Ensure all changes are merged to main and CI is passing.
# Verify clean working directory
git checkout main
git pull origin main
git statusUpdate the version in package.json:
# Edit package.json version field
# Follow semantic versioning: MAJOR.MINOR.PATCHgit add package.json
git commit -m "chore(release): bump version to X.Y.Z"
git push origin maingit tag vX.Y.Z
git push origin vX.Y.ZWhen a tag is pushed, GitHub Actions automatically:
- Security Scan - Trivy vulnerability + TruffleHog secret scanning
- Lint - ESLint + TypeScript type checking
- Test - Run test suite
- Build - Compile TypeScript
- Release - Create GitHub release with:
- Auto-generated release notes from git-cliff
- Standalone binaries (linux-x64, linux-arm64, darwin-x64, darwin-arm64)
- Update Changelog - Regenerate CHANGELOG.md and commit to main
- Publish - Publish to npm using OIDC trusted publishing
This project uses npm's OIDC trusted publishing instead of classic tokens:
- No secrets required - Authentication uses GitHub's OIDC provider
- More secure - No long-lived tokens to manage or rotate
- Automatic - Works seamlessly with GitHub Actions
- npm package must have trusted publishing configured at npmjs.com
- GitHub Actions workflow needs
id-token: writepermission NODE_AUTH_TOKENmust NOT be set (blocks OIDC auth)
Follow Semantic Versioning:
- MAJOR (1.0.0 → 2.0.0): Breaking changes
- MINOR (1.0.0 → 1.1.0): New features, backwards compatible
- PATCH (1.0.0 → 1.0.1): Bug fixes, backwards compatible
The changelog is automatically generated from conventional commits using git-cliff:
- CHANGELOG.md - Full project history, auto-updated on release
- Release Notes - Per-release notes on GitHub release page
Configuration: cliff.toml
Ensure trusted publishing is configured on npmjs.com and NODE_AUTH_TOKEN is not set.
Verify commits follow conventional commit format. Non-conventional commits are filtered out.
Check that the tag follows the v* pattern (e.g., v1.2.3).