Show gem versions in CI failure output (#1984) #4427
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: Rspec test for gem | |
| on: | |
| push: | |
| branches: | |
| - 'master' | |
| paths-ignore: | |
| - '**.md' | |
| - 'docs/**' | |
| - 'packages/react-on-rails/src/**' | |
| - 'node_package/src/**' | |
| pull_request: | |
| paths-ignore: | |
| - '**.md' | |
| - 'docs/**' | |
| - 'packages/react-on-rails/src/**' | |
| - 'node_package/src/**' | |
| workflow_dispatch: | |
| jobs: | |
| detect-changes: | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| docs_only: ${{ steps.detect.outputs.docs_only }} | |
| run_lint: ${{ steps.detect.outputs.run_lint }} | |
| run_js_tests: ${{ steps.detect.outputs.run_js_tests }} | |
| run_ruby_tests: ${{ steps.detect.outputs.run_ruby_tests }} | |
| run_dummy_tests: ${{ steps.detect.outputs.run_dummy_tests }} | |
| run_generators: ${{ steps.detect.outputs.run_generators }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| # Fetch enough history for change detection (50 commits is usually sufficient for PRs) | |
| fetch-depth: 50 | |
| persist-credentials: false | |
| - name: Detect relevant changes | |
| id: detect | |
| run: | | |
| BASE_REF="${{ github.event.pull_request.base.sha || github.event.before || 'origin/master' }}" | |
| script/ci-changes-detector "$BASE_REF" | |
| shell: bash | |
| rspec-package-tests: | |
| needs: detect-changes | |
| # Run on master OR when Ruby tests needed on PR (but skip minimum deps on PR) | |
| if: | | |
| (github.ref == 'refs/heads/master' || needs.detect-changes.outputs.run_ruby_tests == 'true') | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Always run: Latest versions (fast feedback on PRs) | |
| - ruby-version: '3.4' | |
| dependency-level: 'latest' | |
| # Master only: Minimum supported versions (full coverage) | |
| - ruby-version: '3.2' | |
| dependency-level: 'minimum' | |
| env: | |
| BUNDLE_FROZEN: ${{ matrix.dependency-level == 'minimum' && 'false' || 'true' }} | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Ruby | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: ${{ matrix.ruby-version }} | |
| bundler: 2.5.9 | |
| - name: Print system information | |
| run: | | |
| echo "Linux release: "; cat /etc/issue | |
| echo "Current user: "; whoami | |
| echo "Current directory: "; pwd | |
| echo "Ruby version: "; ruby -v | |
| echo "Node version: "; node -v | |
| echo "Yarn version: "; yarn --version | |
| echo "Bundler version: "; bundle --version | |
| - name: run conversion script to use minimum supported dependency versions | |
| if: matrix.dependency-level == 'minimum' | |
| run: script/convert | |
| - name: Save root ruby gems to cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: vendor/bundle | |
| key: package-app-gem-cache-${{ hashFiles('Gemfile.lock') }}-${{ matrix.ruby-version }}-${{ matrix.dependency-level }} | |
| - name: Install Ruby Gems for package | |
| run: bundle check --path=vendor/bundle || bundle _2.5.9_ install --path=vendor/bundle --jobs=4 --retry=3 | |
| - name: Git Stuff | |
| if: matrix.dependency-level == 'minimum' | |
| run: | | |
| git config user.email "[email protected]" | |
| git config user.name "Your Name" | |
| git commit -am "stop generators from complaining about uncommitted code" | |
| - name: Set dependency level environment variable | |
| run: | | |
| echo "CI_DEPENDENCY_LEVEL=${{ matrix.dependency-level }}" >> $GITHUB_ENV | |
| - name: Run rspec tests | |
| run: bundle exec rspec spec/react_on_rails | |
| - name: Store test results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: main-rspec-${{ github.run_id }}-${{ github.job }}-ruby${{ matrix.ruby-version }}-${{ matrix.dependency-level }} | |
| path: ~/rspec | |
| - name: Store artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: main-test-log-${{ github.run_id }}-${{ github.job }}-ruby${{ matrix.ruby-version }}-${{ matrix.dependency-level }} | |
| path: log/test.log |