Skip to content

Latest commit

 

History

History
76 lines (52 loc) · 3.98 KB

File metadata and controls

76 lines (52 loc) · 3.98 KB

workflow-plugin-ci-generator

⚠️ Experimental — This plugin compiles and passes its unit tests but has not been validated in any active GoCodeAlone-internal production deployment. Use with caution. Please open an issue if you adopt it so we can promote it to verified status.

License Go Reference

CI/CD config generator for workflow projects — emits GitHub Actions, GitLab CI, Jenkins, and CircleCI pipelines from a workflow app config.

As of v0.3.0 all four platforms — GitHub Actions, GitLab CI, Jenkins, and CircleCI — are generated by the workflow engine's config-derived cigen engine (analyze → CIPlan → render): the output is derived from your app config — its required secrets, deploy phases, migrations, health-check smoke, and plugin-install needs — not a fixed template. The legacy Jenkins/CircleCI template generators were retired in #804 (see ADR 0044 in the workflow repo). This is the same engine behind wfctl ci plan / wfctl ci generate. Requires workflow engine >= v0.68.0.

What it provides

Pipeline step types:

  • step.ci_generate — Generate CI/CD configuration files from a workflow app config. All four platforms (GitHub Actions, GitLab CI, Jenkins, CircleCI) are config-derived via cigen.

Requirements

  • Workflow engine / wfctl ≥ v0.67.0 (minEngineVersion: 0.67.0) — the release that exports the cigen package this plugin imports.

Install

# In your wfctl.yaml
version: 1
plugins:
  - name: workflow-plugin-ci-generator
    version: v0.3.0
    source: github.com/GoCodeAlone/workflow-plugin-ci-generator

Then:

wfctl plugin install

Step config

step.ci_generate config / input fields:

Field Purpose
platform github_actions | gitlab_ci | jenkins | circleci
infra_config Path to the workflow app config to analyze (GHA/GitLab)
output_dir Where to write the generated file(s)
project_name Project label used in generated jobs
runner Runner label (GitHub Actions)
default_branch Default branch (default main)
from_plan (v0.2.0) Path to a CIPlan JSON to render directly, skipping analysis — lets an AI/automation produce the plan via wfctl ci plan, edit it, then render it deterministically
phase_config (v0.2.0) Path to a prerequisite-phase config (e.g. deploy.prereq.yaml) → emits a two-phase apply-prereqapply-deploy pipeline

For GHA/GitLab the generated workflow wires each config-referenced secret as ${{ secrets.NAME }}, includes a wfctl plugin install step when the app uses plugins, a wfctl migrations up step when ci.migrations is present, a plan-guard that fails on replace/destroy, and a health-check smoke job. Secret names the generator can't fully derive (e.g. IaC-output-backed or non-UPPER_SNAKE names) are surfaced as warnings on the CIPlan rather than silently guessed.

Minimal example

See examples/minimal/config.yaml.

Supported CI platforms

Platform Output file Generation
GitHub Actions .github/workflows/<name>.yml config-derived (cigen)
GitLab CI .gitlab-ci.yml config-derived (cigen)
Jenkins Jenkinsfile config-derived (cigen)
CircleCI .circleci/config.yml config-derived (cigen)

Documentation

License

MIT. See LICENSE.