一、Overview

继续 DevOps 实施的相关内容,在上一篇的博客中,完成了对于工具链中使用到的软件所需的运行环境的配置,在这一篇的博客中,将聚焦于我们使用到的两个主要的软件:Jenkins 与 SonarQube 在 Windows 服务器上的部署安装,为后续 DevOps 的实施,构建软件基础

二、Contents

  1. 从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建
  2. 从零开始针对 .NET 应用的 DevOps 运营实践 - Jenkins & SonarQube 安装配置

三、Step by Step

3.1、前言

在 Jenkins 与 SonarQube 的版本选择上,这里我选择的都是最新的 LTS 版本,也就是长期支持版本,如果你没有什么特定的需求的话,建议不要选择过于古老的软件版本

这里请重点关注 SonarQube 的版本问题,对于自动化代码检查的数据,SonarQube 支持持久化到常见的数据库中(默认使用的是 H2 数据库),然而 8.x 之后的版本只支持持久化到 Oracle、SQL Server 以及 PostgreSQL,嗯,同 Gitlab 一样,没有 MySQL

因此,如果你需要持久化数据到 MySQL 数据库,最后一个能选择的版本则是 7.7 版本(电梯直达),并且这个版本只支持 MySQL 5.6、5.7,考虑到后续已经不再支持 MySQL 数据库的缘故,请谨慎考虑是否一定要采用该版本

3.2、Jenkins

3.2.1、程序安装

