• Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台


    前言

    本篇文章主要介绍的是Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台的集成。

    博客之前已经有关于Jenkins、SonarQube、Gitlab分别安装的文章,本文主要说明三种平台集成使用,实现代码持续集成与自动化部署。

    一、jenkins集成gitlab

    jenkins中添加gitlab插件,选择直接安装,然后服务器中重启jenkins。


    gitlab中生成AccessToken

    打开gitlab,在gitlab中用户设置—>访问令牌选项中生成token,scope为第一个等级:api


    jenkins中添加gitlab中生成的token

    1.打开jenkins,在Jenkins添加全局凭据,类型为APIToken


    2.使用Test connection验证添加成功

    安装中可能出现的问题:
    Manage Jenkins—>出现红色报错信息 pluginname is missing. To fix, install v** or later. 插件所依赖的其他插件,需要自己安装。
    解决方案:http://updates.jenkins-ci.org/download/plugins/中搜索报错信息中对应的pluginname, 选择合适的版本下载,然后手动上传。最后服务器中使用systemctl restart jenkins.service 重启Jenkins

    至此,Jenkins集成gitlab完成,接下来集成sonarqub后,将使用demo一起进行演示。

    二、jenkins集成sonarqube

    1.打sonarqube,点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成,复制该token。


    2.打Jenkins,Jenkins中安装插件 SonarQube-scanner(插件版本为2.6.1),插件可在http://updates.jenkins-ci.org/download/plugins/ 中下载,浏览器中ctrl+f,搜索sonar。然后在Manage Jenkins-->Manage Plugins-->高级中,上传插件,重启Jenkins。

    3.在系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息

    4.加载JDK与Sonar-scanner全局配置,jdk安装目录为Jenkins中jdk的安装目录,如果有默认配置,需要先删除。



    三、demo测试

    gitlab部分

    1.进入gitlab首页,创建群组

    2.在群组中创建一个项目


    3.复制该项目的gitlab地址

    4.打开资源管理器,新建一个文件夹作为 Git 代码存放位置,进入该新建文
    件夹后在空白处单击鼠标右键,选择“Git 克隆…”;

    5.可能会有弹窗,要求输入gitlab的账号密码,输入即可。

    6.克隆完成后,点击关闭按钮

    7.上传代码测试,进入【demo】文件夹,将一份代码复制至该目录下;

    8.在空白处单击鼠标右键,选择“Git 同步…”,在弹出的“Git 同步–TortoiseGit”对话框中点击“拉取(P)”按钮,同步项目在 Gitlab 服务器的版本;


    9.在空白处单击鼠标右键,选择“Git 提交(C) ->”master”…”;

    10.待提交成功后,点击“推送(H)”按钮,并在弹出的“推送 –TortoiseGit”对话框中勾选“推送所有分支(P)”,单击“确定”按钮完成代码推送;

    11.刷新gitlab页面,发现上传成功。

    jenkins部分

    PS:此实例目标为实现 Gitlab 中【demo】项目更新代码时, Jenkins 同步更新代
    码并完成自动化部署。

    1.登录jenkins,单击左侧主菜单中的“新建 Item”按钮,进入新建任务向导;

    2.输入任务名称“demo”,选择“Freestyle project”后点击确定;

    3.点击“源码管理”标签,选择“Git”单选框,输入【demo】项目克隆链接,在“Credentials”单选框中添加凭证,然后选择该凭证;

    添加凭证;

    4.配置 Webhook,点击“构建触发器”标签,勾选“Build when a change is pushed to GitLab. GitLab webhook URL:...”,并点击弹出菜单中的“高级…”按钮;

    5.点击"Secret token"标签右侧的"Generate"按钮生成 Token 密钥,记录该密钥及该工程在 Jenkins中的URL(分别在如下图"2"、"3"所示位置),点击“保存”按钮完成工程配置。

    6.登录 Gitlab 并进入【demo】项目,点击左侧菜单中“设置-集成”标签;

    7.在 URL 中键入刚刚获取到的 Jenkins 工程 URL 及 Token 密钥,点击"Add webhook"按钮完成 Gitlab 中【demo】项目配置;

    8.出现【urlis blocked:Requests to the local network are not allowed】错误

    解决方案:
    gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录,默认管理员帐号是root或者admin@example.com,密码就是你gitlab搭建好之后第一次输入的密码,登录之后,走下图步骤:

    重新走第六、七步骤。

    9.向下滚动右侧拖动条可见新建的 Webhook,点击右侧“Test”下拉框,选择“Push events”测试 Webhook 配置,如显示 Hook executedsuccessfully: HTTP 200 即表明 Webhook 配置成功;

    10.重新切换到 Jenkins【demo】工程中可见 Jenkins 已成功响应 Gitlab的 Push 事件;

    11.Push测试
    打开资源管理器,进入【demo】项目文件夹,新建一个文本文档;

    在空白位置单击鼠标右键选择“Git 同步”并在弹出对话框中完成服务器代码版本拉取;
    同步服务器代码版本后单击鼠标右键选择"Git 提交(C) ->"master"…"并在弹出对话框中完成变更提交


    12.在 Jenkins 成功看到 Push 事件即表明 Jenkins 配置成功;

    jenkins集成sonarqube部分

    ps:此教程对 SonarQube 的使用全部基于 Jenkins 平台;
    1.打开浏览器通过任意链接访问Jenkins,进入Jenkins主页;点击【demo】项目进入项目主页;

    2.点击左侧菜单栏“配置”按钮进入项目配置;

    3.点击"构建触发器"标签,在"构建"一栏中点击"增加构建步骤"下拉框,选择"Execute SonarQube Scanner";

    4.在弹出的“Execute SonarQube Scanner”页面中填入以下 Analysis properties 信息后单击“保存”按钮完成项目配置;

    # 项目标识符,在给定的 SonarQube 中必须是唯一的
    sonar.projectKey=lxgblog:demo
    # 项目名称,这是 SonarQube 中显示的名称
    sonar.projectName=demo
    # 项目版本号
    sonar.projectVersion=1.0
    # 以下定义可在项目根目录新建 sonar-project.properties 文件, SonarQube 会默认读取该文件,
    # 指定工程源文件所在的目录, "./"可表示根目录,在 Windows 系统使用时注意用"/"代替""
    sonar.sources=./src
    # 针对 JAVA 工程,需要指定 class 文件所在的目录
    sonar.java.binaries=./target/classes
    # 指定工程编程语言
    sonar.language=java
    # 指定工程字符编码
    sonar.sourceEncoding=UTF-8
    

    5.Build 测试,回到【demo】项目主页,单击左侧菜单栏“Build Now”按钮进行代码编
    译,可以在 Build History 中实时看到编译过程,编译完成后会生成一个新的构建历史#4
    (ps:#3被我删了);

    6.点击“#4”按钮进入 4 号构建过程,点击左侧菜单栏“控制台输出”按钮可以看到本次项目构建的详细过程(有兴趣的可以看看整个工程构建及代码分析过程);


    7.回到【demo】项目主页,点击左侧菜单栏"SonarQube"按钮将跳转到SonarQube 项目名为【demo】的主页即可看到代码分析的结果;

    CSDN:https://blog.csdn.net/qq_27682773
    简书:https://www.jianshu.com/u/e99381e6886e
    博客园:https://www.cnblogs.com/lixianguo
    个人博客:https://www.lxgblog.com

  • 相关阅读:
    基于Token的WEB后台认证机制
    导出和导入Docker容器
    进入Docker容器
    介绍Docker容器
    Docker镜像的实现原理
    Docker 移除镜像
    存出和载入Docker镜像
    Docker 创建镜像
    Docker 列出镜像
    Docker如何获取镜像
  • 原文地址:https://www.cnblogs.com/lixianguo/p/12518568.html
Copyright © 2020-2023  润新知