我第一次为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插件不应该处理吗?
答案 0 :(得分:4)
对于那些努力使sonarcloud.io与github动作一起工作的Java程序而言,这些人通过maven多模块项目进行管理。
我已经创建了一个Spring Maven Multi-Module Project,并希望能够在特定的github动作中使用sonarcloud.io的声纳。
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.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>
重要信息如下:
在没有sonar.moduleKey定义的情况下,我在多个具有相同密钥的项目中遇到了问题。
在sonarcloud.io https://sonarcloud.io/projects/create中通过使用github分析库创建项目期间,将显示一条消息,提示您应使用自动化以外的其他方式,因为它不适用于Java应用程序。然后,您将选择一个建议的“ maven,gradle,...”,然后会发现需要在maven pom.xml中添加的所有必需属性。包括sonar.login,您应该将其作为秘密令牌导出到github中。)
您可以在此处创建您的秘密令牌:https://github.com/User/Project/settings/secrets 您需要进行身份验证,并相应地更改用户和项目。
有关该主题的精彩文章:https://medium.com/faun/continuous-integration-of-java-project-with-github-actions-7a8a0e8246ef
答案 1 :(得分:1)
似乎我的问题与此无关,但是声纳云中的gitlab导入器创建了一个项目,其键与gitlab上的项目名称匹配。相反,您应该手动创建一个项目,并在声纳云中为其指定{groupId}:{artifactId}
名称,以防止混淆。
出现错误消息是因为该键下没有任何项目,因此声纳云没有默认设置。