文章目录
- 一、Jenkins 概述
- 1. Jenkins 介绍
- 2. Jenkins 环境部署
- 3. 安装 JDK 及配置环境变量
- 二、Gitlab 仓库概述
- 1. Gitlab 简介
- 2. Gitlab安装
- 3. Gitlab 添加组、创建用户、创建项目
- 三、源码上传到 Gitlab 仓库
- 1. 安装开发工具 IDEA
- 2. 使用补丁包进行激活
- 3. 构建web项目
- 四、安装 tomcat 服务器
- 1. 安装软件包
- 2. 配置 IDEA 识别 tomcat
- 3. 开启版本控制
- 4. 安装 git
- 5. 先Add到缓存区
- 6. 推送到Gitlab项目仓库中
- 五、Jenkins 安装与使用
- 1. 安装 jdk
- 2. 获取 jenkins 安装包
- 3. 解锁 Jenkins
- 4. Jenkins密码遗忘处理
- 5. Jenkins 插件管理
- 6. 下载中文汉化插件
- 7. 用户权限管理
- 8. 凭证管理
- 8.1 用户密码类型
- 8.2 SSH密钥类型
一、Jenkins 概述
1. Jenkins 介绍
- Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。
官网地址 - Jenkins的特征
① 开源的 Java 语言开发持续集成工具,支持持续集成,持续部署;
② 易于安装部署配置:可通过yum安装或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
③ 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
④ 分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
⑤ 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
⑥ 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
2. Jenkins 环境部署
- 首先,开发人员每天进行代码提交,提交到Git仓库
- 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK, Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
- 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。
服务器列表
名称 | IP地址 | 安装的软件 |
代码托管服务器 | 192.168.8.20 | Gitlab-12.4.2 |
持续集成服务器 | 192.168.8.19 | Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git, SonarQube |
应用测试服务器 | 192.168.8.18 | JDK1.8,Tomcat8.5 |
3. 安装 JDK 及配置环境变量
等待安装
安装成功
配置环境变量
找到JDK的路径
C:\Program Files\Java\jdk1.8.0_152\bin
二、Gitlab 仓库概述
1. Gitlab 简介
GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
GitLab 和 GitHub 一样属于第三方基于 Git 开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加 SSHKey 等等。不同的是,GitLab 是可以部署到自己的服务器 上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放 在别人的服务器上吧?简单来说可把 GitLab 看作个人版的 GitHub。
2. Gitlab安装
- 更改三台服务器的主机名
hostnamectl set-hostname gitlab && su
hostnamectl set-hostname jenkins && su
hostnamectl set-hostname tomcat && su
- 安装相关依赖
[root@gitlab ~]#yum install -y policycoreutils openssh-server openssh-clients.x86_64 postfix
- 启动ssh服务并且设置开机启动
[root@gitlab ~]#systemctl start sshd && systemctl enable sshd
- 设置postfix开机自启,并启动(postfix支持gitlab发信功能)
[root@gitlab ~]#systemctl start postfix && systemctl enable postfix
- 开放 ssh 以及 http 服务,然后重新加载防火墙列表 (如果关闭了防火墙则不需要做以上配置)
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
- 下载 gitlab 包,并安装
百度网盘提取码:9x0z
在线下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
安装:
rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
- 修改 gitlab 配置
修改 gitlab 访问地址和端口,默认为80,我们改为82 external_url 'http://192.168.8.20:82'
[root@gitlab ~]#vim /etc/gitlab/gitlab.rb
23 external_url 'http://192.168.8.20:82' #访问地址设为本机IP地址
1112 nginx['listen_port'] = 82 #监听端口改为82,前面的注释需要取消掉
- 重新载入配置并且启动gitlab
[root@gitlab ~]#gitlab-ctl reconfigure
- 重启
[root@gitlab ~]#gitlab-ctl restart
- 把端口添加到防火墙
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
- 启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可
3. Gitlab 添加组、创建用户、创建项目
- 创建组
使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限, 不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的 管理
- 创建用户
创建用户的时候,可以选择Regular或Admin类型
- 创建完用户后,立即修改密码
- 将用户添加到组中
Gitlab用户在组里面有5种不同权限:
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限
- 在用户组中创建项目
以刚才创建的新用户身份登录到Gitlab,然后在用户组中创建新的项目
三、源码上传到 Gitlab 仓库
我们要把源码上传到Gitlab的项目仓库中,在idea中Maven构建web项目,且进行环境设置
1. 安装开发工具 IDEA
官网地址:http://www.jetbrains.com/idea/download
2. 使用补丁包进行激活
这个路径是你的安装路径位置
-javaagent:D:\IntelliJ IDEA 2019.3.1\bin\jetbrains-agent.jar
3. 构建web项目
默认设置直接apply—>ok
四、安装 tomcat 服务器
1. 安装软件包
2. 配置 IDEA 识别 tomcat
运行Tomcat,但是会失败
解决方法如下
去tomcat的server.xml看一下(文件路径:C:\Program Files\Apache Software Foundation\Tomcat 8.5\conf),一般安装默认有个端口是-1,端口不能是-1,(数值在1-65535之间的任意一个整数,一般会选大于1024的,小于1024的一般被本地计算机程序占),改成8000就行。
我们建立了一个非常简单的web应用,只有一个index.jsp页面,如果部署好,可以访问该页面就成功了!
3. 开启版本控制
提示需要进行下载
4. 安装 git
退出重新打开一下
5. 先Add到缓存区
发现代码并没有提交到gitlab上面来,只是提交到了本地
6. 推送到Gitlab项目仓库中
刷新gitlab项目
提交成功
五、Jenkins 安装与使用
1. 安装 jdk
- Jenkins需要依赖JDK,所以先安装JDK1.8 ,安装目录为:
/usr/lib/jvm
yum install java-1.8.0-openjdk* -y
2. 获取 jenkins 安装包
下载页面:https://jenkins.io/zh/download/
安装文件:jenkins-2.277.4-1.1.noarch.rpm
- 把安装包上传到
192.168.8.19
服务器,进行安装
rpm -ivh jenkins-2.277.4-1.1.noarch.rpm
- 修改Jenkins配置
vim /etc/sysconfig/jenkins
修改内容如下:注意:如果用户使用默认,则需要在系统上创建jenkins用户
JENKINS_USER="root" JENKINS_PORT="8888"
- 启动Jenkins
systemctl start jenkins
- 打开浏览器访问
http://192.168.8.19:8888
3. 解锁 Jenkins
注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口
- 获取并输入admin账户密码
[root@jenkins ~]#cat /var/lib/jenkins/secrets/initialAdminPassword
- 跳过插件安装,因为Jenkins插件需要连接默认官网下载,速度非常慢,而且经过会失败,所以我们暂时先跳过插件安装
- 添加一个管理员账户,并进入Jenkins后台
4. Jenkins密码遗忘处理
修改配置文件安全功能禁用
vim /var/lib/jenkins/config.xml
<useSecurity>false</useSecurity>
//重启jenkins服务
systemctl restart jenkins
可以直接登录修改账号密码
修改jenkins中已有的用户名和ID
vim /var/lib/jenkins/users/users.xml
5. Jenkins 插件管理
Jenkins 本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。
- 修改 Jenkins 插件下载地址 ,Jenkins 国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:
Jenkins->Manage Jenkins->Manage Plugins,点击Available
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
- Sumbit后,在浏览器输入: http://192.168.8.19:8888/restart ,重启Jenkins。
6. 下载中文汉化插件
Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"
完成后如下所示
重启Jenkins后,就看到Jenkins汉化了,但可能部分菜单汉化不成功
版本升级(Jenkins 下载的是var 包)
这里建议升级到2.333版本
升级完成
7. 用户权限管理
我们可以利用 Role-based Authorization Strategy
插件来管理 Jenkins 用户权限
- 开启权限全局安全配置
- 创建角色
Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Project roles(项目角色): 针对某个或者某些项目的角色
Slave roles(奴隶角色) :节点相关的权限
- 我们添加以下三个角色:
baseRole:该角色为全局角色。这个角色需要绑定 Overall 下面的 Read 权限,是为了给所有用户绑 定最基本的 Jenkins 访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
role1:该角色为项目角色。使用正则表达式绑定apple.*
,意思是只能操作apple开头的项目
role2:该角色也为项目角色。绑定orange.*
,意思是只能操作 orange 开头的项目
- 创建用户,在系统管理页面进入 Manage Users
分别创建两个用户:jack和kali
- 给用户分配角色
系统管理页面进入Manage and Assign Roles,点击Assign Roles
绑定规则如下:
kali用户分别绑定baseRole和role1角色
jack用户分别绑定baseRole和role2角色
- 创建项目测试权限
以 jerry 管理员账户创建两个项目,分别为apple01
和orange01
结果为:
kali用户登录,只能看到 apple01 项目
jack用户登录,只能看到 orange01 项目
8. 凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便 Jenkins 可以和这些第三方的应用进行交互。
- 安装
Credentials Binding
插件
安装插件后,会多出来 “凭证” 菜单,在这里可以管理所有凭证
可以添加的凭证有以下的5种:
Username with password
:用户名和密码SSH Username with private key
: 使用SSH用户和密钥Secret file
:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。Secret text
:需要保存的一个加密的文本串,如钉钉机器人或Github的api tokenCertificate
:通过上传证书文件的方式
常用的凭证类型有:
Username with password(用户密码)和 SSH Username with private key(SSH
密钥)
- 以使用 Git 工具到 Gitlab 拉取项目源码为例,演示 Jenkins 的如何管理 Gitlab 的凭证
Git插件安装
Jenkins服务器安装 Git工具
[root@jenkins ~]#yum install git -y
[root@jenkins ~]#git --version
git version 1.8.3.1
8.1 用户密码类型
添加凭证
选择"Username with password",输入Gitlab的用户名和密码,点击"确定"
- 测试凭证是否可用
创建一个 FreeStyle 项目
找到 “源码管理”-> “Git”,在Repository URL 复制 Gitlab 中的项目 URL
保存配置后,点击构建”Build Now“ 开始构建项目
查看 /var/lib/jenkins/workspace/ 目录,发现已经从 Gitlab 成功拉取了代码到 Jenkins 中
[root@jenkins ~]#cd /var/lib/jenkins/workspace/
[root@jenkins /var/lib/jenkins/workspace]#ls
test01 test01@tmp test02 test02@tmp
8.2 SSH密钥类型
- 使用 root 用户生成公钥和私钥,在
/root/.ssh/
目录保存了公钥和私钥
[root@jenkins ~]#ssh-keygen -t rsa
- 把生成的公钥放在 Gitlab 中
以 root 账户登录 gitlab ->点击头像-> Settings -> SSH Keys 复制刚才 id_rsa.pub 文件的内容到这里,点击 “Add Key”
- 在 Jenkins 中添加凭证,配置私钥
在 Jenkins 添加一个新的凭证,类型为 “SSH Username with private key”,把刚才生成私有文件内容复制过来
- 测试凭证是否可用
新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证
使用密钥对的形式构成成功