My Workflow
Automating simple checks and providing helpful information can make a noticeable difference on a quality of life of a project maintainer. As an enthusiastic Go developer and open source contributor I assembled a library of tools to ease my life.
This library contains Makefile
includes and GitHub Actions. Go project can import github.com/bool64/dev
to receive versioned helpers. GitHub Actions are copied into the project with make github-actions
(or make reset-ci
).
Changed lines of code
Sometimes pull requests are big, this is usually not great, but might be unavoidable in some cases. This action comments the distribution of changed lines by type, so that it is easy to understand the scope (for example if largest part of PR is in JSON mocks).
API Changes
It is important to avoid unnecessary breaking changes or at least be aware of them. This action leverages gorelease
to comment severity of API changes.
Test Coverage
Having meaningful test coverage increases confidence. This action will show the difference of coverage for every changed function, so that developer can see where some more effort is needed.
Benchmark Difference
When high performance is important, this action will help to see degradation or improvements to inform further decisions.
Automated Binary Builder
For command line tools it is convenient to delegate binary releases to GitHub Actions, maintainer only needs to create a new release, building and uploading happens automagically.
Submission Category:
Maintainer Must-Haves
Yaml File or Link to Code
Go development helpers
This library provides scripts and workflows to automate common routines with modular Makefile
and GitHub Actions.
See blog post for more information.
Installation
Automatic
Run this command in your repo root.
curl https://raw.githubusercontent.com/bool64/dev/master/makefiles/base.mk -sLo Makefile && printf "package $(go list -f '{{.Name}}' || echo 'mypackage')_test\n\nimport _ \"github.com/bool64/dev\" // Include CI/Dev scripts to project.\n" > dev_test.go && make reset-ci
Manual
Add a test file (e.g. dev_test.go
) to your module with unused import.
package mymodule_test
import _ "github.com/bool64/dev" // Include development helpers to project.
Add Makefile
to your module with includes standard targets.
#GOLANGCI_LINT_VERSION := "v1.61.0" # Optional configuration to pinpoint golangci-lint version.
# The head of Makefile determines location of dev-go to include standard targets.
GO ?= go
export GO111MODULE = on
ifneq "$(GOFLAGS)" ""
$(info GOFLAGS: ${GOFLAGS})
endif
ifneq "$(wildcard ./vendor )" ""
$(info Using vendor)
β¦Additional Resources / Info
- PR Comment:
marocchino/sticky-pull-request-comment
- API Changes:
gorelease
- A tool to show a number of changed lines:
sccdiff
- Benchmark comparer:
benchstat
Top comments (0)