[RUBY] Machen Sie fehlgeschlagene rspec-Tests in Prüfanmerkungen auf github sichtbar

Einführung

Bequem, um den CICD-Fluss mit Github-Aktionen zu drehen! Aber wenn rspec kaputt ist, ist es schwierig, den Fehlerteil herauszufinden. Ich hoffe, Sie können es auf Github Checks sehen.

Brechen

Ich habe versucht, mit reviewdog hochzuladen, aber es wurde kein Fehlerformat unterstützt. https://github.com/reviewdog/reviewdog#available-pre-defined-errorformat

Als ich mir die Quelle ansah und dachte, ich könnte eine PR machen, um sie zu unterstützen, wurde ein Vorschlag namens "Reviewdog Diagnostic Format" vorgeschlagen. https://github.com/reviewdog/reviewdog/tree/master/proto/rdf

Es scheint besser, die Ausgabe von rspec nach diesem Format zu verarbeiten, als einen Parser zu schreiben. Aber es scheint noch nicht die offizielle Version zu sein. SARIF sieht gut aus. Daher habe ich anstelle von RDFormat beschlossen, einen Formatierer für rspec gemäß dem vorhandenen Eingabeformat zu erstellen. https://github.com/reviewdog/reviewdog#input-format

Versuchen Sie, einen Prototyp zu erstellen, und stellen Sie ihn auf checkstyle ein, um die Funktionsweise zu überprüfen.

Ich vermisse XML.

Plötzlich

https://github.com/astronoka/rspec-checkstyle_formatter Ich habe einen Formatierer gemacht und daraus ein Juwel gemacht.

Während der Implementierung hat der XML-Builder / Parser einen Fehler aufgrund des ASCII-Farbcodes "\ e [0; 34m" ", der mit einem Fehler wie" MySQL "ausgegeben wird. Übrigens fühle ich mich immer nostalgischer, wenn ich dadurch einen Fehler bekomme.

Beschreibungsbeispiel in Github-Aktionen


name: CI

on: push

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Set up Ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.7.1

    - name: Restore gems
      uses: actions/cache@v2
      with:
        path: vendor/bundle
        key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
        restore-keys: |
          ${{ runner.os }}-gems-

    - name: Run rspec
      run: |
        bundle config path vendor/bundle
        bundle install --jobs 4 --retry 3
        bundle exec rspec \
          --no-fail-fast \
          --format RSpec::CheckstyleFormatter \
          --out /tmp/rspec_result.xml

    - name: Upload rspec result
      if: always()
      uses: actions/upload-artifact@v2
      with:
        name: rspec_result.xml
        path: /tmp/rspec_result.xml

    - name: Install reviewdog
      if: always()
      uses: reviewdog/action-setup@v1
      with:
        reviewdog_version: latest

    - name: Report rspec error
      if: always()
      env:
        REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: |
        cat /tmp/rspec_result.xml | reviewdog -name=rspec -f=checkstyle -reporter=github-check -filter-mode=nofilter

so was.

image.png

reviewdog Großartig: funkelt:

Während Sie sich fragen, wie Sie es im Format für Linter übergeben sollen Erledigt.

Recommended Posts

Machen Sie fehlgeschlagene rspec-Tests in Prüfanmerkungen auf github sichtbar