Maven项目实现定时SonarQube代码扫描

孟浩浩

967字约3分钟

工具代码质量

2024-04-20

Maven项目实现定时SonarQube代码扫描

环境说明:CentOS 7

环境安装

安装jdk(如有可跳过),8或11均可;其他版本未测试过

yum install -y java-11-openjdk

安装git(如有可跳过)

yum install -y git

安装Maven(如有可跳过)

yum install -y maven

配置

配置Maven的settings.xml(传你本地的上去就行,传上去之前需要注释或删除下面截图部分)

1713593621503.png

1713593688790.png

将修改后的settings.xml文件上传到这个目录下,记得先备份原来的。

cd /etc/maven

配置git账号信息(ssh跳过,http方式才需要配置)

cd /home
vim .git-credentials

# 写入内容,有多个就换行写
https://用户名:密码@http://192.168.175.52:3000/G_YUANRONG/MRF_IDEA_HOUTAI.git

git config --global credential.helper store

cat ~/.gitconfig
# 看见下面这个内容就是配置成功
[credential]
    helper = store

找个文件夹放代码(这里只是例子,你想放哪都行)

cd /opt/
mkdir codes
cd codes

克隆代码(分支自己定,这里用main分支举例)

git clone -b main http://192.168.175.52:3000/G_YUANRONG/MRF_IDEA_SAPYR.git

创建执行脚本(server地址不用改,token值可改可不改,修改一下代码仓库的本地路径和分支就行)

token值如果要改,自己去sonarqube上面去生成一下就行

#!/bin/bash
# Git 仓库的本地路径
repository_path="/opt/codes/MRF_IDEA_SAPYR"
# 分支名称
branch_name="main"
# sonarqube的Token值
sonar_login="654398124d2393e282c7da501b00333067c9b811"
# sonarqube的server地址
sonar_server_address="http://192.168.168.104:9091"
# 要执行的 Maven 命令
maven_command="mvn clean compile sonar:sonar -Dsonar.host.url=$sonar_server_address -Dsonar.login=$sonar_login"

# 切换到仓库目录
cd $repository_path || exit

# 拉取最新的代码更新
git pull origin $branch_name
if [ $? -eq 0 ]; then
  echo "Code update successful!"

  # 执行 Maven 命令
  $maven_command
  if [ $? -eq 0 ]; then
    echo "Sonar Maven command executed successfully!"
  else
    echo "Sonar Maven command execution failed!"
  fi
else
  echo "Code update failed!"
fi

脚本权限赋予(可选操作,可选是因为你极有可能是用root用户登录操作的)

chmod u+x 脚本名字.sh

执行脚本

sh 脚本名字.sh

输出结果参考(如果是第一次执行,估计要点时间下依赖;后续执行基本上几分钟)

1713593767048.png

1713593783734.png

1713593800442.png

定时配置参考

要在 CentOS 上配置定时执行 Shell 脚本,可以使用 cron 任务调度工具。以下是在 CentOS 上配置定时任务的步骤:

  1. 打开终端并使用 root 用户登录系统。

  2. 运行以下命令来编辑 cron 表:

    crontab -e
  3. 如果是第一次编辑 cron 表,系统会要求选择编辑器。选择你喜欢的编辑器(例如 vim)并进行编辑。

  4. 在打开的文件末尾添加以下行,以设置定时执行的时间和要执行的脚本路径:

    # 每天凌晨 1 点执行脚本
    0 1 * * * /path/to/your/script.sh

    /path/to/your/script.sh 替换为你实际的脚本文件路径。

    这个例子中,0 1 * * * 表示脚本将在每天的凌晨 1 点执行。你可以根据需要进行调整,使用 cron 表达式设置更精确的执行时间。

  5. 保存并关闭文件。注意,如果是使用 vim 编辑器,可以按 Esc 键,然后输入 :wq 保存并退出。

现在,你的脚本将在指定的时间定期执行。如果有需要,你可以在同一个 cron 表中添加多个定时任务,每行设置一个任务。

你可以使用以下命令来查看和管理 cron 任务:

  • 查看当前用户的 cron 表:
    crontab -l
  • 编辑当前用户的 cron 表:
    crontab -e
  • 删除当前用户的 cron 表:
    crontab -r

注意:确保脚本具有可执行权限,可以使用 chmod +x /path/to/your/script.sh 添加执行权限。