Skip to content

Conversation

@kmarchais
Copy link
Member

@kmarchais kmarchais commented Jan 25, 2026

Summary

Refactor GitHub Actions workflows to reduce duplication, update action versions, and add automated release support.

Changes

Refactored workflows

Workflow Change
ci.yml 3 separate jobs → 1 job with matrix strategy
carma-conda.yml 4 jobs → 1 matrix job, switch to API token auth
conda-packaging.yml Made reusable (workflow_call), added ref input for tag checkout
release.yml Simplified to call conda-packaging.yml (103→22 lines)

Action version updates

Action Before After
actions/checkout v2/v5 v6
actions/cache v3 v4
astral-sh/setup-uv v6 v7

New workflow

  • release.yml: Triggered on release publish, tag push (v*), or manual dispatch

    • Calls conda-packaging.yml with upload: true
    • Uploads packages to Anaconda.org (set3mah channel)

    Note: GitHub automatically creates source archives. Python wheels (PyPI) will be added in a future PR.

Deleted workflows (superseded by conda-packaging.yml)

  • conda-packaging-linux.yml
  • conda-packaging-osx-64.yml
  • conda-packaging-osx-arm64.yml
  • conda-packaging-windows.yml

Bug fixes

  • build-doc.yml: Fix deprecated ::set-output syntax → $GITHUB_OUTPUT
  • carma-conda.yml: Fix macos-14 incorrectly targeting osx-64 (now osx-arm64)

Test plan

  • CI passes on all 3 platforms (Linux, macOS, Windows)
  • conda-packaging.yml triggers on this PR (self-change detection)
  • Manually trigger conda-packaging.yml with upload: false to verify builds
  • Create a test release to verify the release workflow (after merging)

…e workflow

- ci.yml: Convert 3 separate jobs to single matrix strategy (~26% reduction)
- carma-conda.yml: Refactor 4 jobs to matrix, use API token auth (83→41 lines)
- conda-packaging.yml: Remove PR trigger, add upload input for manual control
- build.yml: Update checkout v5→v6, setup-uv v6→v7
- build-doc.yml: Fix deprecated set-output, update cache v3→v4, checkout v6
- release.yml: New workflow for automated releases on tag/publish
- Delete 4 obsolete platform-specific conda workflows (superseded by conda-packaging.yml)
@kmarchais kmarchais marked this pull request as draft January 25, 2026 20:55
- ci.yml: Replace conditional python-version logic with 3.14 for all platforms
- conda-packaging.yml: Trigger on conda.recipe/**, environment*.yml changes
- Use unqualified carma from conda-forge (like other platforms)
- Align channel order: conda-forge first, then set3mah
- Bump Python to 3.14
libboost-python on conda-forge doesn't have Python 3.14 builds yet.
Python 3.14 still works for pip install (CI uses pip).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants