v1.3.0
Minor Changes
-
280e33e: Add CLI visualization tool for GitLab CI pipelines
- New
gitlab-ci-buildercommand-line tool withvisualizesubcommand - Supports multiple input formats: local YAML files and remote URLs
- Three visualization formats:
- Mermaid diagram: Interactive flowchart visualization
- ASCII tree: Text-based dependency tree
- Stage table: Organized view by pipeline stages
- Built-in support for extends resolution and dependency analysis
- Easy to use:
npx @noxify/gitlab-ci-builder visualize .gitlab-ci.yml
CLI Usage
# Visualize local YAML file (all formats) gitlab-ci-builder visualize .gitlab-ci.yml # Show only Mermaid diagram gitlab-ci-builder visualize .gitlab-ci.yml -f mermaid # Visualize remote pipeline gitlab-ci-builder visualize https://gitlab.com/my-org/my-project/-/raw/main/.gitlab-ci.yml # Show ASCII tree without stages gitlab-ci-builder visualize pipeline.yml -f ascii --show-stages=false
Programmatic Usage
Using YAML
import { visualizeYaml } from "@noxify/gitlab-ci-builder" const yamlContent = ` stages: [build, test] build: stage: build script: npm run build ` const result = await visualizeYaml(yamlContent, { format: "all" }) console.log(result.mermaid) // Mermaid diagram console.log(result.ascii) // ASCII tree console.log(result.table) // Stage table
Using ConfigBuilder - Show only local jobs
import { ConfigBuilder } from "@noxify/gitlab-ci-builder" const config = new ConfigBuilder() .stages("build", "test", "deploy") .template(".base", { image: "node:22" }) .extends(".base", "build", { stage: "build", script: ["npm run build"] }) .extends(".base", "test", { stage: "test", script: ["npm test"] }) // Generate visualizations directly from ConfigBuilder const mermaid = config.generateMermaidDiagram({ showStages: true }) const ascii = config.generateAsciiTree({ showRemotes: true }) const table = config.generateStageTable() console.log(mermaid) console.log(ascii) console.log(table)
Using ConfigBuilder - Resolve also configured
includesimport { ConfigBuilder, visualizeYaml } from "@noxify/gitlab-ci-builder" const config = new ConfigBuilder() .include({ remote: "https://custom-gitlab-host.com/org/branch/spec.yml" }) .stages("build", "test", "deploy") .template(".base", { image: "node:22" }) .extends(".base", "build", { stage: "build", script: ["npm run build"] }) .extends(".base", "test", { stage: "test", script: ["npm test"] }) const yaml = config.toYaml() const result = await visualizeYaml(yaml, { format: "all", // Optional: Authentication for private repositories gitlabToken: process.env.GITLAB_TOKEN, // Optional: GitLab host URL for project/template includes (default: https://gitlab.com) gitlabUrl: "https://custom-gitlab-host.com", }) console.log(result.mermaid) console.log(result.ascii) console.log(result.table)
- New