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_HOST
和 SONARQUBE_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_HOST
和 SONARQUBE_TOKEN
两个私钥之后,提交代码到 main 分支,就可以看到
Gitea Actions 的界面如下:
Gitea Actions 运行成功之后,可以在 Sonarqube 的控制台看到分析结果。