You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add automated cross-platform binary builds and releases (#11)
* feat: add automated cross-platform binary builds and releases
Added GitHub Actions workflows for:
- Automated releases on version tags
- Cross-platform binary builds (Linux, macOS, Windows)
- Artifact uploads for testing
- Local build script for development
Supports 6 platforms: Linux/macOS/Windows x amd64/arm64
Co-authored-by: f0ssel <[email protected]>
* remove Windows builds from release automation
Removed Windows platform support from:
- GitHub Actions release workflow
- GitHub Actions build workflow
- Local build script
- Documentation
Now supports 4 platforms:
- Linux: amd64, arm64
- macOS: amd64 (Intel), arm64 (Apple Silicon)
All builds create .tar.gz archives for consistency.
Co-authored-by: f0ssel <[email protected]>
* add Makefile with build, clean, test targets
Added comprehensive Makefile with targets:
- make build: Build for current platform
- make build-all: Cross-platform builds
- make test: Run tests
- make clean: Clean artifacts
- make install/uninstall: System installation
- make help: Show all targets
Includes version injection, coverage reports, and development tools.
Co-authored-by: f0ssel <[email protected]>
* use Makefile targets in GitHub Actions workflows
Updated workflows to use Makefile targets for consistency:
## CI Workflow
- Use 'make tidy' instead of 'go mod download' + 'go mod verify'
- Use 'make test' instead of 'go test -v -race ./...'
- Use 'make build' instead of 'go build -v ./...'
## Build & Release Workflows
- Use 'make tidy' for dependency management
- Keep direct Go commands for cross-compilation (needed for matrix builds)
- Maintain parallel builds for different platforms
## New Makefile Build Workflow
- Added weekly workflow that demonstrates 'make build-all'
- Builds all platforms in single job using Makefile
- Manual trigger available for testing
- Uploads all binaries as single artifact
This ensures consistency between local development (using Makefile)
and CI/CD (using same Makefile targets where appropriate).
Tested: make tidy && make test && make build works correctly.
Co-authored-by: f0ssel <[email protected]>
* simplify Makefile by removing install, uninstall, tidy, dev-setup, help targets
Removed targets that are not core to build/test workflow:
- install/uninstall: System installation should be manual
- tidy: Direct go mod commands are clearer in workflows
- dev-setup: Too opinionated for a build tool
- help: Makefile is simple enough without help
Remaining focused targets:
- build: Build for current platform
- build-all: Cross-platform builds
- test: Run tests with race detection
- test-coverage: Generate coverage reports
- clean: Clean build artifacts
- fmt: Format code
- lint: Lint code
Updated GitHub Actions workflows to use direct Go commands
for dependency management instead of removed make tidy.
Updated RELEASES.md to reflect simplified Makefile.
Tested: make build && make test && make clean works correctly.
Co-authored-by: f0ssel <[email protected]>
* remove golangci-lint fallback from lint target
Simplified the lint target to just run golangci-lint directly
instead of falling back to go vet when golangci-lint is not available.
Before:
- Complex shell logic to check if golangci-lint exists
- Fallback to go vet if not found
- Confusing behavior (different tools run depending on environment)
After:
- Simple: golangci-lint run
- Clear error if golangci-lint not installed
- Consistent behavior across environments
Updated RELEASES.md to document the golangci-lint requirement.
Tested: make lint fails cleanly with clear error when golangci-lint missing.
Co-authored-by: f0ssel <[email protected]>
* remove redundant makefile-build workflow
Removed .github/workflows/makefile-build.yml as it duplicated
the functionality of the existing build.yml workflow.
The makefile-build workflow was added to demonstrate make build-all
but it created unnecessary duplication:
- build.yml: Builds on push/PR with matrix for parallel builds
- makefile-build.yml: Weekly + manual trigger using make build-all
The existing build.yml workflow already provides:
- Cross-platform builds for all supported platforms
- Artifact uploads for testing
- Triggered on every push/PR for immediate feedback
Users can run 'make build-all' locally if they want to build
all platforms in a single command.
Now we have a clean, focused workflow structure:
- ci.yml: Testing and verification
- build.yml: Cross-platform binary builds
- release.yml: Automated releases on tags
Co-authored-by: f0ssel <[email protected]>
* streamline RELEASES.md to focus only on release process
Removed all development-related content from RELEASES.md:
## Removed Sections
- Local Development (Makefile usage, build scripts)
- Development Builds (GitHub Actions artifacts)
- Manual cross-compilation examples
- Build troubleshooting
- Version injection examples
## Kept Release-Focused Content
- Automated release process (git tag workflow)
- Supported platforms table
- Release process for maintainers
- Version naming conventions
- Installation from GitHub releases
- Release troubleshooting
The file now focuses exclusively on:
1. How to cut a release (git tag v1.0.0)
2. What gets built and released
3. How users install releases
4. Troubleshooting release issues
Development information belongs in README.md or separate docs,
not in a release-focused document.
Co-authored-by: f0ssel <[email protected]>
---------
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: f0ssel <[email protected]>
0 commit comments