Skip to main content

通过 Gitea Actions 集成 Sonarqube

· 4 min read
Banner for blog post with title "通过 Gitea Actions 集成 Sonarqube"

Sonarqube 是一个静态代码检查工具,采用 B/S 架构,帮助检查代码缺陷,可以快速的定位代码中潜在的或者明显的错误,改善代码质量,提高开发速度。 通过插件形式,可以支持Java、C、C++、JavaScripe等二十几种编程语言的代码质量管理与检测。

这篇博客将介绍如何使用 Gitea Actions 来将 Gitea 与 Sonarqube 进行集成。

预先要求

首先,确保你已经安装了 Gitea 1.19 版本以上,并且已经开启了 Actions 支持,同时至少有一个可用的 Runner。关于如何安装Gitea,可以查看官方文档 安装Gitea

其次,你需要有一个安装好的 Sonarqube。如果还没有安装完成的 Sonarqube,可以参考以下的快速安装方法。

Sonarqube Docker compose 安装

首先确保安装了 Docker 和 Docker compose,然后新建一个文件夹,创建一个文件 compose.yml,将以下内容保存到文件中。

version: "3"

services:
sonarqube:
image: sonarqube:community
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
ports:
- "9000:9000"
db:
image: postgres:12
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data

volumes:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
postgresql:
postgresql_data:

在命令行中运行

docker-compose up

等待日志输出停止,在浏览器中输入 http://localhost:9000 。如果显示了 sonarqube 即表示成功。 默认的账号密码均为 admin,登录后会要求修改密码。

在 Gitea 中创建Workflows

如果对 Gitea Actions 还不太熟悉的,可以查看 玩转Gitea Actions

如果已经熟悉了 Gitea Actions , 那么接下来在repo中创建一个workflow 如下:

on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]

name: SonarQube Scan
jobs:
sonarqube:
name: SonarQube Trigger
runs-on: ubuntu-latest
steps:
- name: Checking out
uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: SonarQube Scan
uses: kitabisa/sonarqube-action@v1.2.0
with:
host: ${{ secrets.SONARQUBE_HOST }}
login: ${{ secrets.SONARQUBE_TOKEN }}

这里需要设置 SONARQUBE_HOSTSONARQUBE_TOKEN 两个私钥。SONARQUBE_HOST 即 Sonarqube 的 URL 地址,类似 http://you_ip:9000,这里要注意,应该用本机的ip地址,而不要用 localhost 或者 127.0.0.1,因为 CI 是运行在 docker 容器中的,用 localhost 或者 127.0.0.1 会访问容器里面的操作系统。

SONARQUBE_TOKEN 需要登录到 sonarqube,在个人设置中创建一个 token。

在配置好 SONARQUBE_HOSTSONARQUBE_TOKEN 两个私钥之后,提交代码到 main 分支,就可以看到 Gitea Actions 的界面如下:

gitea actions

Gitea Actions 运行成功之后,可以在 Sonarqube 的控制台看到分析结果。

sonarqube