Jenkins安装和持续集成环境配置

Jenkins安装和持续集成环境配置

持续集成流程说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f1IjP7GQ-1651910098010)(.\assets\image-20220507093313997.png)]

1)首先,开发人员每天进行代码提交,提交到Git仓库

2)然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,

Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新

再执行一次整个流程。

3)最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问

应用。

服务器列表

本课程虚拟机统一采用CentOS7。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b5nGE79I-1651910098011)(.\assets\image-20220507093705659.png)]

Gitlab代码托管服务器安装

Gitlab安装
  1. 安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
  1. 启动ssh服务&设置为开机启动
systemctl enable sshd && sudo systemctl start sshd
  1. 设置postfifix开机自启,并启动,postfifix支持gitlab发信功能
systemctl enable postfix && systemctl start postfix
  1. 开放ssh以及http服务,然后重新加载防火墙列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

如果关闭防火墙就不需要做以上配置

  1. 下载gitlab包,并且安装
在线下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x
86_64.rpm
安装:
rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
  1. 修改gitlab配置
vim /etc/gitlab/gitlab.rb

修改gitlab访问地址和端口,默认为80,我们改为82

external_url 'http://192.168.66.100:82'
nginx['listen_port'] = 82

使用sed

sed -i 's/external_url 'http://192.168.66.100:82'/external_url 'http://192.168.66.100:82'/g' gitlab.rb.tmp

使用awk

// 把a.txt中的前2行,生成到b.txt中
awk 'NR<=2{print > "b.txt"}' a.txt

// 在文本文档的第2行插入一条内容
sed '2i\this is new line' -i ./a.txt

// 在尾部追加一行
echo 'this is end'>> ./a.txt
  1. 重载配置及启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
  1. 把端口添加到防火墙
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload

启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ffh06QF-1651910098012)(.\assets\image-20220507095653467.png)]

Gitlab添加组、创建用户、创建项目

1)创建组

使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限,

不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的

管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CJCaHbyW-1651910098013)(.\assets\image-20220507100556764.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-93q7VZ2u-1651910098014)(.\assets\image-20220507100639555.png)]

2)创建用户

创建用户的时候,可以选择Regular或Admin类型。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0IxeD0f-1651910098016)(.\assets\image-20220507100717654.png)]

创建完用户后,立即修改密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9snD2JX-1651910098018)(.\assets\image-20220507100745573.png)]

3)将用户添加到组中

选择某个用户组,进行Members管理组的成员

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6v1MpY6v-1651910098019)(.\assets\image-20220507100820541.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMZ44S3X-1651910098020)(.\assets\image-20220507100844575.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uflNVB17-1651910098021)(.\assets\image-20220507100912405.png)]

Gitlab用户在组里面有5种不同权限:

Guest:可以创建issue、发表评论,不能读写版本库 Reporter:可以克隆代码,不能提交,QA、PM

可以赋予这个权限

Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限

Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个

权限 Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限

4)在用户组中创建项目

以刚才创建的新用户身份登录到Gitlab,然后在用户组中创建新的项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfwgQOi3-1651910098023)(.\assets\image-20220507101034986.png)]

源码上传到Gitlab仓库

下面来到IDEA开发工具,我们已经准备好一个简单的Web应用准备到集成部署。

我们要把源码上传到Gitlab的项目仓库中。

1)项目结构说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSOSsdoq-1651910098024)(.\assets\image-20220507101135781.png)]

2)开启版本控制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rz8MpAaT-1651910098025)(.\assets\image-20220507101220193.png)]

2)提交代码到本地仓库

先Add到缓存区

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uGppbS7y-1651910098026)(.\assets\image-20220507101612045.png)]

再Commit到本地仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k0rpj1Xq-1651910098027)(.\assets\image-20220507105315039.png)]

Jenkins持续集成环境

Jenkins安装

1)安装JDK

Jenkins需要依赖JDK,所以先安装JDK1.8

