name: CI on: pull_request: push: branches: [ main ] jobs: scan_ruby: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Scan for common Rails security vulnerabilities using static analysis run: bin/brakeman --no-pager - name: Scan for known security vulnerabilities in gems used run: bin/bundler-audit scan_js: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Scan for security vulnerabilities in JavaScript dependencies run: bin/importmap audit lint: runs-on: ubuntu-latest env: RUBOCOP_CACHE_ROOT: tmp/rubocop steps: - name: Checkout code uses: actions/checkout@v6 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Prepare RuboCop cache uses: actions/cache@v4 env: DEPENDENCIES_HASH: ${{ hashFiles('.ruby-version', '**/.rubocop.yml', '**/.rubocop_todo.yml', 'Gemfile.lock') }} with: path: ${{ env.RUBOCOP_CACHE_ROOT }} key: rubocop-${{ runner.os }}-${{ env.DEPENDENCIES_HASH }}-${{ github.ref_name == github.event.repository.default_branch && github.run_id || 'default' }} restore-keys: | rubocop-${{ runner.os }}-${{ env.DEPENDENCIES_HASH }}- - name: Lint code for consistent style run: bin/rubocop -f github test: runs-on: ubuntu-latest # services: # redis: # image: valkey/valkey:8 # ports: # - 6379:6379 # options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout code uses: actions/checkout@v6 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: bundler-cache: true - name: Install SQLite3 CLI run: sudo apt-get update && sudo apt-get install -y sqlite3 - name: Set up database env: RAILS_ENV: test run: bin/rails db:create db:migrate - name: Run tests env: RAILS_ENV: test # RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} # REDIS_URL: redis://localhost:6379/0 run: bin/rails test # system-test: # runs-on: ubuntu-latest # # # services: # # redis: # # image: valkey/valkey:8 # # ports: # # - 6379:6379 # # options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5 # steps: # - name: Checkout code # uses: actions/checkout@v6 # # - name: Set up Ruby # uses: ruby/setup-ruby@v1 # with: # bundler-cache: true # # - name: Install SQLite3 CLI # run: sudo apt-get update && sudo apt-get install -y sqlite3 # # - name: Set up database # env: # RAILS_ENV: test # run: bin/rails db:create db:migrate # # - name: Run System Tests # env: # RAILS_ENV: test # # RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} # # REDIS_URL: redis://localhost:6379/0 # run: bin/rails test:system # # - name: Keep screenshots from failed system tests # uses: actions/upload-artifact@v4 # if: failure() # with: # name: screenshots # path: ${{ github.workspace }}/tmp/screenshots # if-no-files-found: ignore