1. Jenkins基本介绍

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。现在企业一般使用jenkins落实持续集成、持续部署、持续交付。也可以利用jenkins实现docker自动化流水

2. 安装gitlab

gitlab部署 参考 https://blog.51cto.com/flyfish225/2145495
下载gitlab 最新版
https://packages.gitlab.com/gitlab/gitlab-ce/
安装环境初始化
yum install curl policycoreutils openssh-server openssh-clients postfix -y
默认,使用 Postfix 发送邮件

service postfix start
chkconfig postfix on
systemctl stop firewalld
systemctl disable firewalld
安装gitlab-ce
配置并启动GitLab
gitlab-ctl reconfigure #重新配置应用程序。相当于初始化一下
gitlab-ctl status
vim /etc/gitlab/gitlab.rb
external_url 'http://ip:8899'
unicorn['port'] = 8899
sed -i '13s#http://gitlab.example.com#http://192.168.217.30:8899#' /etc/gitlab/gitlab.rb
改:13 external_url 'http://gitlab.example.com'
为:13 external_url 'http://192.168.217.30:8899'
添加unicorn['port'] =8899 ,防止端口冲突
gitlab的管理

关闭gitlab: # gitlab-ctl stop
启动gitlab: # gitlab-ctl start
重启gitlab: # gitlab-ctl restart
登陆后台
安装git yum install git
基本命令如下:
git config --global user.name "tuwei"
git config --global user.email "[email protected]"
git clone [email protected]:tuwei/test01.git
cd test01
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
上传本地项目到gitlab仓库。
git init
git add .
git commit -m "push current files"
git remote add origin http://192.168.217.30:8090/devopsedu/game-of-life.git

如果提示origin存在
git remote rm origin
git remote add origin http://192.168.217.30:8090/devopsedu/game-of-life.git
git push -u origin master

3. maven安装

下载二进制解压到/usr/local目录使用
maven官网的地址是http://maven.apache.org/
添加环境变量
MAVEN_HOME=/usr/local/apache-maven-3.6.0
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
source /etc/profile
测试mvn -v

4. 安装JDK

yum -y install java-1.8.0

5. 安装jenkins

http://pkg.jenkins.io/redhat-stable/
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
后台登陆进行安装配置,提示jenkins离线,修改配置
vim /var/lib/jenkins/updates/default.json 将链接地址改为www.baidu.com
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml 将https改为http然后重启jenkins服务
主配置文件 vim /etc/sysconfig/jenkins。

根据页面提示安装推荐的插件。

Jenkins后台插件管理是核心功能,filter中搜索gitlab,安装三个
搜索Blue ocean

6. Jenkins基于角色的权限管理RBAC

实际生产环境中一般不使用admin即管理员权限,可以根据角色进行权限管理,如开发、测试、运维等。
这里需要安装一个插件:搜索role,很重要的一个插件。
安装插件后需要启用插件,在系统管理-全局安全配置。
授权策略改为刚安装的role,然后保存。
创建角色-用户-给用户指定角色。
在系统管理-管理用户中创建用户,然后在Manage and Assign Roles中通过Manage Roles创建角色,接着是通过Assign Roles指定用户角色。

7. Jenkins Pipeline

生产环境一般使用pipeline实现自动化流水,当然也可以使用自由式风格构建作业。
语法
node {
stage('代码拉取'){
echo "code pull"
}
stage('代码构建'){
echo "code bbuild"
}
stage('unit test'){
echo "unit test"
}
}
根据之前安装好的gitlab,创建一个group,然后在该group下创建一个demo项目

8. 分布式构建

生产环境一般master不进行业务构建,利用slave节点去构建作业,master主责管理slave。在master 节点管理中添加slave节点,并配置master构建数为0

9. 质量扫描sonarqube

安装sonarqube
1.为Sonar准备MySQL数据库,版本必须大于5.6。

  1. 创建sonar数据库

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar@pw';

mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar@pw';

mysql> FLUSH PRIVILEGES;
3.安装配置启动sonar
yum install -y java-1.8.0
sonar网站下载,解压到/usr/local下并
创建普通用户如sonar,然后将sonar目录属主和属组改为sonar
创建软链接
编写配置文件,修改数据库配置

[root@linx-node2 conf]# vim sonar.properties

sonar.jdbc.username=sonar

sonar.jdbc.password=123456

sonar.jdbc.url=jdbc:mysql://192.168.217.32:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
同时根据服务器内存情况调整jvm中内存参数。
Vim /usr/local/sonarqube/elasticsearch/config/jvm.options
-Xms500m
-Xmx500m
由于本次测试环境虚拟机内存不到1G,故该调整为500m

启动sonar:切换到sonar用户下,执行/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
浏览器访问192.168.217.32:9000
sonar网站 www.sonar.org 文档:https://docs.sonarqube.org/latest/
安装sonarqube scanner进行质量扫描
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
Wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
解压到/usr/local下,修改vim /usr/local/sonar-scanner-3.3.0.1492-linux/conf/sonar-scanner.properties
#----- Default SonarQube server
sonar.host.url=http://192.168.217.32:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8
使用:利用sonar网站提供的代码进行测试 https://github.com/sonarsource
git clone https://github.com/SonarSource/sonar-scanning-examples.git

创建文件vim sonar-project.properties
[root@salt-minion02 sonarqube-scanner-maven]# cat sonar-project.properties

must be unique in a given SonarQube instance

sonar.projectKey=devopsedu-demo

this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.

sonar.projectName=devopsedu-demo
sonar.projectVersion=1.0

Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.

This property is optional if sonar.modules is set.

sonar.sources=.
sonar.java.binaries=.

Encoding of the source code. Default is default system encoding

sonar.sourceEncoding=UTF-8

10. jenkins和sonarqube集成

jenkins安装sonar插件,系统配置sonarqube server地址及token信息。该token需要在sonarqube中进行创建

11. jenkins和gitlab集成

安装gitlab插件,系统配置,gitlab中设置aceess token。
Jenkins构建作业时配置触发器,并生成Secret token
Gitlab中添加webhook,在相关项目中添加

12. Jenkins权限管理之分配job给角色

将不同的job分配给不同的人员且赋予一定的操作权限。
之前有创建用户并且分配,这里创建一个project role,模式采用正则表达式方式,如role为user ,pattern为 user.*,分配权限build read workspace replay tag,然后分配用户指定该角色(item roles)