表記のことを行う方法をメモしておきます。
サンプルとしてAndroidアプリのカバレッジレポートをJaCoCoで出力する場合を取り上げています。JaCoCoについてはbuild.gradle.ktsでJaCoCoを動かすなどを参考にして設定済みであることを前提とします。
結論から先に書くと、こんな感じのステップを作ります。このステップを動かすために、いろいろな準備が必要です。
jobs:
test:
# 省略
steps:
# 省略
- name: sonarcloud
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.organization=your-organization-here
-Dsonar.projectKey=your-project-key-here
-Dsonar.coverage.jacoco.xmlReportPaths=./app/build/reports/jacoco/debugCoverage/debugCoverage.xml
SonarCloudは、GitHubのリポジトリと連携した後、デフォルトブランチとPull Requestを自動で解析する設定になっています。SonarCloudのカバレッジ機能を有効にするためには、この設定を無効化して、Pull Requestベースでの解析を行うように変更する必要があります。
SonarCloudのプロジェクトのダッシュボードから、Administration > Analysis Methodを開き、Automatic Analysisを無効化します。もし"Administration"が表示されない場合は権限的な問題かもしれません。
GitHubのリポジトリシークレットに保存する、SonarCloudのトークンです。
このトークンは、SonarCloudのダッシュボードから、My Account > Securityを開き、“Generate Tokens"で作成できます。この辺りは、組織のポリシーがあればそれに従います。今回は自分個人のアカウントで試しているので、自分のアカウントでトークンを作成しました。
yamlの以下の部分です。これら2つは、SonarSource/sonarcloud-github-actionで with
を用いた構文を使う場合は必須のパラメータです。
-Dsonar.organization=your-organization-here
-Dsonar.projectKey=your-project-key-here
SonarCloudのプロジェクトのダッシュボードから、Informationを開き、“About This Project"の下に表示されている"Project Key"と"Organization Key"をそれぞれ入力します。
yamlの以下の部分です。カバレッジレポートのパスを設定します。言語によってパラメータが異なるので、Test Coverage Parametersを参考に設定します。
-Dsonar.coverage.jacoco.xmlReportPaths=./app/build/reports/jacoco/debugCoverage/debugCoverage.xml