打开 Jenkins 官网,找到下载页面(https://www.jenkins.io/download/),选择最新的 LTS 版本下载,针对 Windows 平台,可以通过 war 包运行,在 docker 中运行,以及通过 msi 安装包安装之后,作为一个 Windows 服务运行

作为一个需要持续运行的服务,这里我选择通过 msi 方式的来完成程序的部署

双击 msi 安装文件,配置软件的安装路径,对于这种基础的软件服务,建议还是放在默认的位置

因为 Jenkins 在安装之后,是会作为一个独立的 Windows 服务的,如果你需要使用域账户或本地账户作为服务的运行方来运行该服务的话,这里需要进行配置账户、密码

Jenkins 默认使用 8080 端口,可以点击下方的 Test Port 按钮来测试当前设定的端口是否已经被占用

在上一篇中有提到 Jenkins 是基于 Java 进行开发的,在软件的安装过程中,安装程序默认会带出来我们配置的 Java SDK 信息,当然,你也可以在这里针对 Jenkins 设置不同的 Java SDK

完成所需运行环境的配置之后,将 Jenkins 服务所使用的 8080 端口添加到防火墙的白名单中,从而允许别的机器可以访问到该服务

当配置完成之后,点击 Install 等待安装完成即可,当安装向导提示安装完成时就可以通过浏览器访问 Jenkins

3.2.2、基础配置

打开浏览器,按照页面上的提示,我们需要找到位于指定路径上的密码,复制到页面上的输入框,来完成 Jenkins 的解锁,从而继续后续的操作

解锁之后,Jenkins 会提示你安装一些必要的插件,这里如果你因为网络问题没有安装成功或者压根没有弹出这个页面,也没有关系,后续可以在程序中手动的选择需要安装的插件

等待插件的安装完成 or 直接跳过插件的安装,创建一个管理员账户,用来管理我们的 Jenkins 系统,点击下一步,会需要我们配置一个 Jenkins URL,这个地址采用默认的地址即可,这里一定要注意,如果你调整了该 URL 的配置,后续一定要通过 Web 服务器进行反向代理,否则后续会出现各种问题

点击保存并完成之后,基本的 Jenkins 运行环境就安装配置完成了,当然,为了实现我们的需求,还需要后续在此基础上,安装各种所需的插件,从而实现构建流水线来完成持续集成的功能

3.3、SonarQube

3.3.1、程序安装

同 Jenkins 一样,SonarQube 同样选择最新的 LTS 版本进行下载了(电梯直达

SonarQube 下载完成的是一个压缩包,解压压缩包,找到 bin 目录,里面列出了在不同操作系统运行程序的方式,因为我们是在 Windows 平台,所以这里选择 windows-x86-64 文件夹。同样的,作为一个需要常驻的服务,这里最好也将应用作为 Windows 服务进行运行

右击 InstallNTService.bat 选择以管理员身份运行,再使用管理员身份运行 StartNTService.bat 即可

打开浏览器,SonarQube 默认使用 9000 端口,等待一段时间,如果可以看到如下的页面,则代表应用已经安装成功,点击右上角的 Log in,输入默认的账户、密码即可登录到系统中(默认的账户、密码都是 admin)

PS:如果 9000 端口已经被占用了,可以找到 conf 文件下的 sonar.properties 文件修改 sonar.web.port 配置然后重启服务即可

3.3.2、数据持久化

对于自动化的代码检查数据,是具有一定的价值的,因为目前数据还是存储在 SonarQube 内置的 H2 数据库中,为了便于后续的使用,这里选择持久化到 SQL Server 数据库中

PS:请关注你使用的 SonarQube 所支持的数据库版本信息

新建一个数据库,这里必须调整数据库的排序规则为 CS(case-sensitive,区分大小写)、AS(accent-sensitive,区分重低音),例如这里我选择的排序规则为 Chinese_PRC_CS_AS

数据库创建之后,需要执行如下的 SQL 语句,确保当前库的 is_read_committed_snapshot_on 属性设置为 true,这里的 sonar 就是我新建的数据库名称

-- 查看 is_read_committed_snapshot_on 是否启用
SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name='sonar'; -- 打开 is_read_committed_snapshot_on
ALTER DATABASE sonar SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;

数据库设置完成之后,我们需要下载 Microsoft SQL JDBC Driver 7.2.2 package 这个 SQL Server 的 JDBC 驱动到本地,这里选择下载压缩包

找到下载之后的压缩包解压,选择 auth 路径下的 x64 文件夹,获取到这个 64 位的 sqljdbc_auth.dll 文件,拷贝到 SonarQube 的路径下,这里我在 \extensions\jdbc-driver 路径下新建了一个 mssql 文件夹用来存放这个 dll 文件

驱动下载完成后,找到 conf 文件下的 sonar.properties 文件,修改数据库连接信息,重新启动 SonarQube 服务,等待数据库表的创建完成,嗯,这个过程比较慢,耐心等待

等待应用的重新启动完成,与 Jenkins 相同,我们可以安装各种插件来丰富 SonarQube,这里我们可以在登录系统后,点击 Administration 菜单,在 Marketplace 中,下载所需的插件,例如这里可以下载中文的语言包,重启之后,系统就变成了中文

同样的,针对服务器无法连接外网的同学,我们可以从网络上找到需要的插件进行下载,然后放到程序运行路径下的 \extensions\plugins 文件夹中,重启服务即可

3.4、总结

自此,Jenkins 和 SonarQube 就已经安装配置完成了,当然,为了实现我们的需求,在实际使用时 Jenkins 还需要安装一些必须的插件,在下一章中,就可以通过与 Gitlab 进行串接,完成 .NET 应用的持续集成工作

从零开始针对 .NET 应用的 DevOps 运营实践 - Jenkins & SonarQube 安装配置的更多相关文章

  1. 从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建

    一.Overview 最近的一段时间,在公司里我都在进行基于 Jenkins 和 SonarQube 配合已有的 Gitlab 搭建部门的持续集成环境的工作,虽然之前有使用过 GitHub Actio ...

  2. 图形化Cisco设备管理实践(附安装配置视频)

    图形化Cisco设备管理实践 Ciscoworks 2000是Cisco公司推出的基于SNMP协议的网络管理系统,通过它网络管理人员可以方便快捷地完成设备的配置.管理.监控和故障分析等任务, Cisc ...

  3. DevOps企业实践与架构

    原文地址:http://www.sohu.com/a/112351816_355140 什么是DevOps及其误区 DevOps概念从2009年提出已有8个年头.可是在8年前的那个时候,为什么DevO ...

  4. 基于Github Actions + Docker + Git 的devops方案实践教程

    目录 为什么需要Devops 如何实践Devops 版本控制工具(Git) 学习使用 配置环境 源代码仓库 一台配置好环境的云服务器 SSH远程登录 在服务器上安装docker docker技术准备工 ...

  5. DevOps落地实践点滴和踩坑记录-(1)

    记录初衷 本人一直在从事企业内DevOps落地实践的工作,走了不少弯路,也努力在想办法解决面临的问题,期间也经历过不少人和事情,最近突然有想法把经历过的,不管好的不好的都记录下来,分享给和我一样的一线 ...

  6. DevOps落地实践点滴和踩坑记录-(2) -聊聊平台建设

    很久没有写文章记录了,上一篇文章像流水账一样,把所见所闻一个个记录下来.这次专门聊聊DevOps平台的建设吧,有些新的体会和思考,希望给正在做这个事情的同学们一些启发吧. DevOps落地实践点滴和踩 ...

  7. DEVOPS落地实践分享

    DEVOPS落地实践分享 转载本文需注明出处:微信公众号EAWorld,违者必究. 引言: DevOps的理念已经说了很多年,其带来的价值逐渐被接受,很多企业也逐渐引入了DevOps.目前普元DevO ...

  8. 基于GitLab+Jenkins的DevOps赋能实践

    随着微服务.中台架构的兴起,DevOps也变得非常关键,毕竟是一些基础设施层面的建设,如果搞好了对后面的研发工作会有很大的效率提升.关于DevOps本身的概念,网上已经非常多了,在园子里随便搜索一些都 ...

  9. 互联网研发效能之去哪儿网(Qunar)核心领域DevOps落地实践

    本文从业务目标角度出发,确定了开源+自建模式搭建 Qunar 研发工具链整体生态:通过 APPCODE 打通工具链,流程规范化自动化:多种手段+发布门禁助力质量提升:建立应用画像确定运维最小单元,可发 ...

随机推荐

  1. 再不迁移到Material Design Components 就out啦

    翻译自国外文档加自己理解 原文 我们最近宣布了 Material Design Components(MDC)1.1.0 ,这是一个库更新,为您的 Android 应用程序带来了 Material T ...

  2. [Java并发编程之美]第2章 并发编程的其他基础知识 补充知识

    基本概念 并行与并发 并行:单位时间内多个任务同时执行(多核CPU). 并发:同一时间段内多个任务同时都在执行(CPU时间片轮转). 线程安全性问题 线程安全问题:指多个线程同时读写一个共享资源而没有 ...

  3. JVM七大垃圾回收器上篇Serial、ParNeW、Parallel Scavenge、 Serial Old、 Parallel Old、 CMS、 G1

    GC逻辑分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本. 从不同角度分析垃圾收 ...

  4. SSM框架整合核心内容

    所需要的jar包及其版本 Spring 版本:4.3.18   tx.aop.beans.core.web.web-mvc.context.expression.jdbc MyBatis:3.4.6 ...

  5. Java操作Elasticsearch 之 [Java High Level REST Clientedit]

    1. 简述 Elasticsearch 是基于 Lucene 开发的一个分布式全文检索框架,向 Elasticsearch 中存储和从 Elasticsearch 中查询,格式是json. 向 Ela ...

  6. Oracle学习(十三)优化专题

    一.查询频繁,数据量大 索引 使用时机:表中经常查询的字段可以考虑添加索引. 联合索引:若能确认多个条件会同时使用时,可以将这几个条件作为联合索引. 单列索引:若条件查询时,这几个条件不是同时用到的话 ...

  7. 虚拟机系列 | JVM运行时数据区

    本文源码:GitHub·点这里 || GitEE·点这里 一.内存与线程 1.内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱 ...

  8. 系统模块sys的常用方法

    sys.argv参数 sys.argv  等价于是一个列表,argv[0] 代表当前脚本程序路径名,可以通过在外部获取多个参数传递给脚本程序执行,按照列表的取值方式第二个数据就是sys.argv[1] ...

  9. hadoop分布式格式化时出现异常java.net.unknownhostexception

    当搭建好分布式集群后,准备使用命令格式化时 hdfs namenode format 在日志的最后一行出现 java.net.unknownhostexception的异常,通常是你的主机名没有配置好 ...

  10. Spark 模型选择和调参

    Spark - ML Tuning 官方文档:https://spark.apache.org/docs/2.2.0/ml-tuning.html 这一章节主要讲述如何通过使用MLlib的工具来调试模 ...