🚀

Launchable Advent Calendar 4日目 - record build command

2022/12/04に公開

Launchableの各機能の利用方法を紹介する Launchable Advent Calendar 4日目です。

はじめに

4日目はLaunchableへBuildデータを送る launchable record build コマンドについて紹介します。

自身のリポジトリで試していただくのをお勧めしますが、適当なリポジトリがない場合は Konboi/launchable-java-exampleをforkしてご利用ください。
今後、本Advent Calendarでは基本的にKonboi/launchable-java-exampleリポジトリを使って説明していきます。

launchable record build

launchable record build は対象ソフトウェアのビルド情報と開発に使っているリポジトリのコミット情報をLaunchableへ送るコマンドになります。

基本的な使い方はこのようになります。

launchable record build --name <BUILD NAME>

--name オプションが必須オプションとなります。
基本的に --name オプションへはユニークな値を指定することを推奨しています。

GitHub Actionsであれば GITHUB_RUN_ID 、Jenkinsであれば BUILD_TAG 。その他環境ではこちらを参考に指定して下さい。

GitHub Actionsでの例

Day 3のGithub Actionsの例に launchable record build コマンドの設定を追加します。

追加する点は大きく2つです。

1点目はフルクローンを行うように actions/checkout へ設定の追加。
Launchableでは失敗しやすいテストの選定(PTS)にテスト結果だけではなく、ファイルの変更情報も利用します。変更情報をリポジトリから取得するためにフルクローンをしてもらう必要があります。

2点目は launchable record build コマンドの追加です。先ほど紹介した様に --name オプションに GITHUB_RUN_ID を使用しています。

ci.yaml
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v3
+        with:
+          fetch-depth: 0
       - uses: actions/setup-python@v4
         with:
           python-version: "3.10"

...

           pip install launchable
       - name: verify
         run: launchable verify
+      - name: record build
+        run: launchable record build --name ${GITHUB_RUN_ID}

設定が問題なく行えればWeb AppのBuildsページに送ったビルド情報が反映されているのが確認できます。

他リポジトリに影響を受ける環境

開発環境によっては他のリポジトリをサブモジュールとして読み込んでいる。microservicesな環境で他のmicroserviceの変更が自身のサービスへ影響を与えるなど、他リポジトリの変更がテストへ影響を与える場合があります。

他リポジトリに変更があった場合に影響を受けやすいテストがPTSで選べる様に launchable record build コマンドではsubmoduleのリポジトリのコミット情報も送るようになっています。

しかし、microservicesな環境などでは他serviceのリポジトリをsubmoduleとして登録することは多くないかもしれません。

launchable record build コマンドでは --src オプションを利用することで関係するリポジトリのコミット情報を複数送ることが出来ます。

この様に利用します。--src に渡すリポジトリのパスは .git ディレクトリがあるパスを指定する必要があります。

launchable record build --name <BUILD NAME> --src . --src /repoA/path --src /repoB/path

フルクローンが難しい環境

環境によってはリポジトリが巨大なため都度フルクローンする事が難しい場合があります。その場合は --no-commit-collection オプションを使うことでコミット情報を送る処理をスキップできます。
ただし、別途コミット情報を送る必要があります。

launchable record build --name <BUILD NAME> --no-commit-collection

さいごに

本日はlaunchableコマンドのひとつ launchable record build コマンドについて紹介しました。
5日目はテスト結果をLaunchableへ送るためのコマンド launchable record tests コマンドについて紹介します。

Discussion