This document covers the continuous integration pipeline, automated testing strategy, and code quality enforcement mechanisms for the Solid::Process framework. It details the GitHub Actions workflows, multi-version compatibility testing, code formatting standards, and quality gates that ensure consistent code quality and reliable releases.
For information about setting up the development environment locally, see Project Setup and Development Environment. For details about testing individual processes and components, see Testing Patterns and Best Practices.
The Solid::Process framework uses GitHub Actions for continuous integration with a multi-job pipeline that ensures code quality and compatibility across Ruby and Rails versions.
Sources: .github/workflows/main.yml1-58
| Job Component | Configuration | Purpose |
|---|---|---|
| Test Matrix | Ruby 2.7-3.3 + head | Compatibility across Ruby versions |
| Rails Matrix | 6.0, 6.1, 7.0, 7.1, edge | Rails framework compatibility |
| Standard Check | Ruby 3.2 | Code formatting enforcement |
| Coverage Report | Ruby 3.2, main branch only | Code coverage tracking |
The pipeline uses conditional execution based on Ruby version compatibility requirements for different Rails versions.
Sources: .github/workflows/main.yml14-42 Appraisals1-33
The framework uses Ruby Standard for consistent code formatting and style enforcement. Standard provides opinionated Ruby style rules without configuration overhead.
Sources: .standard.yml1-6 .rubocop.yml1-4
The CI pipeline enforces code quality through multiple gates:
standard job runs on every pull request and pushbundle installSources: .github/workflows/main.yml46-57 .github/workflows/main.yml43-44
The framework uses the Appraisal gem to test against multiple Rails versions while maintaining Ruby version compatibility constraints.
Sources: Appraisals1-33
| Ruby Version | Rails 6.0 | Rails 6.1 | Rails 7.0 | Rails 7.1 | Rails Edge |
|---|---|---|---|---|---|
| 2.7 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 3.0 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 3.1 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 3.2 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 3.3 | ✅ | ✅ | ✅ | ✅ | ✅ |
| head | ❌ | ❌ | ❌ | ✅ | ✅ |
The matrix is enforced through conditional execution in the CI workflow using if conditions on Ruby version values.
Sources: .github/workflows/main.yml30-42
The framework provides development scripts that align with CI requirements:
Sources: bin/setup1-9 bin/console1-12
The .gitignore configuration ensures CI artifacts and development files don't interfere with version control:
/.bundle/, /pkg/, gemfiles/*.lock/.yardoc, /_yardoc/, /doc//coverage/, /spec/reports//tmp/, .ruby-versionSources: .gitignore1-16
Code coverage reporting is integrated with CodeClimate and runs conditionally:
paambaati/codeclimate-action@v5CC_TEST_REPORTER_ID secretThe coverage step uses the CC_TEST_REPORTER_ID environment variable to authenticate with CodeClimate services.
Sources: .github/workflows/main.yml18 .github/workflows/main.yml43-44
Sources: .github/workflows/main.yml10-58
This comprehensive CI/CD setup ensures code quality, compatibility, and reliability across the supported Ruby and Rails ecosystem while maintaining fast feedback loops for developers.
Refresh this wiki