This document describes the automated release process for rotel-lambda-forwarder.
The release process has been streamlined with automation to reduce manual steps. You now have two options for creating a release:
- GitHub Actions (Recommended) - Fully automated via web UI
- Manual Process - Traditional manual steps
NOTE: This automation requires a Personal Access Token, defined in the secret PAT_RELEASE_ENGINEER, with the following permissions:
- Contents: read/write
- Metadata: read
- Pull requests: read/write
- Go to the Actions tab in GitHub
- Click on "Bump Version".
- Click "Run workflow"
- Select the version bump type:
patch- Bug fixes (0.0.4 → 0.0.5)minor- New features (0.0.4 → 0.1.0)major- Breaking changes (0.0.4 → 1.0.0)
- Click "Run workflow"
This will:
- ✅ Read the current version from
Cargo.toml - ✅ Calculate the new version
- ✅ Create a branch
re/bump-for-<version> - ✅ Update
Cargo.tomlandCargo.lock - ✅ Commit and push the changes
- ✅ Open a pull request automatically
- Review the automatically created PR
- Approve and merge to
main
When the version bump PR is merged:
- ✅ A tag
v<version>is automatically created and pushed - ✅ The auto-release workflow is automatically triggered
- ✅ A GitHub release is created with auto-generated release notes
- ✅ The release workflow is then triggered by the release creation
- ✅ Binaries are built for both x86_64 and arm64
- ✅ Assets are uploaded to S3 and GitHub releases
- ✅ CloudFormation templates are generated and uploaded
- Go to the Releases page
- Find the newly created release
- Edit the auto-generated release notes if needed
- Save changes
If you need to merge a version bump PR without creating a release:
- Add the
no-auto-taglabel to the PR before merging - The automatic tagging will be skipped
- You can manually create the tag later:
git tag v<version> git push origin v<version>
If you prefer to do everything manually:
# Read current version
grep '^version = ' Cargo.toml | head -1
# Calculate next version (bump patch by 1)
# Example: 0.0.4 → 0.0.5git checkout main
git pull
git checkout -b re/bump-for-<version>- Edit
Cargo.tomland update theversionfield - Run
cargo buildto updateCargo.lock
git add Cargo.toml Cargo.lock
git commit -m "Bump version to <version>"
git push origin re/bump-for-<version>- Open a pull request on GitHub
- Review and approve
- Merge to
main
The tag will be created automatically unless you add the no-auto-tag label to the PR.
To manually create the tag:
git checkout main
git pull
git tag v<version>
git push origin v<version>When a tag is pushed, two workflows run sequentially:
-
The auto-release workflow will:
- Validate the tag format (must be vX.Y.Z)
- Check if a release already exists
- Generate release notes
- Create the GitHub release
-
The release workflow will then:
- Build binaries for x86_64 and arm64
- Upload to S3 and GitHub releases
- Generate and upload CloudFormation templates
Each release produces the following artifacts:
rotel-lambda-forwarder-v<version>_x86_64.zip- x86_64 Lambda functionrotel-lambda-forwarder-v<version>_arm64.zip- ARM64 Lambda function
Production Bucket: rotel-lambda-forwarder
Versioned artifacts:
s3://rotel-lambda-forwarder/rotel-lambda-forwarder/v<version>/x86_64/rotel-lambda-forwarder.zips3://rotel-lambda-forwarder/rotel-lambda-forwarder/v<version>/arm64/rotel-lambda-forwarder.zip
Latest artifacts:
s3://rotel-lambda-forwarder/rotel-lambda-forwarder/latest/x86_64/rotel-lambda-forwarder.zips3://rotel-lambda-forwarder/rotel-lambda-forwarder/latest/arm64/rotel-lambda-forwarder.zip
Production Bucket: rotel-cloudformation
Versioned templates:
s3://rotel-cloudformation/stacks/v<version>/x86_64/rotel-lambda-forwarder-otlp.yamls3://rotel-cloudformation/stacks/v<version>/x86_64/rotel-lambda-forwarder-clickhouse.yamls3://rotel-cloudformation/stacks/v<version>/arm64/rotel-lambda-forwarder-otlp.yamls3://rotel-cloudformation/stacks/v<version>/arm64/rotel-lambda-forwarder-clickhouse.yaml
Latest templates:
s3://rotel-cloudformation/stacks/latest/x86_64/rotel-lambda-forwarder-otlp.yamls3://rotel-cloudformation/stacks/latest/x86_64/rotel-lambda-forwarder-clickhouse.yamls3://rotel-cloudformation/stacks/latest/arm64/rotel-lambda-forwarder-otlp.yamls3://rotel-cloudformation/stacks/latest/arm64/rotel-lambda-forwarder-clickhouse.yaml