4.4 KiB
4.4 KiB
Releasing go-lib/util
This document describes the process for creating a release of the
go-lib/util library.
Overview
Releases in this project are managed via Git tags. When you push a
tag matching the pattern v* (e.g., v0.5.0), the Drone CI/CD
pipeline automatically:
- Runs all quality checks (tests, coverage, vet, vulnerability scan)
- Creates a source archive (
sources.tar.gz) - Publishes a release to Gitea with both artifacts
Release Types
This library follows semantic versioning: MAJOR.MINOR.PATCH (e.g., v1.2.3)
v1.0.0- Major release (breaking API changes)v1.1.0- Minor release (new features, backward compatible)v1.0.1- Patch release (bug fixes only)
Prerequisites
Before creating a release, ensure:
- All changes committed:
git statusshows clean working tree - Tests passing: Run
go test ./...locally - Coverage OK: Coverage must be ≥ 80%
- Dependencies updated: Run
go mod tidy - CHANGELOG.md updated (optional but recommended)
Creating a Release
Step 1: Prepare Release Commit (Optional)
Update version references if needed (README, docs, etc.):
# Edit any version references
vim README.md
git add README.md
git commit -m "docs: prepare v0.5.0 release"
Step 2: Create the Git Tag
# Create annotated tag with release notes
git tag -a v0.5.0 -m "Release v0.5.0: Description of changes"
# Or simple tag (not recommended)
# git tag v0.5.0
Step 3: Push the Tag
# Push tag to remote
git push origin v0.5.0
# Or push all tags at once
# git push --tags
Step 4: Monitor the Pipeline
-
Navigate to your Drone instance (usually
https://drone.example.com) -
Watch the pipeline run through:
- ✓ Test & coverage checks
- ✓ Code quality (vet, vulnerability scan)
- ✓ Create source archive
- ✓ Publish to Gitea release
Step 5: Verify Release in Gitea
- Go to your repository on Gitea
- Click "Releases" section
- Verify the new release includes:
- Release title:
v0.5.0 - Attached artifacts:
coverage.txt- Test coverage reportsources.tar.gz- Full source code snapshot
- Release title:
Using the Released Version
End users can install your library via:
# Latest version
go get scm.yoorie.de/go-lib/util
# Specific version
go get scm.yoorie.de/go-lib/util@v0.5.0
# Latest patch of a minor version
go get scm.yoorie.de/go-lib/util@v0.5
Tag Naming Convention
- Release tags:
v0.5.0(pushed to trigger Drone pipeline) - Pre-release tags (optional):
v0.5.0-rc1,v0.5.0-beta1 - Internal tags (if any): Not recommended; use branches instead
Only tags matching v* trigger the release pipeline.
Rollback / Deleting a Release
If a release has issues:
# Delete local tag
git tag -d v0.5.0
# Delete remote tag
git push origin :refs/tags/v0.5.0
# Then push a fixed release with the same or new tag
git tag -a v0.5.0-fixed -m "Fixed release"
git push origin v0.5.0-fixed
Troubleshooting
Pipeline Failed
Check Drone logs:
- Go to Drone UI
- Click on failed pipeline
- Expand step details
- Review error messages
Common issues:
- Coverage below 80%: Ensure tests cover new code
- Tests failing: Run locally:
go test -v ./... - Vet errors: Run:
go vet ./...
Release Not Appearing in Gitea
- Verify
gitea_tokensecret is set in Drone - Check Drone pipeline output for release step
- Ensure tag matches pattern
v*
Tag Already Exists
If you pushed a tag and need to update it:
# Force delete and recreate (dangerous - use with caution)
git tag -d v0.5.0
git push origin :refs/tags/v0.5.0
git tag -a v0.5.0 -m "Updated release notes"
git push origin v0.5.0
Release Checklist
- All code changes reviewed and merged
- Tests pass locally:
go test -v ./... - Coverage ≥ 80%: Test and check coverage
- Code quality OK:
go vet ./... - No vulnerabilities:
govulncheck ./... - Dependencies tidy:
go mod tidy - CHANGELOG updated (if maintained)
- Version references updated (if any)
- Git tag created:
git tag -a vX.Y.Z -m "message" - Tag pushed:
git push origin vX.Y.Z - Release visible in Gitea
- Coverage artifact downloaded and verified