はじめに
こんにちは、Gakken LEAP のバックエンドエンジニアの mizuno です。
以前にGitLabのartifacts reportsを設定する で codequality を実装しました。
codequality を使い始めたのですが、実行時間が少し長いため、Rubocop と Brakeman を別々に分けて同時に実行し、速度を上げたいと思いました。
また、reviewdog を使って GitLab のマージリクエストにコメントを追加できることが分かったので、こちらも実装してみました。
reviewdog の下準備
APIトークンの発行
reviewdogを導入するにあたり、APIトークンが必要になるため、
個人アクセストークンの作成、プロジェクトアクセストークンの作成を参考にしつつ、どちらかでAPIアクセストークンを発行しトークンを控えます。
プロジェクトの環境変数にREVIEWDOG_GITLAB_API_TOKEN
というキー名にして、発行したトークンを登録します。
reviewdogのインストール
共通して、before_script
でreviewdogのインストールとgitをインストールします。
Rubocopの例
rubocop:
image: registry.gitlab.com/pipeline-components/rubocop:latest
stage: test
variables:
GIT_STRATEGY: clone
GIT_DEPTH: 0
before_script:
- wget -O - -q https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s
- apk add git
script:
- rubocop | bin/reviewdog -f=rubocop -reporter=gitlab-mr-discussion
Brakemanの例
action-brakemanの script.sh
を参考にし、script
に実装しました。
brakeman:
image: ruby:3.3-alpine
stage: test
variables:
GIT_STRATEGY: clone
GIT_DEPTH: 0
before_script:
- wget -O - -q https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s
- apk add git
- gem install brakeman
script:
- brakeman --quiet --format tabs | bin/reviewdog -f=brakeman -reporter=gitlab-mr-discussion
brakmanのimageにgitをインストールできなかったため、ruby:3.3-alpine
で代用しています。
動作確認
Rubocop
- 省略記法の検知
Brakeman
- SQLインジェクションの検知
まとめ
同時にjobが実行され高速になり、またマージリクエストの変更画面でも修正箇所が分かりやすくなり便利になりました。
reviewdog -list
で使用可能なフォーマットは確認できるので、対応しているフォーマットがある場合はぜひ使ってみて下さい。
Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
https://gakken-leap.co.jp/recruit/