5 votes

Construction d'un projet maven multi-module pour SonarCloud

Je suis en train de construire un projet maven de X modules pour la première fois pour SonarCloud. Le site sonar.projectKey doit être unique, je l'ai donc défini comme suit ${project.groupId}:{$project.artifactId} de sorte qu'il soit généré par module. Ensuite, exécutez le CI et voici le message de réponse :

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project ${project.groupId}:${project.artifactId}: Could not find a default branch to fall back on. -> [Help 1]

Je pense que c'est parce que je n'avais pas créé de projet avec cette clé dans mon "organisation", mais le problème est que j'ai plus d'un module. En fait, j'en ai X. Dois-je quand même créer un projet par module que je veux scanner ? Le plugin sonarqube ne devrait-il pas s'en charger ?

10voto

MagicSoup Points 86

Pour ceux qui ont du mal à faire fonctionner sonarcloud.io avec l'action github pour une application java gérée par un projet multi-module maven.

J'ai créé un projet Spring Maven multi-module et je voulais pouvoir utiliser le sonar de sonarcloud.io pendant une action spécifique de github.

Projet Github : https://github.com/MagicSoup/SpringJOOQ

Projet Sonar Cloud : https://sonarcloud.io/dashboard?id=MagicSoup_SpringJOOQ

Vous pouvez trouver mon action Github ici : https://github.com/MagicSoup/SpringJOOQ/blob/master/.github/workflows/maven-master.yml

sonar:
    name: Test - SonarCloud Scan
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: SonarCloud Scan
        run: mvn -B clean verify -Psonar -Dsonar.login=${{ secrets.SONAR_TOKEN }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Et à l'intérieur de mon pom.xml Root le profil sonar : https://github.com/MagicSoup/SpringJOOQ/blob/master/pom.xml

 <profile>
            <id>sonar</id>
            <properties>
                <sonar.host.url>https://sonarcloud.io</sonar.host.url>
                <sonar.organization>magicsoup</sonar.organization>
                <sonar.projectKey>MagicSoup_SpringJOOQ</sonar.projectKey>
                <sonar.moduleKey>${project.groupId}:${project.artifactId}</sonar.moduleKey>
            </properties>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.sonarsource.scanner.maven</groupId>
                        <artifactId>sonar-maven-plugin</artifactId>
                        <version>${sonar.version}</version>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sonar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

Ici, les informations importantes sont les clés suivantes :

  • <sonar.projectKey>MagicSoup_SpringJOOQ</sonar.projectKey>
  • <sonar.moduleKey>${project.groupId}:${project.artifactId}</sonar.moduleKey>

Sans la définition de sonar.moduleKey, j'avais des problèmes sur plusieurs projets avec la même clé.

Pendant la création du projet dans sonarcloud.io https://sonarcloud.io/projects/create en utilisant le dépôt github d'analyse, un message s'affiche indiquant que vous devez utiliser une autre méthode que celle automatisée car elle ne fonctionne pas pour les applications java. Vous choisirez alors celle qui propose "maven,gradle,..." et vous trouverez toutes les propriétés obligatoires à ajouter dans votre pom.xml maven. Y compris le sonar.login que vous devez exporter comme un jeton secret dans github).

Vous pouvez créer votre jeton secret ici : https://github.com/User/Project/settings/secrets Vous devez être authentifié et modifier l'utilisateur et le projet en conséquence.

Un excellent article sur le sujet : https://medium.com/faun/continuous-integration-of-java-project-with-github-actions-7a8a0e8246ef

2voto

Dragas Points 105

Il semble que mon problème n'était pas lié à cela, mais que l'importateur gitlab dans sonar cloud crée un projet avec une clé qui correspond au nom du projet sur gitlab. Vous devriez plutôt créer un projet à la main et lui attribuer la clé {groupId}:{artifactId} dans le nuage sonar pour éviter cette confusion.

Le message d'erreur est là parce qu'il n'y avait pas de projet sous cette clé et, par conséquent, le nuage sonar n'avait pas de valeurs par défaut pour lui.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X