AWS CodeBuild と SonarCloud を連携させる機会があったので、その方法についての備忘録として残しておきます。

AWS CodeBuild の環境変数 SonarCloudAccessToken に SonarCloud のアクセストークンを保持しておきます。

SonarCloud のアクセストークンの発行は、SonarCloud のサイトで ユーザーアイコン > Settings > Personal access token から出来ます。

AWS CodeBuild で環境変数を保持しておくことにより、開発者が間違えてローカル環境で ./gradlew clean build sonarqube を打ってしまったとしても、ローカル環境には環境変数 SonarCloudAccessToken がないため失敗にできます。

下記ファイルが、実際の設定内容です。 [~] 部分は、適宜変更してください。

build.gradle

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
buildscript {
    repositories {
      maven {
        url "http://repo1.maven.org/maven2/"
      }
      maven {
        url "https://plugins.gradle.org/m2/"
      }
      mavenLocal()
    }
    dependencies {
      classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"
    }


}
plugins {
  id "org.sonarqube" version "2.7.1"
}

apply plugin: 'java'
apply plugin: 'org.sonarqube'
apply plugin: 'jacoco'

sonarqube {
    properties {
        property "sonar.login", SonarCloudAccessToken
        property "sonar.host.url", "https://sonarcloud.io/"
        property "sonar.projectKey", [SonarCloudで解析する対象のプロジェクトキー]
        property "sonar.organization", [<あなたのorganization>]
        property "sonar.jacoco.reportPaths", "target/jacoco/test.exec"
    }
}

buildspec.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto11
  build:
    commands:
      - chmod +x ./gradlew
      - ./gradlew build sonarqube -PSonarCloudAccessToken=${SonarCloudAccessToken}