update homepage #53
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: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '.ruby-version' | |
| # Install all gems (both test and development) | |
| bundler-cache: true | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'npm' | |
| cache-dependency-path: | | |
| package-lock.json | |
| site/package-lock.json | |
| - name: Install dependencies | |
| run: | | |
| # Install root and site npm dependencies | |
| npm ci | |
| cd site && npm ci && cd .. | |
| # Make sure bundler is using the correct Ruby version | |
| ruby -v | |
| - name: Generate CSpell dictionaries from package lockfiles | |
| run: | | |
| bin/generate_lockfile_words | |
| - name: CSpell (Spellcheck) | |
| run: bin/spellcheck | |
| - name: Prettier (Formatting) | |
| run: bin/prettier --check | |
| - name: Tapioca (Verify RBI files) | |
| run: | | |
| # Add a few excluded gems to tapioca config (different RBI on Mac vs. Linux) | |
| ruby -r yaml -e ' | |
| CONFIG_FILE = "sorbet/tapioca/config.yml" | |
| config = YAML.load_file(CONFIG_FILE) | |
| config["gem"]["exclude"] += ["rack", "amazing_print"] | |
| config["gem"]["exclude"].sort!.uniq! | |
| File.write(CONFIG_FILE, config.to_yaml) | |
| ' | |
| bundle exec tapioca gems --verify | |
| bundle exec tapioca dsl --verify | |
| git checkout sorbet/tapioca/config.yml || true | |
| - name: Check for RBI changes | |
| run: | | |
| # Check if there are any uncommitted changes to RBI files | |
| git status --porcelain sorbet/rbi/ | |
| if [[ -n $(git status --porcelain sorbet/rbi/) ]]; then | |
| echo "Error: RBI files are out of date. Please run 'tapioca gems' and 'tapioca dsl' and commit the changes." | |
| git diff sorbet/rbi/ | |
| exit 1 | |
| fi | |
| - name: RuboCop (Linting/Formatting) | |
| run: bin/rubocop | |
| - name: Sorbet (Typecheck) | |
| run: bin/typecheck | |
| site: | |
| name: 'Next.js Site Tests' | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '.ruby-version' | |
| bundler-cache: true | |
| - name: Setup Node.js (site) | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'npm' | |
| cache-dependency-path: 'site/package-lock.json' | |
| - name: Install site dependencies | |
| run: cd site && npm ci | |
| - name: Export TypeScript types from LogStruct | |
| run: | | |
| scripts/export_typescript_types.rb | |
| - name: TypeScript type checking | |
| run: | | |
| cd site && npx tsc --noEmit | |
| - name: Run TypeScript tests | |
| run: | | |
| cd site && npm test | |
| pilot: | |
| name: 'Pilot Test: Ruby 3.4 / Rails 8.0' | |
| runs-on: ubuntu-22.04 | |
| env: | |
| RAILS_VERSION: '8.0' | |
| RUBY_VERSION: '3.4' | |
| CI: 'true' | |
| BUNDLE_WITHOUT: 'development' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Remove Gemfile.lock since we're changing Ruby and Rails versions | |
| - name: Remove Gemfile.lock for variable Ruby/Rails versions | |
| run: rm -f Gemfile.lock | |
| - name: Setup Ruby 3.4 | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: '3.4' | |
| bundler-cache: true | |
| - name: Run tests | |
| run: bin/test | |
| - name: Run Rails integration tests | |
| run: bin/rails_tests | |
| - name: Merge coverage reports | |
| run: bin/merge_coverage | |
| # Save coverage data as an artifact | |
| - name: Upload coverage reports | |
| uses: actions/upload-artifact@v4 | |
| if: success() | |
| with: | |
| name: coverage-ruby3.4-rails8.0 | |
| path: | | |
| coverage/ | |
| coverage_rails/ | |
| retention-days: 5 | |
| matrix: | |
| name: 'Tests: ${{ matrix.name }}' | |
| needs: [lint, pilot] | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: 'Ruby 3.2 / Rails 7.0' | |
| ruby: '3.2' | |
| rails: '7.0' | |
| - name: 'Ruby 3.3 / Rails 7.1' | |
| ruby: '3.3' | |
| rails: '7.1' | |
| env: | |
| RAILS_VERSION: ${{ matrix.rails }} | |
| RUBY_VERSION: ${{ matrix.ruby }} | |
| CI: 'true' | |
| BUNDLE_WITHOUT: 'development' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Remove Gemfile.lock since we're changing Ruby and Rails versions | |
| - name: Remove Gemfile.lock for variable Ruby/Rails versions | |
| run: rm -f Gemfile.lock | |
| - name: Setup Ruby ${{ matrix.ruby }} | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: ${{ matrix.ruby }} | |
| bundler-cache: true | |
| - name: Run Ruby tests | |
| run: bin/test | |
| - name: Run Rails integration tests | |
| run: bin/rails_tests |