数日前にCircleCIの中の人とCodecovの中の人によるWebinarがありました。
社内に今を共有するために、webinarと自分の知識をざっとまとめただけのものです。
アジェンダ
- 紹介
- CircleCI Orbsの紹介
- Codecovの紹介
- Codecov + CricleCI Orbs
- Q&A
CircleCI Orbsとは
orbs
は名詞であり、CircleCIの設定の再利用・共有可能と言った意味
CircleCI Orbs
はCircleCIで書いたパイプライン自動化処理(CI・CD)設定を世界に共有できる仕組み
時代背景
Github
ソースコードを世界に共有する仕組み
DockerHub
アプリケーションの構成環境を世界に共有する仕組み
CircleCI Orbs <= new
CircleCI上で動作するCI・CDの仕組みを世界に共有する仕組み
まとめ
別プロジェクトでは、テスト環境への自動デプロイや、本番環境へ納品ファイルの自動作成・アプリケーションの自動テストやソースコードの自動品質チェックなどの具体的な仕組みを世界に共有することができる。
逆に、データ統合処理のCI設定・AIプログラムの自動配備方法など、別分野のやり方は違うエンジニアが上げてくれればとても参考にできる。
CodeCovとは
年間数千万のカバレッジレポートがアップロードされる、コードカバレッジツールのリーディング企業。
アップロードされたカバレッジレポートを専用の管理画面でコードのテスト状況を視覚的に確認することができる
コードカバレッジとは
コードの品質を図る一つの指標。
テストされているコードの網羅率をを静的に解析することで、網羅率90%以上をめざす。Nuxtは一時期100%をキープしてました。
実際は、網羅率はチームごとに設定します
カバレッジの推移
ファイル別カバレッジ率
CodeCov & CircleCI
CircleCi Orbsを使用して、CodeCovにレポートを自動でアップロードするデモが始まります。まとめると、
CodeCovのorbs元ファイルが以下の形で用意されており
version: 2.1
description: Upload your coverage reports to Codecov without dealing with complex configurations. This orb helps you get coverage results quickly so that you can breathe easier and commit your code with confidence.
commands:
upload:
parameters:
conf:
description: Used to specify the location of the .codecov.yml config file
type: string
default: ".codecov.yml"
file:
description: Path to the code coverage data file to upload.
type: string
flags:
description: Flag the upload to group coverage metrics (e.g. unittests | integration | ui,chrome)
type: string
default: ""
token:
description: Set the private repository token (defaults to environment variable $CODECOV_TOKEN)
type: string
default: ${CODECOV_TOKEN}
upload_name:
description: Custom defined name of the upload. Visible in Codecov UI
type: string
default: ${CIRCLE_BUILD_NUM}
steps:
- run:
name: Upload Coverage Results
command: |
bash <(curl -s https://codecov.io/bash) \
-f << parameters.file >> \
-n << parameters.upload_name >> \
-t << parameters.token >> \
-y << parameters.conf >> \
-F << parameters.flags >> \
CircleCiの設定ファイルの方でcodecov orbsファイルを指定し、対象のカバレッジファイルを指定すると完了です。CodeCovへレポートをアップロードする際はトークンが必要になりますが、CircleCIの環境変数の方に、CODECOV_TOKEN
を設定すれば解決します。
version: 2.1
orbs:
codecov: codecov/codecov@1.0.2
jobs:
build:
steps:
- codecov/upload:
file: coverage.xml
flags: backend