Skip to content

Decouple integration sub-module releases from root SDK #1262

@giortzisg

Description

@giortzisg

Currently, all integration modules (gin/, fiber/, etc) are released in lock-step with the root SDK. Every craft publish bumps every sub-module's go.mod to require the new root version and creates tags for all integrations, even when they haven't changed. This causes two issues:

  • Integrations get a new tag when no actual changes have happened.
  • Integrations have version coupling with the root SDK. Users can't adopt a newer version of the SDK independently.

Possible Solution

The easiest solution would be to automate version bumping based on changes that happened and conditionally create a tag for each sub-module, but craft doesn't support conditional targets. Then the other possible options are:

  • different craft.yml configs for each integration, with the drawback of complexity and maintaining 15+ different configs.
  • keep craft for root sdk releases since it helps with changelog management and version bumping, but for Go the release process is really simple since we don't publish to a registry (we only need to create a git tag), so add a separate release action for the integrations.

Option 2 is the best path, but splits the release workflow into two paths which isn't really obvious.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions