ci-pipeline-synthesizer
CI Pipeline Synthesizer
Overview
Generate production-ready GitHub Actions workflow files for library and package projects with automated build and test stages, dependency caching, and multi-version testing matrices.
Workflow
1. Identify Project Type
Determine the package ecosystem by examining project files:
- Node.js/npm:
package.jsonpresent - Python:
setup.py,pyproject.toml, orrequirements.txtpresent - Go:
go.modpresent - Rust:
Cargo.tomlpresent
2. Select Template
Use the appropriate template from assets/ based on project type:
github-actions-nodejs.yml- Node.js/npm packagesgithub-actions-python.yml- Python packagesgithub-actions-go.yml- Go modulesgithub-actions-rust.yml- Rust crates
3. Customize Configuration
Adapt the template to project-specific needs:
Test commands: Update test scripts to match project conventions
- Node.js:
npm test,npm run test:coverage - Python:
pytest,python -m unittest - Go:
go test ./... - Rust:
cargo test
Build commands: Adjust build steps if needed
- Node.js:
npm run build(if build step exists) - Python:
python -m build - Go:
go build - Rust:
cargo build --release
Version matrix: Modify tested versions based on support policy
- Node.js: LTS versions (16.x, 18.x, 20.x)
- Python: Active versions (3.9, 3.10, 3.11, 3.12)
- Go: Recent versions (1.21, 1.22)
- Rust: stable, beta (optional)
Trigger conditions: Adjust when pipeline runs
- Default: Push to main/master, all pull requests
- Custom: Specific branches, paths, or schedules
4. Place Workflow File
Create the workflow file at .github/workflows/ci.yml in the project root. If .github/workflows/ doesn't exist, create the directory structure first.
5. Verify Configuration
Check that the generated workflow:
- Uses appropriate actions versions (e.g.,
actions/checkout@v4,actions/setup-node@v4) - Includes dependency caching for faster builds
- Runs on appropriate triggers (push, pull_request)
- Tests against relevant version matrices
- Has clear job and step names
Template Features
All templates include:
- Dependency caching: Speeds up builds by caching package managers
- Matrix testing: Tests across multiple language/runtime versions
- Parallel execution: Runs tests for different versions concurrently
- Clear naming: Descriptive job and step names for easy debugging
- Best practices: Uses recommended actions and configurations
Customization Examples
Add code coverage reporting:
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
file: ./coverage.xml
Add linting step:
- name: Run linter
run: npm run lint # or: pylint, golangci-lint, cargo clippy
Restrict to specific branches:
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
Add scheduled runs:
on:
schedule:
- cron: '0 0 * * 0' # Weekly on Sunday
Tips
- Start with the template and customize incrementally
- Test the workflow by creating a pull request or pushing to a test branch
- Use
actions/cachefor dependencies to reduce build times - Keep matrix versions current with language support policies
- Add status badges to README.md:
