name: Publish
on:
pull_request:
types: [closed]
workflow_dispatch:
permissions:
contents: write
env:
GIT_CONFIG_COUNT: "1"
GIT_CONFIG_KEY_0: init.defaultBranch
GIT_CONFIG_VALUE_0: main
MISE_ENV: ci,release
CACHE_WRITE: ${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) }}
concurrency:
group: publish-${{ github.ref }}
cancel-in-progress: false
jobs:
crate:
if: >-
github.event_name == 'workflow_dispatch' ||
(github.event.pull_request.merged &&
github.event.pull_request.head.ref == 'version-packages')
runs-on: ubuntu-latest
outputs:
has_assets: ${{ steps.plan.outputs.has_assets }}
tag: ${{ steps.plan.outputs.tag }}
matrix: ${{ steps.plan.outputs.matrix }}
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
ref: ${{ github.event.pull_request.merge_commit_sha || github.sha }}
fetch-depth: 0
- name: Set up mise
uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c with:
version: 2026.10.3
cache: true
cache_save: ${{ env.CACHE_WRITE }}
- run: mise install --locked
- name: Plan native assets
id: plan
run: verctl assets --github-output "$GITHUB_OUTPUT"
- uses: victor-software-house/verctl/actions/publish@c9f41e8df9746ad240cf59bc18626c0d938c7662 env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
assets:
name: ${{ matrix.id }}
needs: crate
if: needs.crate.outputs.has_assets == 'true'
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.crate.outputs.matrix) }}
runs-on: ${{ matrix.labels }}
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
ref: ${{ github.event.pull_request.merge_commit_sha || github.sha }}
fetch-depth: 0
- name: Set up mise
uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c with:
version: 2026.10.3
cache: true
cache_save: ${{ env.CACHE_WRITE }}
- run: mise install --locked
- uses: victor-software-house/verctl/actions/asset@c9f41e8df9746ad240cf59bc18626c0d938c7662 with:
target: ${{ matrix.id }}
tag: ${{ needs.crate.outputs.tag }}
schema:
name: schema
needs: crate
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
ref: ${{ github.event.pull_request.merge_commit_sha || github.sha }}
persist-credentials: false
- name: Attach the ledger schema
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ needs.crate.outputs.tag }}
run: gh release upload "$TAG" schema/tasks.schema.json --clobber