This document describes the release process for Go components in the OTel Arrow repository.
The repository uses two GitHub Actions workflows to manage releases:
- Prepare Release: Updates versions and creates a pull request
- Push Release: Creates git tags and publishes the GitHub release
This two-step process ensures that all changes are reviewed before the release is published.
- Maintainer Access: Only repository maintainers can trigger the release workflows
- Clean Repository: Ensure your local repository has no uncommitted changes
- Updated CHANGELOG: Add entries to the "## Unreleased" section describing changes for the new release
-
Ensure the
CHANGELOG.mdfile has content under the "## Unreleased" section:## Unreleased - Add your changes here - Include PR references: [#123](https://github.com/open-telemetry/otel-arrow/pull/123) - Follow the existing format
-
Commit any final changes to the main branch
- Go to the Actions tab in the GitHub repository
- Select the "Prepare Release" workflow
- Click "Run workflow"
- Fill in the required inputs:
- Version: The new version number (e.g.,
0.40.0) - Dry run: Check this box to preview changes without making them
- Version: The new version number (e.g.,
Before making actual changes, run the workflow in dry-run mode:
- Set "Dry run mode" to
true - Review the output to ensure all planned changes are correct
- Verify that the version increment makes sense
- Check that the CHANGELOG.md will be updated properly
- Run the workflow again with "Dry run mode" set to
false - The workflow will:
- Validate the version format and increment
- Move unreleased content from CHANGELOG.md to a new release section
- Create a release branch (
otelbot/release-vX.Y.Z) - Open a pull request with all changes
- Review the automatically created pull request
- Verify that:
- CHANGELOG.md formatting is correct
- Version numbers are consistent
- Ensure all CI checks pass
- Merge the pull request
- Go to the Actions tab in the GitHub repository
- Select the "Push Release" workflow
- Click "Run workflow"
- Fill in the required inputs:
- Version: The same version number used in the prepare step (e.g.,
0.40.0) - Dry run: Check this box to preview what will happen
- Version: The same version number used in the prepare step (e.g.,
Before publishing the release, run the push workflow in dry-run mode:
- Set "Dry run mode" to
true - Review the output to ensure all git tags and release content look correct
- Run the push release workflow again with "Dry run mode" set to
false - The workflow will:
- Create git tags for the main release and Go modules
- Publish the GitHub release with changelog content
- Make the release available to users
This will automatically create the necessary git tags:
v0.40.0(main release tag)go/v0.40.0(Go module tag)collector/cmd/otelarrowcol/v0.40.0(collector module tag)
The release process handles:
Go Modules:
github.com/open-telemetry/otel-arrow/gogithub.com/open-telemetry/otel-arrow/collector/cmd/otelarrowcol
- Add content to the "## Unreleased" section before running the workflow
- Commit or stash any local changes before running the workflow
- Ensure the new version follows semantic versioning and is greater than the current version
- Check existing releases to see the current version
- Check for any syntax errors in CHANGELOG.md files
If the workflow fails partway through:
-
Delete the release branch if it was created:
git push origin --delete otelbot/release-vX.Y.Z
-
Delete the draft release from the GitHub UI if it was created
-
Fix the underlying issue and re-run the workflow
In case the automated workflow cannot be used, you can create a manual release:
-
Update CHANGELOG.md manually
-
Create and push appropriate git tags:
git tag -a vX.Y.Z -m "Release vX.Y.Z" git tag -a go/vX.Y.Z -m "Release go/vX.Y.Z" git tag -a collector/cmd/otelarrowcol/vX.Y.Z -m "Release collector/cmd/otelarrowcol/vX.Y.Z" git push origin vX.Y.Z go/vX.Y.Z collector/cmd/otelarrowcol/vX.Y.Z
-
Create a GitHub release manually
- All Go components use the same version number
- Versions follow Semantic Versioning
- Pre-release versions are not currently supported through the automated workflow