mesh-llm/.github/workflows/scripted-binary-smoke.yml
Nick DiZazzo 3e30937ada
ci: compose reusable products and add Depot routing (#1113)
* ci: compose reusable products and add Depot routing

* ci: configure job-local sccache storage

* fix: harden Windows artifact composition

* test: assert pinned nightly artifact action

* ci: allow superseded SDK smokes to cancel

* docs: document cancellable CI fan-in gates

* ci: harden composable build graph and metrics

* fix(ci): install actionlint from verified release

* fix(installer): normalize runtime digest paths

* fix(ci): align installer contract output

* docs(ci): ground runner image migration plan

* ci: route trusted ARM lanes through Depot selector

* ci: enable remote sccache for fast lanes

* fix(ci): await remote sccache writes

* fix(ci): align sccache policy contract

* refactor(ci): reuse typed SDK and static ABI inputs

* fix(ci): reuse configured sccache server

* fix(ci): harden exact native cache reuse

* fix(ci): make PR compiler cache read-only

* fix(ci): isolate pull request compiler writes

* feat(ci): produce immutable Node addon artifacts

* fix(ci): restrict Depot canary to main

* fix(ci): isolate Depot canary cache keys
2026-07-30 04:02:53 -04:00

84 lines
2.5 KiB
YAML

name: Reusable Scripted Binary Smoke Tests
on:
workflow_call:
inputs:
artifact_name:
required: true
type: string
artifact_path:
required: false
default: ci-artifacts/linux
type: string
binary_name:
required: false
default: mesh-llm
type: string
staged_binary_path:
required: false
default: target/debug/mesh-llm
type: string
model_url:
required: false
default: https://huggingface.co/unsloth/SmolLM2-135M-Instruct-GGUF/resolve/9e6855bc4be717fca1ef21360a1db4b29d5c559a/SmolLM2-135M-Instruct-Q8_0.gguf
type: string
model_file:
required: false
default: SmolLM2-135M-Instruct-Q8_0.gguf
type: string
model_cache_scope:
required: true
type: string
cache_key_prefix:
required: false
default: ''
type: string
smoke_script:
required: true
type: string
timeout_minutes:
required: false
default: 20
type: number
secrets:
HF_TOKEN:
required: false
env:
MODEL_URL: ${{ inputs.model_url }}
MODEL_FILE: ${{ inputs.model_file }}
permissions:
contents: read
jobs:
scripted_binary_smoke:
name: Scripted Binary Smoke
# Model credentials stay on an isolated GitHub-hosted runner.
runs-on: ubuntu-24.04
timeout-minutes: ${{ inputs.timeout_minutes }}
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
HUGGING_FACE_HUB_TOKEN: ${{ secrets.HF_TOKEN }}
steps:
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
with:
persist-credentials: false
- name: Install smoke dependencies
run: sudo apt-get update && sudo apt-get install -y curl jq lsof
- uses: ./.github/actions/restore-smoke-inputs
with:
artifact_name: ${{ inputs.artifact_name }}
artifact_path: ${{ inputs.artifact_path }}
binary_name: ${{ inputs.binary_name }}
staged_binary_path: ${{ inputs.staged_binary_path }}
model_url: ${{ inputs.model_url }}
model_file: ${{ inputs.model_file }}
model_cache_scope: ${{ inputs.model_cache_scope }}
cache_key_prefix: ${{ inputs.cache_key_prefix }}
save_model_cache: ${{ github.ref == 'refs/heads/main' }}
- name: Run scripted smoke
run: ${{ inputs.smoke_script }} "${{ inputs.staged_binary_path }}" "${{ inputs.artifact_path }}" "$HOME/.models/${{ inputs.model_file }}"