[RUBY] Rendre les tests rspec ratés visibles dans les annotations de vérification sur github

introduction

Pratique pour faire pivoter le flux CICD avec les actions Github! Mais lorsque rspec est cassé, il est difficile de trouver la partie d'erreur. J'espère que vous pouvez le voir sur Github Checks.

Pause

J'ai essayé de télécharger avec reviewdog, mais il n'y avait pas de format d'erreur pris en charge. https://github.com/reviewdog/reviewdog#available-pre-defined-errorformat

Quand je regardais la source en pensant que je pouvais faire un PR pour la soutenir, une proposition appelée «Reviewdog Diagnostic Format» a été proposée. https://github.com/reviewdog/reviewdog/tree/master/proto/rdf

Il semble préférable de traiter la sortie de rspec selon ce format plutôt que d'écrire un analyseur. Mais cela ne semble pas encore être la version officielle. SARIF a l'air bien. J'ai donc décidé de créer un formateur rspec selon le format d'entrée existant au lieu de RDFormat. https://github.com/reviewdog/reviewdog#input-format

Essayez de créer un prototype et réglez-le sur checkstyle, ce qui facilite la vérification du fonctionnement.

XML me manque.

Soudain

https://github.com/astronoka/rspec-checkstyle_formatter J'ai fait un formateur et en ai fait un bijou.

Lors de l'implémentation, le générateur / analyseur XML a une erreur avec le code de couleur ascii \ e [0; 34m" qui est généré avec une erreur telle que mysql Au fait, je me sens de plus en plus nostalgique lorsque j'obtiens une erreur à cause de cela.

Exemple de description dans les actions Github


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

comme ça.

image.png

reviewdog Great: scintille:

Je me demandais comment le passer au format pour linter Terminé.

Recommended Posts

Rendre les tests rspec ratés visibles dans les annotations de vérification sur github