Android Lint の結果を GitHub Pages へデプロイ
事前にリポジトリの設定で 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 へデプロイしたいようなケースについては次の投稿をご覧ください。
Discussion