This document outlines our release strategy for packages in this repository.
- We use Nx Release to manage our releases
- All packages are versioned independently
- We follow Semantic Versioning
- We use Conventional Commits to automatically determine version numbers
- nxlsclient - Go library for communicating with the Nx Language Server
- lazynx - Terminal UI application for managing Nx workspaces
Releases are manually trigged but automatically executed using a github action pipeline:
- A GitHub Action checks for new changes in the projects
- The action runs tests and linters to ensure quality
- If tests pass,
nx releaseis executed to:- Determine the next version based on commit messages
- Update version references
- Generate a changelog
- Create Git tags with the format
{projectName}@v{version} - Create a GitHub release
- For the nxlsclient library, the module is published to pkg.go.dev
- GitHub Releases: See the Releases page
- Changelogs: Each project maintains its own CHANGELOG.md file
Tags follow the format: {projectName}@v{version}
Examples:
nxlsclient@v0.1.0lazynx@v0.2.3
The nxlsclient library can be imported as:
import "github.com/lazyengs/lazynx/pkg/nxlsclient"You can use a specific version with:
go get github.com/lazyengs/lazynx/pkg/nxlsclient@v0.1.0If you encounter issues with the release process:
- Check the GitHub Actions logs for errors
- Ensure all tests are passing
- Verify that your commit messages follow the Conventional Commits format
- Check that your go.mod file has the correct module path