yumemi-inc / android-training-template

Apache License 2.0
13 stars 2 forks source link

CIの設定 #2

Open Seo-4d696b75 opened 1 year ago

Seo-4d696b75 commented 1 year ago

コードの品質を担保するためにLint(静的コード解析ツール)や自動テストの実行を習慣づけましょう 😎 今回はGitHub Actionsを利用してテストのワークフローを実行させます.

[!NOTE]

Required(先に完了させましょう)

なし

Next(次に取り組みましょう)

  • 必須課題
    • 6 (XML)

    • 11 (Compose)

  • 任意課題
    • 3

    • 4

[!IMPORTANT]
この課題は選択必須です
ご自身で直接実装する代わりに作成済みのコードを利用する選択もできます

課題内容

GitHub Actions

ワークフローの起動タイミングは色々指定できるので、PRを出した時に自動で起動するよう設定します. もしLintやテストが失敗すればワークフローも失敗するので、PRをマージする前に異常に気付けます👍

↓完成イメージ↓ PRを出すと自動的に起動するワークフロー image

Android Lintや単体テストの実行はAndroidStudioと同様にGradleタスクとして実行させますが、まずはワークフローでJavaを使える環境をセットアップします ☕️ GithHub Actionsのマーケケットプレイスで提供されている様々なアクションを利用すると、複雑な処理を簡単な呼び出しで実現できます!JDKのセットアップにはこちらのアクションを利用しましょう

Android Lintの実行

Gradleタスク:lintもしくはlint${build_variant}

Androidアプリ開発に関する様々なバグの元を解析して教えてくれます

$ ./gradlew lintRelease

単体テストの実行

Gradleタスク:test${build_variant}UnitTest

**/src/test/以下に定義したすべての単体テストを実行します

$ ./gradlew testReleaseUnitTest

ブランチの保護ルール

デフォルトではレビュワーの承認が無くても、GitHub Actionsで実行したLintやテストが失敗してもPRはマージできてしまいますが、こうした事故を未然に防ぐ仕組みがあります.

ルールの追加方法 1. PR画面中の「Add rule」ボタンを押下 2. ルールを設定します - Branch name pattern デフォルトブランチを指定します - ✅ Require a pull request before merging PRなしでデフォルトブランチにマージできないよう制限します 加えてレビュワーの承認を1件以上受けないとマージできないよう「Require approvals」にも✅を入れて設定します - ✅ Require status checks to pass before merging Lintとテストが成功しないとマージできないよう制限します 🔍検索バーにワークフローの名前を入力して対象を選択します(❗️実行済みのワークフローしか出てこないので注意❗️) 3. 「Create」ボタン押下
保護ルールを設定すると... レビュワーの承認(approve)が無いとマージできない テストが失敗するとマージできない (画像はdangerを利用して失敗したテストの場所をPRにコメントしています)

参考資料

作成済みのコードを利用する

  1. template/ciブランチをmainまたは作業ブランチにmergeしてください
  2. .github/actions/check-pull-request/以下のファイルすべてを.github/workflows/以下に移動してください

こちらの作成済みブランチでは課題内容に加えて以下の機能が追加されています