YAML Export Formats
This page documents how pipel8ne maps its pipeline model to each supported CI/CD format.
GitHub Actions
Output file: .github/workflows/<pipeline-name>.yml
Mapping
| pipel8ne concept | GitHub Actions concept |
|---|---|
| Pipeline | Workflow |
| Trigger (push) | on.push |
| Trigger (pull_request) | on.pull_request |
| Trigger (schedule) | on.schedule[].cron |
| Trigger (tag) | on.push.tags |
| Stage | Group of jobs sharing a needs: dependency |
| Job | jobs.<job-id> |
| Job.runsOn | jobs.<job-id>.runs-on |
| Stage dependency | jobs.<job-id>.needs: [<upstream-job>] |
| Step (shell_command) | jobs.<job-id>.steps[].run |
| Step (git checkout) | jobs.<job-id>.steps[].uses: actions/checkout@v4 |
| Credential reference | ${ { secrets.SECRET_NAME } } |
Example
yaml
name: ci
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test
build:
runs-on: ubuntu-latest
needs: [test]
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run buildGitLab CI
Output file: .gitlab-ci.yml (repository root)
Mapping
| pipel8ne concept | GitLab CI concept |
|---|---|
| Pipeline | Pipeline |
| Trigger (push) | workflow.rules + $CI_COMMIT_BRANCH |
| Trigger (schedule) | GitLab CI schedules (configured in GitLab UI) |
| Trigger (tag) | rules + $CI_COMMIT_TAG |
| Stage | stages[] entry |
| Job | Job definition at root level |
| Job.runsOn | tags: (for self-hosted) or default runner |
| Stage dependency | stage: <stage-name> + needs: |
| Step (shell_command) | script: block |
| Credential reference | $SECRET_NAME (from CI/CD Variables) |
Example
yaml
stages:
- test
- build
test:
stage: test
image: node:20
script:
- npm ci
- npm test
build:
stage: build
image: node:20
needs: [test]
script:
- npm ci
- npm run build
artifacts:
paths:
- dist/Azure DevOps
Output file: azure-pipelines.yml (repository root, or path configured in the pipeline settings)
Mapping
| pipel8ne concept | Azure DevOps concept |
|---|---|
| Pipeline | Pipeline |
| Trigger (push) | trigger.branches.include |
| Trigger (pull_request) | pr.branches.include |
| Trigger (schedule) | schedules[] |
| Trigger (tag) | trigger.tags.include |
| Stage | stages[].stage |
| Job | stages[].jobs[].job |
| Job.runsOn | pool.vmImage |
| Stage dependency | dependsOn: |
| Step (shell_command) | steps[].script |
| Credential reference | $(SECRET_NAME) (from Variable Groups) |
Example
yaml
trigger:
branches:
include:
- main
stages:
- stage: Test
jobs:
- job: test
pool:
vmImage: ubuntu-latest
steps:
- script: npm ci
displayName: Install dependencies
- script: npm test
displayName: Run tests
- stage: Build
dependsOn: Test
jobs:
- job: build
pool:
vmImage: ubuntu-latest
steps:
- script: npm ci
- script: npm run build
displayName: BuildLimitations
The following features may require manual edits to the exported YAML:
| Feature | Notes |
|---|---|
| Matrix builds | Not supported in the visual editor — add manually |
| Reusable workflows / templates | Platform-specific; add uses: steps manually |
Conditional steps (if:) | Add conditions manually after export |
| Artifact upload/download | Use platform-specific actions (e.g. actions/upload-artifact@v4) |
| Service containers | Add manually under services: |
| Caches | Add platform-specific cache actions manually |