yum install java-1.8.0-openjdk* -y

安装目录为:/usr/lib/jvm

2)获取jenkins安装包

下载页面:https://jenkins.io/zh/download/

安装文件:jenkins-2.190.3-1.1.noarch.rpm

3)把安装包上传到192.168.66.101服务器,进行安装

rpm -ivh jenkins-2.190.3-1.1.noarch.rpm

4)修改Jenkins配置

vi /etc/syscofifig/jenkins

修改内容如下:

JENKINS_USER="root"
JENKINS_PORT="8888"

5)启动Jenkins

systemctl start jenkins

6)打开浏览器访问

http://192.168.66.101:8888

注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口

7)获取并输入admin账户密码

cat /var/lib/jenkins/secrets/initialAdminPassword

8)跳过插件安装

因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-58171d65-1651910098028)(.\assets\image-20220507133504766.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qjpUiihs-1651910098031)(.\assets\image-20220507133526279.png)]

Jenkins插件管理
修改Jenkins插件下载地址

Jenkins->Manage Jenkins->Manage Plugins,点击Available

这样做是为了把Jenkins官方的插件列表下载到本地,接着修改地址文件,替换为国内插件地址

cd /var/lib/jenkins/updates

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

最后,Manage Plugins点击Advanced,把Update Site改为国内插件下载地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yyBVlVs7-1651910098033)(.\assets\image-20220507134342667.png)]

Sumbit后,在浏览器输入:

http://192.168.66.101:8888/restart ,重启Jenkins。

中文汉化插件

Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"

用户权限管理插件

我们可以利用 Role-based Authorization Strategy 插件来管理Jenkins用户权限

  1. 安装Role-based Authorization Strategy插件

  2. 开启权限全局安全配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K3oC1CQZ-1651910098034)(.\assets\image-20220507134819894.png)]

授权策略切换为"Role-Based Strategy",保存

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6qTq6AI-1651910098035)(.\assets\image-20220507134859504.png)]

  1. 创建角色

在系统管理页面进入 Manage and Assign Roles

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HsQ9w0Z-1651910098035)(.\assets\image-20220507134946667.png)]

点击"Manage Roles"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lVk8EgtC-1651910098036)(.\assets\image-20220507135019623.png)]

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Project roles(项目角色):针对某个或者某些项目的角色

Slave roles(奴隶角色):节点相关的权限

  1. 创建用户

在系统管理页面进入 Manage Users

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-scwF4uok-1651910098036)(.\assets\image-20220507135209394.png)]

  1. 给用户分配角色

系统管理页面进入Manage and Assign Roles,点击Assign Roles进行用户角色分配。

凭证管理插件

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

  1. 安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件

可以添加的凭证有5种:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9T1yyjSR-1651910098037)(.\assets\image-20220507135458238.png)]

  • Username with password:用户名和密码

  • SSH Username with private key: 使用SSH用户和密钥

  • Secret fifile:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret fifile就会被删除。

  • Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token

  • Certifificate:通过上传证书文件的方式

常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)

安装Git插件和Git工具

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CHVGVNDp-1651910098038)(.\assets\image-20220507135722763.png)]

  1. CentOS7上安装Git工具:
yum install git -y // 安装
git --version // 安装后查看版本
  1. 用户密码类型

1)创建凭证

Jenkins->凭证->系统->全局凭证->添加凭证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TycSPWsq-1651910098038)(.\assets\image-20220507135857607.png)]

选择"Username with password",输入Gitlab的用户名和密码,点击"确定"。

2)测试凭证是否可用

创建一个FreeStyle项目:新建Item->FreeStyle Project->确定

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vCtUyMBC-1651910098039)(.\assets\image-20220507135933522.png)]

找到"源码管理"->“Git”,在Repository URL复制Gitlab中的项目URL

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8WC6ahqq-1651910098039)(.\assets\image-20220507140025129.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gXninQSp-1651910098040)(.\assets\image-20220507140044202.png)]

