FAQ
FAQ Section
Frequently asked questions from newcomers to the Prow repository.
General Questions
What is Prow?
Prow is a Kubernetes-based Continuous Integration and Continuous Deployment (CI/CD) system. It provides automated testing, code review automation, and project management features for Kubernetes and other open-source projects.
Who maintains Prow?
The Kubernetes SIG Testing team maintains Prow. See the OWNERS file for the list of maintainers.
What programming language is Prow written in?
Primarily Go (94.7%), with some TypeScript (2.5%) for the Deck frontend.
How do I get started?
- Read the Overview
- Set up your development environment
- Try running some components
- Explore the codebase (Codebase Walkthrough)
Development Questions
How do I build the project?
# Build all components
make build
# Install to $GOPATH/bin
go install ./cmd/...
# Build specific component
go build ./cmd/hook
How do I run tests?
# Run all unit tests
make test
# Run specific package tests
go test ./pkg/hook/...
# Run integration tests
go test ./test/integration/...
How do I contribute?
See the Developing and Contributing to Prow guide for detailed instructions. In short:
- Fork the repository
- Create a feature branch
- Make your changes
- Test your changes
- Create a Pull Request
Component Questions
What is hook?
Hook is the webhook server that processes GitHub/Gerrit events and executes plugins. See the Hook documentation.
What is plank?
Plank is the controller that creates and manages Pods for ProwJobs. Note: Plank is deprecated in favor of prow-controller-manager.
What is Tide?
Tide automatically merges pull requests when all requirements are met. See the Tide documentation.
What is Deck?
Deck is the web UI for viewing job status, history, and results. See the Deck documentation.
What is Crier?
Crier reports job status back to GitHub, Gerrit, Slack, etc. See the Crier documentation.
Configuration Questions
How do I configure Prow?
Prow requires two main config files:
config.yaml- Main Prow configurationplugins.yaml- Plugin configuration
See the Configuration documentation for details.
How do I add a new job?
Add job definition to config.yaml:
presubmits:
myorg/myrepo:
- name: my-job
spec:
containers:
- image: alpine:latest
command: ["echo", "test"]
How do I enable a plugin?
Add plugin to plugins.yaml:
plugins:
myorg/myrepo:
- approve
- lgtm
Job Questions
What are the different job types?
- Presubmit: Run on pull requests
- Postsubmit: Run after code is merged
- Periodic: Run on a schedule (cron)
- Batch: Run multiple jobs in parallel
See the ProwJobs documentation for more details.
How do I trigger a job manually?
Use /test <job-name> comment on a PR.
How do I view job logs?
# Get Pod name
kubectl get pods
# View logs
kubectl logs <pod-name>
Plugin Questions
How do plugins work?
Plugins are Go packages that hook processes and executes based on events. See the Plugins documentation.
How do I create a custom plugin?
Create a new package in pkg/plugins/ and implement the plugin interface. See the Developing and Contributing to Prow guide.
What plugins are available?
See pkg/plugins/ directory for available plugins, or check the Plugins documentation.
Troubleshooting Questions
Jobs are not running
- Check ProwJob status:
kubectl get prowjobs - Check Pod status:
kubectl get pods - Review controller logs
- Verify configuration
Webhooks are not working
- Check hook logs
- Verify HMAC secret
- Check GitHub webhook configuration
- Test webhook delivery
Tide is not merging
- Check Tide logs
- Verify PR eligibility
- Check required labels
- Review branch protection
Deck is not loading
- Check Deck logs
- Verify config path
- Check network connectivity
- Review browser console
Architecture Questions
How does Prow work?
- GitHub sends webhook
- Hook processes webhook
- Plugins execute
- ProwJob created
- Controller reconciles ProwJob
- Plank creates Pod
- Pod executes job
- Status reported back
See the Architecture documentation for more details.
How are jobs executed?
Jobs execute as Kubernetes Pods. The controller manager creates Pods from ProwJob specs. See the Life of a Prow Job for details.
How does Tide work?
Tide monitors PRs and automatically merges them when all requirements are met. See the Tide documentation for details.
Contribution Questions
How do I find good first issues?
Look for issues labeled:
good first issuehelp wantedbeginner friendly
What makes a good PR?
- Clear description
- Focused changes
- Tests included
- Documentation updated
- All checks passing
How long does review take?
Typically 1-3 business days, depending on:
- PR size and complexity
- Reviewer availability
- Number of review rounds needed
Getting Help
Where can I ask questions?
- GitHub Issues: For bugs and feature requests
- Pull Requests: For code-related questions
- Slack: #sig-testing on Kubernetes Slack
- Documentation: Check the docs in this directory
How do I report a bug?
Create a GitHub issue with:
- Clear description
- Steps to reproduce
- Expected vs actual behavior
- Relevant logs/configs
- Environment information
How do I request a feature?
Create a GitHub issue with:
- Problem description
- Proposed solution
- Use cases
- Any alternatives considered
Still Have Questions?
- Check the documentation index
- Search existing GitHub issues
- Ask in #sig-testing on Kubernetes Slack
- Create a new issue with your question
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.