【问题标题】:How to set up a monorepo in SonarCloud with a Java + Angular application如何使用 Java + Angular 应用程序在 SonarCloud 中设置 monorepo
【发布时间】:2022-07-01 19:47:37
【问题描述】:

我开发了一个应用程序,其中后端使用 Java 语言(使用 maven)开发,前端使用 Angular 语言。我在github 的一个项目中托管这两个部分。

现在我对在 SonarCloud 上使用 SonarQube 很感兴趣。为此,我正在关注从community sonarsource 收集的信息和sonarcloud 的标准文档。这个想法是使用 GiHub Actions 来分析项目。

我在根文件夹上创建了一个.github/workflows/build.yml,内容如下:

name: Build
on:
  push:
    branches:
      - master
  pull_request:
    types: [opened, synchronize, reopened]
     
        
        
jobs:
  sonarcloud:
    name: SonarCloud
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
     - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Cache SonarCloud packages
        uses: actions/cache@v1
        with:
          path: ~/.sonar/cache
          key: ${{ runner.os }}-sonar
          restore-keys: ${{ runner.os }}-sonar
      - name: Cache Maven packages
        uses: actions/cache@v1
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2
      - name: Build and analyze
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=kendo-tournament-backend
        with:
          projectBaseDir: ./backend/
      - name: SonarCloud Frontend Scan
        uses: SonarSource/sonarcloud-github-action@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        with:
          projectBaseDir: ./frontend/

基本上,我创建了一些用于执行 maven 项目的步骤,以及另一个额外的步骤来执行前端。在这两个文件中,我将projectBaseDir 包含在两个项目文件夹的路径中,指定为here

另外,按照文档中的建议,我在 frontend 文件夹的根文件夹中包含了一个 sonar-project.properties

sonar.projectKey=kendo-tournament-frontend
sonar.organization=softwaremagico

# This is the name and version displayed in the SonarCloud UI.
#sonar.projectName=Kendo Tournament Manager Frontend
#sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
#sonar.sources=.

# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

对于后端,我已将根 pom.xml 更新为:

<properties>
  <sonar.organization>softwaremagico</sonar.organization>
  <sonar.host.url>https://sonarcloud.io</sonar.host.url>
</properties>

根据需要。

但是,对于这两个项目中的任何一个都不会启动分析扫描。而且 SonarCloud 看起来像是在忽略配置。

可能缺少某些东西,但我无法想象是什么。在 Github 中使用 Java 和 Angular 正确设置单一存储库需要哪些步骤?

【问题讨论】:

  • 好吧,好像有例子here

标签: sonarqube monorepo sonarcloud


【解决方案1】:

好的,后面是从here得到的例子。我所做的更改是:

  • github 上有两种不同的工作流程,一种用于后端,一种用于前端。不是一个所有步骤都在一起的工作流程。

  • 包括两个不同的 sonar-project.properties。一个在后端文件夹中,一个在前端文件夹中。现在我添加了sonar.sources 行如下:

sonar.projectKey=kendo-tournament-backend
sonar.organization=softwaremagico
sonar.sources=.

确保仅适用于该文件夹。

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2021-10-31
    相关资源
    最近更新 更多