Skip to main content

Module export

Module export 

Source
Expand description

Export-with-degradation: QED → GitHub Actions (R533-F8, W224).

W224 settles the QED↔GHA boundary as import, not emulate, and is explicit that the reverse direction is asymmetric: “QED→GHA can only emit GHA that shells out to yah in run: steps (content-addressed / atomic-release features don’t map back). Useful for keep GitHub as a fallback CI; build it second; never call it lossless.”

This module is that second direction, and it is honest about the loss: export_pipeline returns an ExportReport whose degradations list enumerates every feature that did not survive the round-trip, and the emitted YAML carries the same notes as # degraded: comments. The caller (and a future qed export CLI) surfaces them; nothing here pretends the export is faithful.

§Two modes, picked automatically

  • Portable — every step is a plain StepKind::Subprocess. These map cleanly onto GHA run: steps, so the workflow runs the real build/test commands on a GitHub runner. This is the high-value case (a check / smoke pipeline becomes a usable GitHub workflow).
  • Wholesale shim — the pipeline has any native-only step kind (build-image, package-native-tarball, sub-pipeline, import, …). GitHub has no native equivalent and the yah qed CLI runs whole pipelines (not single steps), so the only honest emission is a workflow that checks out the repo and shells yah qed run <name> — GitHub as a trigger that delegates to QED. Every native feature is recorded as a degradation.

Outcomes (Outcome::Publish and friends), pipeline-chain triggers, LocalOnly placement, OnFail::Retry, and step produces are recorded as degradations in either mode — a portable workflow still builds and tests, it just doesn’t publish (content-addressed release stays native; the note points the operator at yah qed run <name>).

Structs§

Degradation
One feature that did not survive the QED → GHA export. The feature tag is a stable short identifier (outcome:publish, step-kind:build-image, …); detail is the human explanation that also rides the YAML as a comment.
ExportReport
The result of exporting a Pipeline to GitHub Actions.

Functions§

export_pipeline
Export a QED Pipeline to a GitHub Actions workflow, degrading every native-only feature explicitly. See the module docs for the two modes.