簡體   English   中英

為 SonarCloud 構建多模塊 maven 項目

[英]Building multi-module maven project for SonarCloud

我正在第一次為 SonarCloud 構建一個 X 數量模塊的 maven 項目。 sonar.projectKey值需要是唯一的,所以我將它設置為${project.groupId}:{$project.artifactId} ,這樣它就會按模塊生成。 然后,運行 CI,這是響應消息:

[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]

我懷疑這是因為我沒有在我的“組織”中使用該鍵創建項目,但問題是我有多個模塊。 事實上,我有 X 個。 我還應該為每個要掃描的模塊創建一個項目嗎? sonarqube 插件不應該處理嗎?

For those, who strugle to get sonarcloud.io working with github action for a java application managed through a maven multi-module project.

I have created a Spring Maven Multi-Module Project and wanted to be able to use sonar from sonarcloud.io during specific github action.

Github 項目: https://github.com/MagicSoup/SpringJOOQ

聲納雲項目: https://sonarcloud.io/dashboard?id=MagicSoup_SpringJOOQ

你可以在這里找到我的 Github 操作: 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 }}

在我的根 pom.xml 內,聲納配置文件: https://github.com/MagicSoup/SpringJOOQ/blob/master/pom.Z0F635D0E0F3874FFF8B581C132E

 <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>

這里的重要信息是以下鍵:

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

如果沒有 le sonar.moduleKey 定義,我在多個具有相同密鑰的項目上遇到問題。

During the creation of the project in sonarcloud.io https://sonarcloud.io/projects/create by using the analyze github repository a message will be displayed that you should use another way than the automated one because it's doesn't work for java應用。 然后,您將選擇一個支持“maven,gradle,...”,您會發現需要在 maven pom.xml 中添加所有必需的屬性。 包括您應該在 github 中導出為秘密令牌的 sonar.login)。

您可以在此處創建您的秘密令牌: https://github.com/User/Project/settings/secrets您需要進行身份驗證並相應地更改用戶和項目。

關於這個主題的一篇很棒的文章: https://medium.com/faun/continuous-integration-of-java-project-with-github-actions-7a8a0e8246ef

似乎我的問題與此無關,但聲納雲中的 gitlab 導入器創建了一個項目,其密鑰與 gitlab 上的項目名稱匹配。 相反,您應該手動創建一個項目並在聲納雲中為其分配{groupId}:{artifactId}名稱,以防止這種混淆。

出現錯誤消息是因為該鍵下沒有項目,因此聲納雲沒有默認值。

對我來說,我必須通過 go 進入項目的聲納雲管理設置,然后進入分析方法並關閉 SonarCloud 自動分析,因為我已經在通過我的 CI 運行分析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM