🤖

Android Lint の結果を GitHub Pages へデプロイ

2024/02/22に公開

事前にリポジトリの設定で Pages の source を「GitHub Actions」にしておく必要があります。また GitHub の Free プランだと private リポジトリでは GitHub Pages が使えないので注意。

GitHub Pages は1つのリポジトリあたり1つのコンテンツしかホスティングできない(例えばプルリク毎にレポートを作ってしまうと、最新の1件のレポートとなってしまう)ので、デフォルトブランチもしくはメインで利用するブランチへの push 時に、当該ブランチのレポートを作成するのがよさそうです。今回は Android Lint のみのレポートを GitHub Pages へデプロイするワークフローを紹介しますが、仮に Android Lint 以外の他のレポートも GitHub Pages へデプロイしたいようなケースでは1つのディレクトリ配下に HTML ファイルを全て集めてからアップロードするようなことが必要となります。

name: Android Lint Report

on:
  push:
    branches: [main]

concurrency: # deploy 中の job が既にあれば待つ
  group: 'github-pages' # 名前はなんでもよい
  cancel-in-progress: false

jobs:
  report:
    runs-on: ubuntu-latest
    permissions:
      contents: read # for checkout
      pages: write # for pages action
      id-token: write # for pages action
    environment: # 必ずしも deployment イベントを発行する必要はないがリポジトリ TOP から遷移しやすいので
      name: 'github-pages' # 名前はなんでもよい
      url: ${{steps.deploy.outputs.page_url}}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          distribution: 'zulu'
          java-version: 17
      - run: ./gradlew app:lintDebug
        continue-on-error: true
      - run: |
          mkdir '${{ runner.temp }}/reports'
          cp ./app/build/reports/lint-results-debug.html '${{ runner.temp }}/reports/index.html'
      - uses: actions/upload-pages-artifact@v3
        with:
          path: ${{ runner.temp }}/reports
      - uses: actions/deploy-pages@v4
        id: deploy

continue-on-error の箇所は、lint のオプションで abortOnError を false にするか、もしくは ./gradlew app:lintDebug || true のように異常終了を握りつぶしてもよいです。

マルチモジュール構成の場合は こちらの投稿 のように checkDependencies を true にしておきましょう。

このワークフローが走ると、リポジトリ TOP に deployment イベントのリンクが現われるので、



そのリンクの先の画面に記載されている URL からからレポートにアクセスできます。



URL は恐らく固定でずっと変わらないので、README 等にリンクを記載しておいてもよいと思います。

Android Lint 以外の他のレポートも GitHub Pages へデプロイしたいようなケースについては次の投稿をご覧ください。

https://zenn.dev/yumemi_inc/articles/9e8f5e08e8b23f

株式会社ゆめみ

Discussion