Skip to content

Split [ci].deploy so wheel and Conan publishing can be enabled independently #91

Description

@aclark-aquaveo

Summary

[ci].deploy is a single switch over both publishing paths. On a tag push it emits, together:

  • Wheel Deploy — pushes the wheel to devpi
  • Conan Deploy - Linux / Conan Deploy - Windows — push the Conan packages to the Conan remote

There is no way to keep one and drop the other.

Why it matters

A library whose only consumer is Python has no use for its Conan packages. Nothing links them; they are published on every tag, take up space on a shared remote, and add two jobs to every release pipeline for no benefit.

xmssnap is the concrete case. Python is its sole consumer — the .pyd is the only way to use the library, and no C++ code links it, not even dynamically. Its Conan packages exist purely as a build artifact of producing the wheel.

The reverse pairing is plausible too: a C++-only library with pybind = False still gets a Wheel Deploy job emitted whenever [ci].deploy is on.

Suggestion

Split the flag, keeping [ci].deploy as the master switch so nothing changes by default:

[ci]
deploy = true          # unchanged: master switch for the Deploy stage
conan_deploy = false   # new, default true
wheel_deploy = true    # new, default true

Both new keys default to true, so every existing project renders exactly what it does today. deploy = false continues to drop the whole stage regardless.

A guard is probably worth it for deploy = true with both sub-flags false, which would emit an empty Deploy stage — the same shape as the two guards added in #90 for [ci].linux.

Priority

Low. This is a nice-to-have, not a blocker — publishing unused Conan packages is wasteful but harmless, and xmssnap will ship with deploy = true and simply carry them. Filing it so the decision is recorded rather than rediscovered.

Context

Found while converting xmssnap to Conan 2, alongside the three gaps addressed in #90. Reviewed with @gagelarsen, who asked that this one be tracked as a future feature rather than fixed now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions