modanize releaser workflow - #26
Conversation
Replace legacy Makefile-based workflow with tagpr + GoReleaser for automated releases. Add Taskfile for development tasks. - Add .goreleaser.yaml, Taskfile.yaml, .tagpr - Add .github/workflows/tagpr.yaml - Remove Makefile and .github/workflows/release.yaml - Update test workflow to use go test directly - Refactor version management to package-level variable 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Pull Request Overview
This PR modernizes the build and release infrastructure by migrating from Makefile to Taskfile and GoReleaser, while also introducing a centralized version management system using tagpr. The version string is moved from a build-time linker flag to a source-controlled constant in version.go.
- Replaces Makefile with Taskfile.yaml for development tasks
- Adds GoReleaser configuration for cross-platform releases
- Centralizes version management in
version.gofile with tagpr integration - Updates GitHub Actions workflows to use modern action versions and the new build system
Reviewed Changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| version.go | New file containing the version constant (v0.3.1) |
| cmd/bqin/version.go | Imports and uses centralized Version constant instead of linker flag |
| cmd/bqin/common.go | Updates to use centralized Version constant |
| Taskfile.yaml | New task runner configuration replacing Makefile functionality |
| Makefile | Removed in favor of Taskfile |
| .tagpr | Configuration for automated versioning with tagpr |
| .goreleaser.yaml | Configuration for building and releasing binaries across platforms |
| .gitignore | Adds ignore patterns for GoReleaser and Taskfile artifacts |
| .github/workflows/test.yaml | Updates test workflow with modern action versions and removes Makefile dependency |
| .github/workflows/tagpr.yaml | New workflow for automated versioning and releases |
| .github/workflows/release.yaml | Removed old release workflow replaced by tagpr workflow |
Comments suppressed due to low confidence (1)
cmd/bqin/common.go:68
- Corrected spelling of 'sutdown' to 'shutdown'.
logger.Infof("sutdown...")
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| sh: date +%Y-%m-%dT%H:%M:%S%z | ||
| BINARY: bqin | ||
| MAIN_PATH: ./cmd/bqin | ||
| LDFLAGS: -s -w -X main.version={{.VERSION}} -X main.buildDate={{.BUILD_DATE}} |
There was a problem hiding this comment.
The LDFLAGS references main.version, but the version variable has been removed from cmd/bqin/version.go. This will cause the linker flag to have no effect. Since the version is now sourced from bqin.Version, this linker flag should be removed or the variable should be kept for backward compatibility.
| LDFLAGS: -s -w -X main.version={{.VERSION}} -X main.buildDate={{.BUILD_DATE}} | |
| LDFLAGS: -s -w -X main.buildDate={{.BUILD_DATE}} |
This pull request refactors the project's build and release automation by replacing the legacy
Makefile-based workflow with a modern setup usingTaskfile.yamland GoReleaser. It also updates the CI/CD workflows to streamline testing and releasing, and introduces a centralized version management approach.Build and Release Automation:
Makefileand replaced it with a comprehensiveTaskfile.yamlfor development tasks, including building, testing, linting, and releasing. (Makefile,Taskfile.yaml) [1] [2].goreleaser.yaml) to standardize multi-platform binary builds and releases. (.goreleaser.yaml)CI/CD Workflow Updates:
.github/workflows/release.yaml) with a new workflow (.github/workflows/tagpr.yaml) that uses tagpr and GoReleaser for automated tagging and releasing, and improved permissions management. (.github/workflows/release.yaml,.github/workflows/tagpr.yaml) [1] [2].github/workflows/test.yaml) to use the newTaskfile.yaml, modernized actions, and improved matrix handling for Go versions. (.github/workflows/test.yaml)Version Management Improvements:
version.gofile and updated usage throughout the codebase for consistency. (version.go,cmd/bqin/common.go,cmd/bqin/version.go) [1] [2] [3] [4] [5].tagprconfiguration file to manage release tagging and branching conventions. (.tagpr)