51 lines
1.3 KiB
Markdown
51 lines
1.3 KiB
Markdown
# ADR-0010: CI/CD Platform
|
|
|
|
## Status
|
|
Accepted
|
|
|
|
## Context
|
|
The platform needs a CI/CD system for:
|
|
- Automated testing on pull requests
|
|
- Code quality checks (linting, formatting)
|
|
- Building binaries and Docker images
|
|
- Publishing artifacts
|
|
- Running integration tests
|
|
|
|
Options considered:
|
|
1. **GitHub Actions** - Native GitHub integration
|
|
2. **GitLab CI** - If using GitLab
|
|
3. **Jenkins** - Self-hosted option
|
|
4. **CircleCI** - Cloud-based CI/CD
|
|
|
|
## Decision
|
|
Use **GitHub Actions** for CI/CD pipeline.
|
|
|
|
**Rationale:**
|
|
- Native integration with GitHub repositories
|
|
- Free for public repos, reasonable for private
|
|
- Rich ecosystem of actions
|
|
- Easy to configure with YAML
|
|
- Good documentation and community support
|
|
- Recommended in playbook.md
|
|
|
|
## Consequences
|
|
|
|
### Positive
|
|
- Easy setup and configuration
|
|
- Good GitHub integration
|
|
- Large action marketplace
|
|
- Free for public repositories
|
|
|
|
### Negative
|
|
- Tied to GitHub (if migrating Git hosts, need to migrate CI)
|
|
- Limited customization compared to self-hosted solutions
|
|
|
|
### Implementation Notes
|
|
- Create `.github/workflows/ci.yml`
|
|
- Use `actions/setup-go@v5` for Go setup
|
|
- Configure caching for Go modules
|
|
- Run: linting, unit tests, integration tests, build
|
|
- Use `actions/cache@v4` for module caching
|
|
- Add build matrix if needed for multiple Go versions (future)
|
|
|