Open Seo-4d696b75 opened 1 year ago
コードの品質を担保するためにLint(静的コード解析ツール)や自動テストの実行を習慣づけましょう 😎 今回はGitHub Actionsを利用してテストのワークフローを実行させます.
[!NOTE] Required(先に完了させましょう) なし Next(次に取り組みましょう) 必須課題 6 (XML) 11 (Compose) 任意課題 3 4 [!IMPORTANT] この課題は選択必須です ご自身で直接実装する代わりに作成済みのコードを利用する選択もできます
[!NOTE]
なし
[!IMPORTANT] この課題は選択必須です ご自身で直接実装する代わりに作成済みのコードを利用する選択もできます
ワークフローの起動タイミングは色々指定できるので、PRを出した時に自動で起動するよう設定します. もしLintやテストが失敗すればワークフローも失敗するので、PRをマージする前に異常に気付けます👍
↓完成イメージ↓ PRを出すと自動的に起動するワークフロー
Android Lintや単体テストの実行はAndroidStudioと同様にGradleタスクとして実行させますが、まずはワークフローでJavaを使える環境をセットアップします ☕️ GithHub Actionsのマーケケットプレイスで提供されている様々なアクションを利用すると、複雑な処理を簡単な呼び出しで実現できます!JDKのセットアップにはこちらのアクションを利用しましょう
Gradleタスク:lintもしくはlint${build_variant}
lint
lint${build_variant}
Androidアプリ開発に関する様々なバグの元を解析して教えてくれます
$ ./gradlew lintRelease
Gradleタスク:test${build_variant}UnitTest
test${build_variant}UnitTest
**/src/test/以下に定義したすべての単体テストを実行します
**/src/test/
$ ./gradlew testReleaseUnitTest
デフォルトではレビュワーの承認が無くても、GitHub Actionsで実行したLintやテストが失敗してもPRはマージできてしまいますが、こうした事故を未然に防ぐ仕組みがあります.
template/ci
.github/actions/check-pull-request/
.github/workflows/
こちらの作成済みブランチでは課題内容に加えて以下の機能が追加されています
コードの品質を担保するためにLint(静的コード解析ツール)や自動テストの実行を習慣づけましょう 😎 今回はGitHub Actionsを利用してテストのワークフローを実行させます.
課題内容
GitHub Actions
ワークフローの起動タイミングは色々指定できるので、PRを出した時に自動で起動するよう設定します. もしLintやテストが失敗すればワークフローも失敗するので、PRをマージする前に異常に気付けます👍
↓完成イメージ↓ PRを出すと自動的に起動するワークフロー
Android Lintや単体テストの実行はAndroidStudioと同様にGradleタスクとして実行させますが、まずはワークフローでJavaを使える環境をセットアップします ☕️ GithHub Actionsのマーケケットプレイスで提供されている様々なアクションを利用すると、複雑な処理を簡単な呼び出しで実現できます!JDKのセットアップにはこちらのアクションを利用しましょう
Android Lintの実行
Gradleタスク:
lint
もしくはlint${build_variant}
Androidアプリ開発に関する様々なバグの元を解析して教えてくれます
単体テストの実行
Gradleタスク:
test${build_variant}UnitTest
**/src/test/
以下に定義したすべての単体テストを実行しますブランチの保護ルール
デフォルトではレビュワーの承認が無くても、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にコメントしています)参考資料
作成済みのコードを利用する
template/ci
ブランチをmainまたは作業ブランチにmergeしてください.github/actions/check-pull-request/
以下のファイルすべてを.github/workflows/
以下に移動してくださいこちらの作成済みブランチでは課題内容に加えて以下の機能が追加されています