Skip to main content

GitHub Actions

Versionx publishes a family of reusable actions. They're thin wrappers around the versionx binary; the same workflows run identically in GitLab CI, Jenkins, or locally.

Actions

ActionPurpose
KodyDennon/versionx-install-action@v1Install the versionx binary (cached).
KodyDennon/versionx-update-action@v1Plan + optionally PR dependency updates.
KodyDennon/versionx-release-action@v1Plan + apply releases (direct or release-PR).
KodyDennon/versionx-policy-action@v1Evaluate policies, fail the job on deny.
KodyDennon/versionx-sync-action@v1Run versionx sync (install runtimes, refresh lockfiles).

Inputs (most common)

versionx-install-action

InputDefaultDescription
versionlatestVersionx version to install. Pin to a minor for reproducibility (0.7).
cachetrueCache the binary in ~/.cache/versionx-install-action.

versionx-update-action

InputDefaultDescription
modeplanplan, pr. pr opens a PR.
scopeworkspaceworkspace / fleet / members:a,b,c.
patch-onlyfalseLimit to patch-level bumps.
branch-prefixdeps/Branch-name prefix when mode: pr.

versionx-release-action

InputDefaultDescription
modedirectdirect or release-pr.
strategyfrom versionx.tomlOverride the release strategy.
pushtruePush the resulting commit and tags.
pr-branchrelease/nextBranch for release-pr mode.

versionx-policy-action

InputDefaultDescription
scopeworkspaceScope passed to versionx policy eval.
fail-ondenydeny, warn, or none.

Composition

See GitHub Actions recipes for ready-to-paste workflows covering CI, weekly updates, releases (both modes), and publishing.

Non-GitHub CI

Nothing in these actions is GitHub-specific. The shape is always:

  1. versionx binary on PATH (install-action does this; on other CI, curl-install).
  2. A sequence of versionx <subcommand> calls.
  3. Let your CI post results / open PRs / push tags.

Example GitLab CI step:

release:
image: ubuntu:24.04
script:
- curl -LsSf https://github.com/KodyDennon/versionx/releases/latest/download/versionx-cli-installer.sh | sh
- versionx release plan --output json > release.json
- versionx release apply release.json

See also