Custom Workflows
Create workflow files with branch filtering, parallel jobs, and approval gates.
Airlock reads workflow files from .airlock/workflows/*.yml. You can create multiple workflow files — each one matches pushes based on branch patterns.
Creating a Workflow File
Create a new file in .airlock/workflows/:
# .airlock/workflows/feature.yml
name: Feature Branch Pipeline
on:
push:
branches:
- 'feature/**'
- 'fix/**'
jobs:
default:
name: Validate & Ship
steps:
- name: lint
uses: airlock-hq/airlock/defaults/lint@main
- name: freeze
run: airlock exec freeze
- name: test
uses: airlock-hq/airlock/defaults/test@main
- name: review
run: 'true'
require-approval: true
- name: push
uses: airlock-hq/airlock/defaults/push@main
- name: create-pr
uses: airlock-hq/airlock/defaults/create-pr@mainBranch Filtering
The on.push.branches field accepts glob patterns to control which pushes trigger this workflow. If multiple workflow files match a branch, all of them run. See the Workflow YAML Schema for all supported patterns.
Parallel Jobs
Split your workflow into parallel jobs using the needs keyword:
jobs:
lint:
name: Lint
steps:
- name: lint
uses: airlock-hq/airlock/defaults/lint@main
- name: freeze
run: airlock exec freeze
test:
name: Test
needs: [lint]
steps:
- name: test
uses: airlock-hq/airlock/defaults/test@main
describe:
name: Describe
needs: [lint]
steps:
- name: describe
uses: airlock-hq/airlock/defaults/describe@main
ship:
name: Ship
needs: [test, describe]
steps:
- name: review
run: 'true'
require-approval: true
- name: push
uses: airlock-hq/airlock/defaults/push@main
- name: create-pr
uses: airlock-hq/airlock/defaults/create-pr@mainIn this example, test and describe run in parallel after lint completes. ship waits for both to finish.
Approval Gates
Add require-approval: true to any step to pause the workflow for human review:
- name: review
run: 'true'
require-approval: trueThe Push Request moves to Awaiting Approval status. You review the results in the desktop app and click Approve to continue.
Continue on Error
Allow a step to fail without stopping the workflow:
- name: optional-check
run: npm run typecheck
continue-on-error: trueThe step is marked as failed in the Activity tab, but the workflow continues.
Shell Selection
By default, steps use sh. Specify a different shell with the shell property:
- name: build
run: |
source ~/.zshrc
nvm use
npm run build
shell: zshAvailable shells: sh, bash, zsh.
Related
- Workflows — Core workflow concepts
- Custom Steps — Write reusable steps
- Workflow YAML Schema — Full schema reference