Commit 9ab4f79
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]>1 parent 602dd2f commit 9ab4f79
File tree
8 files changed
+470
-3
lines changed- .github/workflows
- scripts
8 files changed
+470
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | | - | |
48 | | - | |
| 47 | + | |
| 48 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
0 commit comments