GitHub Action reference#

cx provides a composite GitHub Action and a reusable workflow for building custom cx binaries with your own package set.

Composite action#

The composite action builds a cx binary for the current runner’s platform. Use a matrix strategy for multi-platform builds.

uses: jezdez/conda-express@<ref>

Inputs#

packages optional

Comma-separated conda package specs to include in the bootstrapper. When empty, uses the default packages from conda-express.

Example: "python >=3.12, conda >=25.1, numpy, pandas"

channels optional

Comma-separated conda channels. When empty, uses the default (conda-forge).

Example: "conda-forge, bioconda"

exclude optional

Comma-separated packages to exclude from the bootstrapper, along with their exclusive dependencies. When empty, uses the default exclusions.

Example: "conda-libmamba-solver"

ref optional default: main

Git ref of conda-express to build from (tag, branch, or SHA).

Outputs#

binary-path

Absolute path to the built cx binary on the runner.

asset-name

Platform-qualified asset name (e.g. cx-aarch64-apple-darwin).

What it does#

  1. Checks out conda-express into .cx-build/

  2. Sets up pixi (Rust toolchain from conda-forge)

  3. Sets up Rust build caching

  4. Builds the cx binary with CX_PACKAGES, CX_CHANNELS, and CX_EXCLUDE environment variable overrides (see build-time configuration)

  5. Stages the binary with a platform-qualified name and SHA256 checksum


Reusable workflow#

The reusable workflow builds cx for all 5 supported platforms in a single call, using the composite action internally.

uses: jezdez/conda-express/.github/workflows/build.yml@<ref>

Inputs#

All inputs from the composite action are supported, plus:

retention-days optional default: 7

Number of days to retain build artifacts.

Artifacts#

The workflow uploads one artifact per platform, each containing the binary and its .sha256 checksum:

Artifact

Platform

cx-x86_64-unknown-linux-gnu

Linux x86_64

cx-aarch64-unknown-linux-gnu

Linux ARM64

cx-x86_64-apple-darwin

macOS Intel

cx-aarch64-apple-darwin

macOS Apple Silicon

cx-x86_64-pc-windows-msvc.exe

Windows x86_64


Environment variables#

The action passes its inputs to the cx build system via environment variables. These are the same variables you can set when building from source:

Input

Environment variable

Effect

packages

CX_PACKAGES

Replaces [tool.cx].packages

channels

CX_CHANNELS

Replaces [tool.cx].channels

exclude

CX_EXCLUDE

Replaces [tool.cx].exclude