Repository navigation
[CI] Workflow #19
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| branches: | |
| - '**' | |
| jobs: | |
| test: | |
| name: Run Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Copy example config files | |
| run: | | |
| cp config/examples/secrets.yml config/secrets.yml | |
| cp config/examples/database-docker.yml config/database.yml | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Cache Docker layers | |
| uses: actions/cache@v4 | |
| with: | |
| path: /tmp/.buildx-cache | |
| key: ${{ runner.os }}-buildx-${{ hashFiles('**/Gemfile.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-buildx- | |
| - name: Build Docker images | |
| run: | | |
| docker compose build --build-arg BUILDKIT_INLINE_CACHE=1 | |
| env: | |
| DOCKER_BUILDKIT: 1 | |
| COMPOSE_DOCKER_CLI_BUILD: 1 | |
| - name: Start services | |
| run: | | |
| docker compose up -d db redis web | |
| - name: Wait for database to be ready | |
| run: | | |
| echo "Waiting for database to be ready..." | |
| for i in {1..30}; do | |
| if docker compose exec -T db mysqladmin ping -h localhost --silent; then | |
| echo "Database is ready!" | |
| break | |
| fi | |
| echo "Waiting for database... ($i/30)" | |
| sleep 2 | |
| done | |
| - name: Wait for Redis to be ready | |
| run: | | |
| echo "Waiting for Redis to be ready..." | |
| for i in {1..30}; do | |
| if docker compose exec -T redis redis-cli ping | grep -q PONG; then | |
| echo "Redis is ready!" | |
| break | |
| fi | |
| echo "Waiting for Redis... ($i/30)" | |
| sleep 2 | |
| done | |
| - name: Create and prepare test database | |
| run: | | |
| docker compose exec -T -e RAILS_ENV=test web bin/rails db:create db:test:prepare | |
| - name: Run RSpec tests | |
| run: | | |
| docker compose exec -T -e RAILS_ENV=test web bundle exec rspec --format progress | |
| - name: Show test logs on failure | |
| if: failure() | |
| run: | | |
| echo "=== Web service logs ===" | |
| docker compose logs web | |
| echo "=== Database service logs ===" | |
| docker compose logs db | |
| echo "=== Redis service logs ===" | |
| docker compose logs redis | |
| - name: Cleanup | |
| if: always() | |
| run: | | |
| docker compose down -v |