点击构建”Build Now“

查看**/var/lib/jenkins/workspace/**目录,发现已经从Gitlab成功拉取了代码到Jenkins中。

  1. SSH密钥类型

SSH免密登录示意图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQGtaZ8G-1651910098040)(.\assets\image-20220507140428066.png)]

1)使用root用户生成公钥和私钥

ssh-keygen -t rsa

id_rsa:私钥文件

id_rsa.pub:公钥文件

2)把生成的公钥放在Gitlab中

以root账户登录->点击头像->Settings->SSH Keys

复制刚才id_rsa.pub文件的内容到这里,点击"Add Key"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ULEbEWfN-1651910098041)(.\assets\image-20220507140556443.png)]

3)在Jenkins中添加凭证,配置私钥

在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制过来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KBDPFyxj-1651910098042)(.\assets\image-20220507140739701.png)]

4)测试凭证是否可用

新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VF6SQuyf-1651910098042)(.\assets\image-20220507140843226.png)]

点击构建”Build Now“

Maven安装和配置

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。

  1. 安装Maven

先上传Maven软件到192.168.66.101

tar -xzf apache-maven-3.6.2-bin.tar.gz // 解压
mkdir -p /opt/maven // 创建目录
mv apache-maven-3.6.2/* /opt/maven // 移动文件
  1. 配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk 
export MAVEN_HOME=/opt/maven 
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
source /etc/profile // 配置生效
mvn -v // 查找Maven版本
  1. 全局工具配置关联JDK和Maven

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUfS9CLh-1651910098043)(.\assets\image-20220507141209007.png)]

  1. 添加Jenkins全局变量

Manage Jenkins->Confifigure System->Global Properties ,添加三个全局变量

JAVA_HOME、M2_HOME、PATH+EXTRA

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ujOfi2a-1651910098043)(.\assets\image-20220507141358379.png)]

  1. 修改Maven的settings.xml
mkdir /root/repo // 创建本地仓库目录
vi /opt/maven/conf/settings.xml

本地仓库改为:/root/repo/

添加阿里云私服地址:

alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
  1. 测试Maven是否配置成功

使用之前的gitlab密码测试项目,修改配置

构建->增加构建步骤->Execute Shell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5EXhZpLm-1651910098044)(.\assets\image-20220507141600885.png)]

输入

mvn clean package

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zTYTNtA2-1651910098045)(.\assets\image-20220507141631031.png)]

Pipeline流水线项目构建
  1. 安装Pipeline插件

Manage Jenkins->Manage Plugins->可选插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b6F3kiKM-1651910098045)(.\assets\image-20220507141846064.png)]

pipeline { 
    agent any 
        stages { 
            stage('Hello') { 
            steps { 
            	echo 'Hello World' 
            } 
        } 
    } 
}

stages:代表整个流水线的所有执行阶段。通常stages只有1个,里面包含多个stage

stage:代表流水线中的某个阶段,可能出现n个。一般分为拉取代码,编译构建,部署等阶段。

steps:代表一个阶段内需要执行的逻辑。steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。

编写一个简单声明式Pipeline:

pipeline { 
    agent any 
    stages { 
        stage('拉取代码') { 
            steps { 
            	echo '拉取代码' 
            } 
        }
        stage('编译构建') { 
        	steps { 
        		echo '编译构建' 
        	} 
        }
        stage('项目部署') { 
        	steps { 
        		echo '项目部署' 
        	} 
        } 
    } 
}

点击构建,可以看到整个构建过程

  1. Scripted Pipeline脚本式Pipeline

创建项目,选择"Scripted Pipeline" 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pskGbbfu-1651910098046)(.\assets\image-20220507142304775.png)]

node { 
    def mvnHome stage('Preparation') { 
    // for display purposes 
    }
    stage('Build') {
    }
    stage('Results') { 
    } 
}

Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,后续讲到Jenkins的Master-Slave架构的时候用到。

Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:

Build、Test、Deploy,Stage 是一个逻辑分组的概念。

Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,由各类 Jenkins 插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令一样。

  1. Pipeline Script from SCM

1)把Pipeline脚本放在项目中(一起进行版本控制)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-flsm5W3v-1651910098047)(.\assets\image-20220507142613003.png)]

把Jenkinsfifile上传到Gitlab

2)在项目中引用该文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gQhzOOFt-1651910098047)(.\assets\image-20220507142647266.png)]

Jenkins项目构建细节常用的构建触发器

Jenkins内置4种构建触发器:

  • 触发远程构建

  • 其他工程构建后触发(Build after other projects are build)

  • 定时构建(Build periodically)

  • 轮询SCM(Poll SCM)

触发远程构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TOX9IgBE-1651910098048)(.\assets\image-20220507142749197.png)]

其他工程构建后触发

1)创建pre_job流水线工程

2)配置需要触发的工程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5eERenLk-1651910098049)(.\assets\image-20220507142834964.png)]

定时构建

定时字符串从左往右分别为: 分 时 日 月 周

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owhQOUes-1651910098050)(.\assets\image-20220507142916746.png)]

轮询SCM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnjYtzll-1651910098050)(.\assets\image-20220507143615779.png)]

Git hook自动触发构建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcjmphnq-1651910098051)(.\assets\image-20220507143006539.png)]

  1. 安装Gitlab Hook插件

Gitlab Hook和GitLab

  1. Gitlab配置webhook

1)开启webhook功能

使用root账户登录到后台,点击Admin Area -> Settings -> Network

勾选"Allow requests to the local network from web hooks and services"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dEaFJ1Ra-1651910098051)(.\assets\image-20220507143120177.png)]

2)在项目添加webhook

点击项目->Settings->Integrations

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FyAp7TaC-1651910098052)(.\assets\image-20220507143150205.png)]

注意:以下设置必须完成,否则会报错!

Manage Jenkins->Confifigure System

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zNcpqj1O-1651910098052)(.\assets\image-20220507143227292.png)]

Jenkins的参数化构建

有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时我们可以使用参数化构建。

Jenkins支持非常丰富的参数类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xAU5UR8L-1651910098053)(.\assets\image-20220507143936651.png)]

接下来演示通过输入gitlab项目的分支名称来部署不同分支项目。

新建分支:dev,代码稍微改动下,然后提交到gitlab上。

这时看到gitlab上有一个两个分支:master和dev

在Jenkins添加字符串类型参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ji42en6A-1651910098054)(.\assets\image-20220507144037441.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q51cfY5A-1651910098054)(.\assets\image-20220507144111030.png)]

改动pipeline流水线代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7YymWMol-1651910098055)(.\assets\image-20220507144136975.png)]

点击Build with Parameters

输入分支名称,构建即可!

SonarQube代码审查

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2KFZFPM-1651910098056)(.\assets\image-20220507144332991.png)]

mysql:5.7安装

wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum localinstall mysql57-community-release-el7-11.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
vim /etc/yum.repos.d/mysql-community.repo

将[mysql57-community]下的enabled=1改为enabled=0

yum install mysql-community-server
systemctl enable mysqld && systemctl start mysqld && systemctl daemon-reload

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改

grep 'temporary password' /var/log/mysqld.log
vim /etc/my.cnf
validate_password_policy=0
systemctl restart mysqld
show variables like '%character%';
mysql –u root –p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql123';
或者
set password for 'root'@'localhost'= password('mysql123');

开启mysql的远程登录

grant all privileges on *.* to 'root' @'%' identified by 'mysql123';
flush privileges;

设置默认编码为utf8

vim /etc/my.cnf
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
systemctl restart mysqld
show variables like '%character%';

参考:https://jingyan.baidu.com/article/4d58d5417ca1fc9dd5e9c05f.html

在MySQL创建sonar数据库

下载sonar压缩包:

https://www.sonarqube.org/downloads/

解压sonar,并设置权限

yum install unzip
unzip sonarqube-6.7.4.zip 解压
mkdir /opt/sonar 创建目录
mv sonarqube-6.7.4/* /opt/sonar 移动文件
useradd sonar 创建sonar用户,必须sonar用于启动,否则报错
chown -R sonar. /opt/sonar 更改sonar目录及文件权限

修改sonar配置文件

vi /opt/sonarqube-6.7.4/conf/sonar.properties
内容如下:
sonar.jdbc.username=root sonar.jdbc.password=Root@123
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?
useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=
maxPerformance&useSSL=false

注意:sonar默认监听9000端口,如果9000端口被占用,需要更改。

sonarqube启动时elasticsearch报错: **max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]**处理

说明最新版本sonarqube需要内存大小不低于262144,那首先要保证运行环境的内存大小不低于3G,例如我采用的VMware直接给加大到3G以上

然后在进入虚机环境

vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
vm.max_map_count = 262144
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
登录后使用
ulimit -S -n
ulimit -H -n

启动sonar

cd /opt/sonarqube-6.7.4
su sonar ./bin/linux-x86-64/sonar.sh start 启动
su sonar ./bin/linux-x86-64/sonar.sh status 查看状态
su sonar ./bin/linux-x86-64/sonar.sh stop 停止
tail -f logs/sonar.logs 查看日志

访问sonar

http://192.168.66.101:9000

创建token

token要记下来后面要使用

实现代码审查

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SFJU464V-1651910098057)(.\assets\image-20220507145611736.png)]

  1. 安装SonarQube Scanner插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8WfqrcMI-1651910098057)(.\assets\image-20220507145648522.png)]

  1. 添加SonarQube凭证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajZeX5nf-1651910098058)(.\assets\image-20220507145721198.png)]

  1. Jenkins进行SonarQube配置

Manage Jenkins->Confifigure System->SonarQube servers

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZTaejk5-1651910098059)(.\assets\image-20220507145813455.png)]

  1. 关闭审查结果上传到SCM功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1pdblRD-1651910098060)(.\assets\image-20220507145855690.png)]

sonar 汉化问题

默认的sonar 满屏英文,也不好理解,可以利用sonar 的插件体系,直接汉化

登录sonar->选择Administration中->选择MarketPlace->搜索Chinese Pack->点击安装,安装完成后,按照提示重启即可

Harbor安装及使用

Harbor需要安装在192.168.66.102上面

1)先安装Docker并启动Docker(已完成)

参考之前的安装过程

2)先安装docker-compose

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

3)给docker-compose添加执行权限

sudo chmod +x /usr/local/bin/docker-compose

4)查看docker-compose是否安装成功

docker-compose -version

5)下载Harbor的压缩包(版本为:v1.9.2)

https://github.com/goharbor/harbor/releases

6)上传压缩包到linux,并解压

tar -xzf harbor-offline-installer-v1.9.2.tgz
mkdir /opt/harbor
mv harbor/* /opt/harbor
cd /opt/harbor

7)修改Harbor的配置

vi harbor.yml

修改hostname和port

hostname: 192.168.66.102
port: 85

8)安装Harbor

./prepare
./install.sh

9)启动Harbor

docker-compose up -d 启动
docker-compose stop 停止
docker-compose restart 重新启动

10)访问Harbor

http://192.168.66.102:85

默认账户密码:admin/Harbor12345

创建一个新的项目 tensquare

把镜像上传到Harbor

1)给镜像打上标签

docker tag eureka:v1 192.168.66.102:85/tensquare/eureka:v1

2)把Harbor地址加入到Docker信任列表

vi /etc/docker/daemon.json

{
	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"], 			"insecure-registries": ["192.168.66.102:85"] 
}

重启Docker

3)登录Harbor

docker login -u 用户名 -p 密码 192.168.66.102:85

4)推送镜像

docker push 192.168.66.102:85/tensquare/eureka:v1
从Harbor下载镜像
docker login -u 用户名 -p 密码 192.168.66.102:85
docker pull 192.168.66.102:85/tensquare/eureka:v1
拉取镜像和发布应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ryZTaWQ6-1651910098060)(.\assets\image-20220507151953767.png)]

项目代码上传到Gitlab

在IDEA操作即可,参考之前的步骤。包括后台微服务和前端web网站代码

从Gitlab拉取项目源码

1)创建Jenkinsfifile文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lofQ2DF6-1651910098061)(.\assets\image-20220507153300390.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZDfB6bHo-1651910098062)(.\assets\image-20220507153354139.png)]

2)拉取Jenkinsfifile文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xTt99fac-1651910098062)(.\assets\image-20220507153426211.png)]

提交到SonarQube代码审查

1)创建项目,并设置参数

创建tensquare_back项目,添加两个参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y5aQb9ek-1651910098063)(.\assets\image-20220507153542974.png)]

2)每个项目的根目录下添加sonar-project.properties

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VCUmv15r-1651910098064)(.\assets\image-20220507153619251.png)]

修改sonar.projectKey和sonar.projectName

3)修改Jenkinsfifile构建脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xyeULtGR-1651910098065)(.\assets\image-20220507153659217.png)]

使用Dockerfifile编译、生成镜像

利用dockerfifile-maven-plugin插件构建Docker镜像

1)在每个微服务项目的pom.xml加入dockerfifile-maven-plugin插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DEyNcTNl-1651910098065)(.\assets\image-20220507153759546.png)]

2)在每个微服务项目根目录下建立Dockerfifile文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZOubGSJ-1651910098066)(.\assets\image-20220507153817884.png)]

3)修改Jenkinsfifile构建脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IONBMeL0-1651910098067)(.\assets\image-20220507153846679.png)]

上传到Harbor镜像仓库

1)修改Jenkinsfifile构建脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HzQ8zgV-1651910098068)(.\assets\image-20220507153954712.png)]

2)使用凭证管理Harbor私服账户和密码

先在凭证建立Harbor的凭证,在生成凭证脚本代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKJeniwI-1651910098068)(.\assets\image-20220507154043887.png)]

拉取镜像和发布应用

**安装 Publish Over SSH 插件 **

配置远程部署服务器

1)拷贝公钥到远程服务器

ssh-copy-id 192.168.66.103

2)系统配置->添加远程服务器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lvMjL5pY-1651910098069)(.\assets\image-20220507154252029.png)]

修改Jenkinsfifile构建脚本

生成远程调用模板代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0YR9lHe2-1651910098069)(.\assets\image-20220507154353138.png)]

添加一个port参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6xJZsxSD-1651910098070)(.\assets\image-20220507154415888.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9AdPJeuO-1651910098070)(.\assets\image-20220507154458490.png)]

编写部署脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWWcpBHb-1651910098071)(.\assets\image-20220507154538725.png)]

上传deploy.sh文件到/opt/jenkins_shell目录下,且文件至少有执行权限!

chmod +x deploy.sh // 添加执行权限

部署前端静态web网站

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LAjbZzlU-1651910098071)(.\assets\image-20220507154629099.png)]

安装NodeJS插件

Jenkins配置Nginx服务器

Manage Jenkins->Global Tool Confifiguration

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S8Sy5huI-1651910098072)(.\assets\image-20220507154854341.png)]

建立Jenkinsfifile构建脚本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVdpVHIR-1651910098072)(.\assets\image-20220507154947270.png)]

设计Jenkins集群项目的构建参数

1)安装Extended Choice Parameter插件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值