- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Ensure you have added suitable tests and the test suite is passing
- Ensure that
tfplugindocshas been run and that the Ably Terraform provider documentation is up to date. Terraform Plugin Docs tool is available HERE - Push the branch (
git push origin my-new-feature) - Create a new Pull Request
See DEVELOPMENT.md for guidance on testing locally.
This repo contains two independently versioned components:
- Provider — the Terraform provider itself
- Control — the Go client for the Ably Control API (under
control/)
Both are released from the same workflow but use different tag conventions and produce different artifacts.
| Component | Tag format | Example |
|---|---|---|
| Provider | v<semver> |
v1.2.3 |
| Control | control/v<semver> |
control/v1.0.0 |
Tags should conform to SemVer and must not be moved once pushed.
The control/v<semver> prefix is the Go module convention for subdirectory modules. The Go module proxy indexes new versions from this tag automatically.
- Merge all pull requests for the release to
main. - Create a release PR from a branch named
release/<date>(e.g.release/2025-04-10). This PR should increment the version(s) and receive approval before merging tomain. - Tag the release commit(s) on
main. You can tag one or both components at once:git tag v1.2.3 git tag control/v1.0.0 git push origin v1.2.3 control/v1.0.0
- Trigger the Release workflow (
workflow_dispatch) from the Actions tab. No inputs are needed — the workflow discovers what to release from the tags. - Review the draft GitHub Release(s) and publish when ready.
- Update the Ably Changelog (via headwayapp) with these changes (you can just copy the notes you added to the CHANGELOG)
- Detects which tags are unreleased by checking for existing GitHub Releases.
- Provider release: runs GoReleaser to build signed binaries, checksums, and a manifest, then creates a draft GitHub Release with all artifacts. Publishing this release triggers the Terraform Registry webhook.
- Control release: generates release notes scoped to PRs that touch
control/paths, then creates a draft GitHub Release (no binary artifacts). - Both release jobs run in parallel when both components are tagged.
- The workflow is idempotent — running it again after releases exist is a safe no-op.
N.B. The provider release process differs from the general release guidance for Ably SDKs due to Terraform Registry requirements.