初めてGithub ActionsでCIとやらをやってみた

#CIとは？
そもそもCIとは何なのでしょうか。正直私も今回初めてCIを扱うので腑に落ちる理解はできていませんが、すごく簡単にいうと自動的にアプリが正常かどうかチェックしてくれるシステムかなと考えています。

#GitHub Actionsを利用してCIをセットアップできる
CIを行うには様々なツールが存在するみたいですが、Github Actionsを利用すると他のCIツールと同じようにプッシュやプルリクなどの操作をトリガーにして処理を実行させることができます。

#セットアップしてみよう
CIを導入したいプロジェクトのリポジトリに行くと画面上部にActionsというタブ？があるのでそれをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/e0492715-9ed8-ed88-082a-c0c66833c999.png" width=70%>
これをクリックするとワークフローをセットアップしようねみたいな画面が出てくるのでその中から自分が作成したプロジェクトの言語と一致するものを選びましょう。今回はAndroidなので以下のカードの`Set up this workflow`を選択すればOKです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/34fe1bb1-3cf5-819f-fe43-4e8958899e15.png" width=70%>

このボタンを押下すると以下のような画面が出てくるので、このエディタみたいな部分にワークフローを記述していきます。ワークフローとは何をトリガーにして処理を実行させるかなどのルールのことを意味します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/5141795e-75a6-d383-a457-ec86bddb6e01.png" width=70%>

#ワークフローを記述しよう
今回は以下のように書きました。

```yaml:ci.yml
name: CI

on:
  push:
    branches:
      - main
    paths-ignore:
      - docs/**
      - README.md
      - LICENSE
  pull_request:
    branches:
      - main
    paths-ignore:
      - docs/**
      - README.md
      - LICENSE

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    # チェックアウト
    - uses: actions/checkout@v2

    # JDKのセットアップ
    - name: set up JDK 11
      uses: actions/setup-java@v2
      with:
        distribution: 'zulu'
        java-version: '11'

    # Gradleのキャッシュ復元
    - uses: actions/cache@v2
      with:
        path: ~/.gradle/caches
        key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
        restore-keys: |
          ${{ runner.os }}-gradle-

    # 依存関係の出力
    - name: Displays the Android dependencies of the project
      run: ./gradlew androidDependencies

    # コンパイル
    - name: Run Compile
      run: ./gradlew assembleDebug
      
  test:
    runs-on: ubuntu-latest
    steps:
    # チェックアウト
    - uses: actions/checkout@v2

    # JDKのセットアップ
    - name: set up JDK 11
      uses: actions/setup-java@v2
      with:
        distribution: 'zulu'
        java-version: '11'

    # Gradleのキャッシュ復元
    - uses: actions/cache@v2
      with:
        path: ~/.gradle/caches
        key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
        restore-keys: |
          ${{ runner.os }}-gradle-

    # テスト
    - name: Test with Gradle
      run: ./gradlew test --stacktrace
        
  lint:
    runs-on: ubuntu-latest
    steps:
    # チェックアウト
    - uses: actions/checkout@v2

    # 静的解析
    - name: Run Inspection
      run: ./gradlew lint

    # 結果の表示
    - uses: yutailang0119/action-android-lint@v1
      with:
        xml_path: '**/build/reports/lint-results-*.xml'

    # アーティファクトへアップロード
    - name: Upload results Artifact
      uses: actions/upload-artifact@v2
      if: success() || failure()
      with:
        name: results
        path: |
          **/build/reports/lint-results-*.html
          **/build/reports/lint-results-*.xml
        if-no-files-found: error
        retention-days: 14
```

こんな感じになっていれば、成功です
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/5d997e52-07cc-63a9-4cbc-cd8c5cc4afab.png">


参考記事です：
[GitHub ActionsでAndroidアプリのCIを構築する方法](https://qiita.com/uhooi/items/70ffe67ba65d33189db2)