- Go 1.18 or higher
- Git
.
├── cmd/ # Command definitions
├── docs/ # Documentation
├── pkg/ # Source code
├── main.go # Entry point
├── Makefile # Build scripts
└── README.md # This file-
Clone the repository:
git clone https://github.com/inercia/MCPShell.git cd mcpshell
-
Build the application:
make buildThis will create a binary in the
builddirectory. -
Alternatively, install the application:
make install
This project uses GitHub Actions for continuous integration:
- Pull Request Testing: Every pull request triggers an automated workflow that:
- Runs all unit tests
- Performs race condition detection
- Checks code formatting
- Runs linters to ensure code quality
These checks help maintain code quality and prevent regressions as the project evolves.
This project uses GoReleaser and GitHub Actions to automatically build and release binaries for multiple platforms. When a tag is pushed, the workflow:
- Runs all tests
- Builds binaries for multiple platforms (Linux, macOS, Windows) and architectures (amd64, arm64)
- Creates archives with documentation and examples
- Generates checksums
- Creates a GitHub release with all artifacts
- Generates a changelog from commit messages
To create a new release:
# Create and tag a new release (updates docs and creates tag)
make release
# Push the tag to trigger the automated release workflow
git push origin main v1.2.3The release will appear on the GitHub Releases page with binaries for each supported platform.
Before creating an official release:
# Validate the GoReleaser configuration
make release-test
# Build a snapshot release locally (no tag required)
make release-snapshotFor detailed information about the release process, see the Release Process Guide.
Run make help to see all available targets. Key targets include:
make build: Build the applicationmake clean: Remove build artifactsmake test: Run unit testsmake test-e2e: Run end-to-end testsmake run: Run the applicationmake install: Install the applicationmake lint: Run lintingmake format: Format Go codemake validate-examples: Validate all YAML configsmake release: Create a new release (tag + docs update)make release-test: Validate GoReleaser configurationmake release-snapshot: Build snapshot release locallymake help: Show all available targets