SE(たぶん)の雑感記

一応SEやっている筆者の思ったことを書き連ねます。会計学もやってたので、両方を生かした記事を書きたいと考えています。 でもテーマが定まってない感がすごい。

ちゃちゃっとCodecov導入(個人リポジトリ)

最近個人でコード書いていまして。そちらにcodecovを導入したお話です。

リポジトリ

github.com

Salesforceの定義出力を頑張りたいなと思って作っています。途中なのでいろんなところが適当です。

Codecovとは

codecov.io

テストコードのカバレッジ率を出力してくれるサービスです。CIから発火することができるので、テストが起動するたびにカバレッジが取得できます。

良いところは公式ページを見てもらうとして、こういう部分かなと。

  • 導入がとても楽
  • バッジやグラフで状況が一目瞭然
  • Codecov側でより詳細なコードカバレッジが見れる
  • Slack連携もできる(未確認)

前提

私が作っていた環境はこのような感じです。

環境 状態
Git GitHub(パブリックリポジトリ
言語 TypeScript
テストフレームワーク jest
CI GitHub Actions

Node.jsのパッケージ作ろうとしている開発です。未完成です。

やったこと

Codecovに登録

公式ページに飛んでSign Upすると、GitHub、Bitbucket、GitLabのどれでサインインするか選ぶ画面になります。ここはGitHubを選択し、自分のリポジトリを選択します。組織を選択することもできるようです。

トークンをGitHubに登録

Codecovに登録し、リポジトリを選択します。すると、トークンが発行されます。

f:id:hiroronn:20200919184230p:plain

GitHubリポジトリページ -> Settings ->Secretsと移動します。そこに、CODECOV_TOKENという名前で、上記画像のUpload Tokenの値を登録しておきます。GitHub Actionsを使用する場合、STEP2の手順は不要です。

テストでカバレッジを出力するように変更

jestの設定を変えます。jest.config.jscollectCoverage: trueの設定を加えます。また、カバレッジの出力先を指定しておきます。

f:id:hiroronn:20200919184601p:plain

sfdxobject/jest.config.js at develop · piroron/sfdxobject · GitHub

GitHub ActionsにCodecovへのアップロード処理を追加

ググるといろんな内容が見つかりますが、今はGitHub Actionsでcodecov/codecov-action@v1というものが公開されているため、これを呼ぶだけです。tokenで先ほど指定したSecretsのキー、カバレッジ出力のディレクトリを指定しています。

github.com

f:id:hiroronn:20200919184926p:plain

コミットはこちら。

chnage action file · piroron/sfdxobject@96ed5bd · GitHub

バッジを表示する

これは、CodecovでURLを発行する方法が楽です。

Codecovでリポジトリ開く -> Settings -> Badgeと選んでいくと、Markdown、HTML、RSTにバッジ出力するためのコードが表示されます。

今回はREADME.mdに表示したかったので、markdownを選択してバッジを出しました。

f:id:hiroronn:20200919185554p:plain

ちゃんと出ます。

プルリクにカバレッジ表示

GitHub Apps - Codecov · GitHub

GitHub Appsにインストールすると、プルリクのコメントにカバレッジを表示してくれます。コメントを追加しただけのプルリクを作ると下記のように出てきます。カバレッジが変更されないので意味ないですが…参考として。

f:id:hiroronn:20200919190417p:plain

おわりに

楽ですね。これだけでいいとは…

実際は、GitHub Actionsの場合どうするのかあまり書いてなく、なんとなく書いたら動いた感じです。jestとTypeScript組み合わせた場合の話は無かったものの、設定自体は下記を見ました。

github.com

その他の言語についても下記に一覧があります。

docs.codecov.io

いきなり組織に導入しようとするのではなく、個人でまずはやってみることもできるので、これからテストをちゃんとやっていこうとする人などは試してみると楽しいと思います。