このとおりですが,
siderがサービス終了するらしいです.
今まで個人プロジェクトでも,会社のプロジェクトでも結構お世話になってきました.使い始めた頃は,まだSideCIという名前で,会社名もアクトキャットという名前だった気がしますが,感慨深い.
とりあえず使えなくなるので,移行します.
reviewdogに移し替える
siderで動かしていたものはほぼreviewdogに移し替える. 後述するが,他のSaaSもいくつか使ったことはあるのだが,どうしても実行環境をこちらで制御しきれないという問題が残る.何が困るかと言うと,手元ではlintが動いているにも関わらず,CIでは失敗するという状態が発生したりする.これは必要なツールを入れられなかったり,何かしらのバージョンが手元と違っていたりする場合によく起こる.
例えばsiderでもstylelintの14.x系がいつになっても使えず,ずっと13系で動いていたりしたので,エラーが出続けていたりした.
こういうのがあるので,できるだけ実行環境をコントロールできて,実行ログも見える形のものを求めた結果,reviewdogに落ち着いた. GitHub Actionsが出て以降,これをActionsで実行するのが非常にコストが低く,PRコメントにも特別な権限を要さないあたりがとても良い.
eslint, stylelint
公式で
こういうのも用意されているが,あえてこれは使わずに自分で書いている.
name: reviewdog on: pull_request: jobs: eslint: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: actions/setup-node@v3 with: node-version: 16 - name: Install run: | yarn install - uses: reviewdog/action-setup@v1 - name: Run eslint env: REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} run: | yarn run lint:eslint | reviewdog -f=eslint -reporter=github-pr-review -filter-mode=diff_context -fail-on-error=true
reviewdogはシンプルなCLIだし,action-eslintを使ったからと言って,そこまで行数が減るわけではない. また,一部yarn workspaceを使っているプロジェクトがあり,この場合はaction-eslintを使うとかえって複雑になるので,これで統一している.
-filter-mode
はdiff_context
が一番好みだった.デフォルトだとaddedになっているけど,もう少し広く見てもらえるほうが好み.
golang
golangci-lintのCLIを自分で入れなきゃいけないのがちょっと面倒. そのくらいであとはほとんど同じだった.
name: reviewdog on: pull_request: jobs: golangci-lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@master - uses: actions/setup-go@v2 with: go-version: '^1.16.0' - uses: reviewdog/action-setup@v1 - name: Install golangci-lint run: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.47.2 golangci-lint --version - name: Run golangci-lint env: REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} run: | golangci-lint run --timeout 3m | reviewdog -f=golangci-lint -reporter=github-pr-review -filter-mode=diff_context -fail-on-error=true
ちょっと気になったのは,golangci-lintが結構遅かったこと……なぜかわからないけど,手元でもActionsでも,デフォルトの1minタイムアウトだとオーバーしてしまったので,これを伸ばしている. そこまで劇的に遅いわけじゃないので真面目に調べる気力がない…….これが普通なんだろうか.
一部はhoundciを使っている
今回移したのはjsとgolangのプロジェクトのみ.というかもともとSiderで使っていたのはこれだけだった.
一部Rubyのプロジェクトはもともとhoundciを使っており,これらはまだ移行していない.あと,最近Rubyあんまり書かないので気づくタイミングがない…….
reviewdogにcredoがほしい
たまにElixirのコードを書くことがあるんだけど,credoを実行してくれるCIがほぼなかったので,現代であればActions+reviewdogでかなり楽にできるんじゃないか!と思った.のだが,reviewdogのformatにcredoは存在しない. 一応flycheckを経由してパースさせているactionはあるのだが,現状ほぼこれしか選択肢はないみたい.
formatにcredoが追加されると最高なんだけどなぁ.