What is Pipelines as Code?
Pipelines as Code (PAC) is an opinionated CI/CD solution for Tekton and OpenShift Pipelines that allows you to define and manage your pipelines directly from your source code repository. It integrates with multiple Git providers:- GitHub (via GitHub App & Webhook)
- GitLab (Webhook)
- Forgejo (Webhook - Tech Preview)
- Bitbucket Cloud & Data Center (Webhook)
Project Architecture
PAC consists of three main components:- Controller: Processes Git webhook events, validates permissions, and creates PipelineRuns
- Watcher: Monitors PipelineRun status and reports back to Git providers
- Webhook: Receives webhook events from Git providers (runs as part of the controller)
Ways to Contribute
Code Contributions
- Bug fixes: Fix issues reported in GitHub
- New features: Add support for new providers, annotations, or workflows
- Performance improvements: Optimize controller logic, reduce memory usage
- Refactoring: Improve code quality and maintainability
Documentation
- User guides: Help users understand features
- API documentation: Document CRDs and configuration options
- Examples: Share real-world pipeline configurations
- Blog posts: Write about your PAC experience
Testing
- Write tests: Improve test coverage for edge cases
- Report bugs: File detailed bug reports with reproduction steps
- E2E testing: Help test against different Git providers
Community Support
- Answer questions: Help users on Slack or GitHub Discussions
- Review PRs: Provide feedback on pull requests
- Mentor contributors: Help onboard new contributors
Code of Conduct
Before contributing, please read our Code of Conduct. We are committed to providing a welcoming and inclusive environment for all contributors.Getting Started
Read the documentation
Familiarize yourself with PAC by reading the user documentation.
Set up your development environment
Follow the Development Setup guide to configure your local environment.
Find an issue to work on
Browse good first issues or help wanted issues.
Submit your contribution
Create a pull request following our contribution workflow.
Contribution Workflow
- Fork the repository and clone it locally
- Create a feature branch from
main: - Make your changes and add tests
- Run quality checks:
- Commit your changes following conventional commits
- Push to your fork:
- Open a pull request with a clear description
Development Tools
We use several tools to maintain code quality:- golangci-lint: Go code linting
- yamllint: YAML file validation
- markdownlint: Markdown documentation linting
- ruff: Python code formatting and linting
- shellcheck: Shell script validation
- vale: Grammar and style checking for docs
- codespell: Spell checking
- pre-commit: Git hooks to catch issues before pushing
Testing Requirements
All code contributions must include appropriate tests. We use
gotest.tools/v3 for unit tests (never testify).Test Types
-
Unit tests: Test individual functions and packages
-
E2E tests: Test full workflows against real Git providers
-
Coverage reports: Generate HTML coverage reports
AI Assistance Disclosure
If you used AI assistance:- Check the appropriate boxes in the PR template’s ”🤖 AI Assistance” section
- Specify which LLM was used (GitHub Copilot, ChatGPT, Claude, etc.)
- Indicate the extent of assistance (code generation, documentation, etc.)
- Add
Co-authored-bytrailers to commit messages when AI significantly contributed:
Target Architecture
PAC targets both arm64 and amd64 architectures. When contributing:- Ensure Docker images support both architectures
- Test on arm64 when possible (dogfooding runs on arm64)
- Use multi-arch base images in Dockerfiles
Communication Channels
Getting Help
- GitHub Discussions: Ask questions
- Slack: Join #pipelinesascode on TektonCD Slack
- Issues: Report bugs
Staying Updated
- Releases: Follow GitHub releases
- Dev docs: Check nightly docs for latest changes
Next Steps
Development Setup
Set up your local development environment
Architecture
Understand the PAC architecture and components
Testing Guide
Learn how to write and run tests
Release Process
Understand how releases are created