This directory contains all GitHub-specific configuration for the Anode project, including CI/CD workflows, issue templates, and automation.
.github/
├── workflows/ # GitHub Actions workflows
│ ├── ci.yml # Main CI pipeline
│ ├── release.yml # Release automation
│ ├── chaos.yml # Chaos testing
│ ├── bench.yml # Performance benchmarks
│ ├── k3d.yml # Kubernetes integration tests
│ ├── quality.yml # Code quality checks
│ ├── security.yml # Security auditing
│ ├── docs.yml # Documentation building
│ ├── stale.yml # Stale issue management
│ ├── labeler.yml # Automatic PR labeling
│ └── README.md # Workflow documentation
├── ISSUE_TEMPLATE/ # Issue templates
│ ├── bug_report.md # Bug report template
│ └── feature_request.md # Feature request template
├── PULL_REQUEST_TEMPLATE.md # PR template
├── dependabot.yml # Dependency update configuration
├── labeler.yml # Labeling rules
├── markdown-link-check.json # Link checker config
├── cspell.json # Spell checker config
└── README.md # This file
| Workflow | Trigger | Purpose | Duration |
|---|---|---|---|
| CI | Push, PR | Comprehensive testing & checks | ~30 min |
| Release | Tag (v*) | Build & publish releases | ~60 min |
| K3d | Push, PR | Kubernetes integration tests | ~45 min |
| Security | Daily, Dependencies | Security audits | ~20 min |
| Workflow | Trigger | Purpose | Duration |
|---|---|---|---|
| Quality | PR, Manual | Code quality analysis | ~30 min |
| Docs | Docs changes | Build documentation | ~15 min |
| Benchmarks | Push to main, Manual | Performance testing | ~90 min |
| Chaos | Nightly, Manual | Chaos engineering tests | ~60 min |
| Workflow | Trigger | Purpose |
|---|---|---|
| Stale | Daily | Manage inactive issues/PRs |
| Labeler | PR events | Auto-label PRs |
| Dependabot | Weekly | Update dependencies |
Standardized bug reporting with sections for:
- Bug description
- Reproduction steps
- Expected vs actual behavior
- Environment details
- Logs and configuration
- Possible solutions
Structured feature proposals including:
- Problem statement
- Proposed solution
- Alternative approaches
- Use cases
- Implementation ideas
- Priority level
- Contribution willingness
The PR template (PULL_REQUEST_TEMPLATE.md) ensures comprehensive PR descriptions:
- Description of changes
- Related issues (with auto-close syntax)
- Type of change (bug fix, feature, breaking, etc.)
- Testing performed
- Documentation updates
- Checklist of requirements
- Breaking changes and migration guide
- Performance impact
- Security considerations
- Deployment notes
Automated dependency updates for:
- Schedule: Weekly (Mondays, 9 AM UTC)
- Grouping: Related crates grouped together (tokio, serde, AWS SDK, etc.)
- Controls: Major version updates ignored for critical dependencies
- Limit: 10 open PRs max
- Schedule: Weekly
- Limit: 5 open PRs max
- Auto-labels:
dependencies,github-actions
- Path:
deploy/docker - Schedule: Weekly
- Limit: 5 open PRs max
PRs are automatically labeled based on changed files:
area/storage- Storage engine changesarea/raft- Raft consensus changesarea/s3- S3 API changesarea/protocol- Protocol definitionsarea/parquet- Parquet integrationarea/client- Client SDKarea/ci-cd- CI/CD workflowsarea/docker- Docker/containersarea/kubernetes- Kubernetes/Helmarea/tests- Test changesarea/chaos- Chaos testingarea/benchmarks- Performance benchmarks
documentation- Documentation changesdependencies- Dependency updatesconfiguration- Config file changes
size/xs- < 10 lines changedsize/s- < 100 lines changedsize/m- < 500 lines changedsize/l- < 1000 lines changedsize/xl- 1000+ lines changed
Validates links in documentation:
- Ignores localhost URLs
- Custom timeout and retry settings
- GitHub API headers
- Status code configuration
Spell checking configuration:
- Project-specific dictionary (Rust terms, Anode components)
- Ignore patterns (hashes, hex values)
- Excluded paths (target/, node_modules/)
- Regular expressions for technical content
CODECOV_TOKEN- Code coverage uploads (optional but recommended)GITHUB_TOKEN- Automatically provided by GitHub
None currently required. All configuration is in workflow files.
- Use Issue Templates: Create issues using provided templates
- Fill Out PR Template: Complete all sections of the PR template
- Wait for CI: All CI checks must pass before merge
- Review Labels: Check that auto-labels are correct
- Follow Conventions: Use conventional commit messages
- Review Security Alerts: Check daily security workflow results
- Monitor Chaos Tests: Review nightly chaos test results
- Track Performance: Monitor benchmark trends
- Manage Stale Items: Review and close stale issues appropriately
- Update Dependencies: Review and merge Dependabot PRs regularly
Add these badges to your README.md:
[](https://github.com/USERNAME/anode/actions/workflows/ci.yml)
[](https://github.com/USERNAME/anode/actions/workflows/security.yml)
[](https://github.com/USERNAME/anode/actions/workflows/chaos.yml)
[](https://codecov.io/gh/USERNAME/anode)- Check workflow file syntax (YAML validation)
- Verify trigger conditions match your action
- Check repository settings > Actions permissions
- Review branch protection rules
- Click on failed job for detailed logs
- Download artifacts for offline analysis
- Re-run jobs for transient failures
- Check for service outages (GitHub, Codecov, etc.)
- Clear cache via repository settings
- Update cache keys in workflow files
- Check disk usage on runners
- Verify cache restore/save logs
- Review Dependabot alerts in Security tab
- Check workflow run for detailed reports
- Download SARIF files for offline analysis
- Prioritize critical/high severity issues
- Create file in
.github/workflows/ - Use descriptive name (lowercase, hyphens)
- Include:
- Clear name and description
- Appropriate triggers
- Timeout settings
- Error handling
- Artifact uploads
- Cache configuration
- Test in fork first
- Update this README
- Edit files in
ISSUE_TEMPLATE/orPULL_REQUEST_TEMPLATE.md - Test with actual issues/PRs
- Gather feedback from contributors
- Iterate based on usage
- Edit
dependabot.yml - Adjust schedules, limits, or grouping
- Add/remove ecosystems as needed
- Test with manual trigger
Monitor project health via GitHub Insights:
- Actions usage and trends
- Dependency alerts
- Code frequency
- Contributor activity
Track these metrics:
- CI success rate
- Average run time
- Queue time
- Resource usage
Monitor code quality:
- Test coverage trends (Codecov)
- Security vulnerability count
- Dependency freshness
- Documentation coverage
When contributing workflow improvements:
- Fork the repository
- Create a feature branch
- Test workflows in your fork
- Submit PR with:
- Clear description of changes
- Before/after comparison
- Test results
- Updated documentation
For issues with workflows:
- Check workflow logs
- Review this documentation
- Search existing issues
- Create new issue with
area/ci-cdlabel
All workflow and configuration files are part of the Anode project and follow the same license (Apache 2.0 / MIT dual license).