Skip to content

Adopt branch-based publishing channels (concourse#729) #71

@jtnelson

Description

@jtnelson

concourse#729 introduced strict channel separation between GA and pre-release artifacts in concourse, and the same approach applies here since this repo publishes artifacts in a similar way.

What concourse#729 does

  • master is the only branch that produces a clean GA version (e.g. 1.0.0). GA artifacts route to Maven Central + Cloudsmith releases, and Docker gets the rolling tag set.
  • release/* produces unique, immutable <version>-rc<N> artifacts (the build counter is lifted into the suffix), routed to Cloudsmith snapshots only.
  • develop continues to produce -SNAPSHOT, published to the Sonatype Maven Central snapshot repo + Cloudsmith snapshots.
  • Every other branch (feature/*, bugfix/*, etc.) gets a sanitized full-name suffix (e.g. 1.0.0-FEATURE-FOO) and lands in Cloudsmith snapshots only.
  • A strict isGAVersion predicate (no FORCE_PUBLISH override) guards every GA-only destination so non-GA pushes can never silently land in GA channels.
  • Branch detection falls back through CI environment variables so detached-HEAD checkouts on master still resolve correctly.

Adapting to this repo

Use the concourse PR as the reference implementation, but not every piece applies 1:1 — some repos don't publish to Maven Central, don't ship a Docker image, or don't ship a .bin installer. Drop the parts that don't apply and keep the core: branch-based version suffixes + a strict GA gate on every GA-only destination.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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