In your .cigen/config.yml:
providers:
- woodpecker # For Gitea push
- circleci # For GitHub push (optional)cargo run --bin cigen -- generate --config /path/to/docspring/.cigenThis generates:
.woodpecker/main.yaml.woodpecker/package_updates.yaml.woodpecker/staging_postman_tests.yaml
cd /path/to/docspring
git add .woodpecker/
git commit -m "Add Woodpecker CI configuration"
git push git@git.home.ndbroadbent.com:DocSpring/docspring.gitWoodpecker will automatically detect and run .woodpecker/*.yaml files.
✅ 43 jobs from DocSpring config converted to Woodpecker steps ✅ Services automatically collected (postgres, redis, minio) ✅ Step names for readable CI logs ✅ Multiple workflows as separate YAML files ✅ Environment variables preserved ✅ Container images properly mapped
# .woodpecker/main.yaml
services:
postgres:
image: postgres:16
redis:
image: redis:7
minio:
image: minio/minio:RELEASE.2025-06-26T18-44-10Z
steps:
- name: Remove non-production gems
image: build_libs
commands:
- bundle config set --local without 'development test debugging'
- bundle clean --force
- name: Docker Login
image: build_libs
commands:
- echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
# ... 700+ more linesYour Woodpecker workers need:
- Docker access - For running container images
- Git access - To clone from Gitea
- Environment variables - DockerHub credentials, etc.
- Network access - To pull images and access services
You can test Woodpecker configs locally with the Woodpecker CLI:
# Install Woodpecker CLI
go install go.woodpecker-ci.org/woodpecker/v2/cmd/cli@latest
# Test a workflow
woodpecker-cli exec --local .woodpecker/main.yamlOnce you add both providers, you can:
Push to GitHub → CircleCI runs
git push origin mainPush to Gitea → Woodpecker CI runs
git push git@git.home.ndbroadbent.com:DocSpring/docspring.git mainSame config, different CI providers!
These will be added in future updates:
- Matrix builds (parallelism: 12 not yet supported)
- Native Woodpecker cache plugins
- Advanced when conditions (path filters, etc.)
- Step dependencies for parallel execution
For now, all steps run sequentially in the order defined.
Check that services are available before steps run:
when:
- event: pushAdd them to Woodpecker repo settings or use secrets:
environment:
DATABASE_URL: postgres://postgres@postgres:5432/testWoodpecker runs steps sequentially by default. Dependencies are managed through the depends_on field (not yet implemented in cigen).
To enhance the Woodpecker integration:
- Add matrix build support for parallelism
- Implement Woodpecker cache plugins
- Add
whenconditions for selective execution - Support
depends_onfor parallel workflows
Current provider is production-ready for sequential workflows with services!