Skip to content

Latest commit

 

History

History
154 lines (102 loc) · 3.14 KB

File metadata and controls

154 lines (102 loc) · 3.14 KB

Release Process

Start with the github-releases skill. Use this file for the repo-local execution details that supplement that workflow.

Build

make build

Output: aimgr binary in project root.

Tests

make test

This runs: go vet, unit tests, and integration tests. All must pass.

Version Files

None. Version is managed via Git tags only.

The version in pkg/version/version.go is a placeholder. The actual version is injected at build time via ldflags by GoReleaser:

-X github.com/dynatrace-oss/ai-config-manager/v3/pkg/version.Version={{.Version}}
-X github.com/dynatrace-oss/ai-config-manager/v3/pkg/version.GitCommit={{.ShortCommit}}
-X github.com/dynatrace-oss/ai-config-manager/v3/pkg/version.BuildDate={{.Date}}

Do not manually update version files.

Versioning

Follow Semantic Versioning:

  • Major: Breaking changes to CLI or resource formats
  • Minor: New features (new commands, flags, resource types)
  • Patch: Bug fixes only

Analyze commits to determine bump:

git log "$(git describe --tags --abbrev=0 2>/dev/null)"..HEAD --pretty=format:"%s" | grep -E "^(feat(\([^)]+\))?:|fix(\([^)]+\))?:|BREAKING)"

Rules:

  • feat: / feat(scope): → minor
  • fix: / fix(scope): only → patch
  • BREAKING CHANGE: / BREAKING: → major

Pre-Release Checklist

  • Tests pass: make test
  • Build succeeds: make build
  • No uncommitted changes: git status
  • CHANGELOG.md updated with new version entry
  • CI green: gh run list --limit 1

Release Steps

This project uses tag-triggered GitHub Actions. Do NOT use gh workflow run.

Workflow/config anchors:

  • .github/workflows/release.yml
  • .goreleaser.yaml

1. Update CHANGELOG.md

Add entry for new version:

## [X.Y.Z] - YYYY-MM-DD

### Added
- New features

### Fixed
- Bug fixes

### Changed
- Breaking changes

2. Commit and Push

git add CHANGELOG.md
git commit -m "docs: update CHANGELOG for vX.Y.Z"
git push origin main

3. Create and Push Tag

git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z

This triggers the GitHub Actions release workflow.

4. Monitor Workflow

gh run watch

The workflow builds binaries, creates archives, generates checksums, and publishes the GitHub release.

5. Enhance Release Notes

GitHub auto-generates basic notes. Enhance them:

cat > /tmp/release-notes.md << 'NOTES'
## Highlights
- Key feature or fix

## Full Changelog
https://github.com/dynatrace-oss/ai-config-manager/compare/vOLD...vNEW
NOTES

gh release edit vX.Y.Z --notes-file /tmp/release-notes.md

6. Verify

gh release view vX.Y.Z

Post-Release

  1. Verify release: https://github.com/dynatrace-oss/ai-config-manager/releases
  2. Test binary download works
  3. Monitor issues

Rollback

gh release delete vX.Y.Z -y
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z

Then fix and re-release with incremented version.

Related