Devops 开发运维基础篇之Jenkins部署与使用


一、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.20Gitlab-12.4.2
持续集成服务器192.168.8.19Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git, SonarQube
应用测试服务器192.168.8.18JDK1.8,Tomcat8.5

3. 安装 JDK 及配置环境变量

百度网盘提取码:vcg1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

等待安装
在这里插入图片描述
安装成功
在这里插入图片描述

配置环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找到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
在线下载安装包:
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
安装包自提: a3zs在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. 使用补丁包进行激活

在这里插入图片描述
在这里插入图片描述

这个路径是你的安装路径位置

-javaagent:D:\IntelliJ IDEA 2019.3.1\bin\jetbrains-agent.jar

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 构建web项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

默认设置直接apply—>ok

在这里插入图片描述

四、安装 tomcat 服务器

1. 安装软件包

软件包:i0uq

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

git 软件包下载: 3hid

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

退出重新打开一下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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 安装包

提取码:hf7t

下载页面: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 管理员账户创建两个项目,分别为apple01orange01

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果为:
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 token
Certificate:通过上传证书文件的方式
常用的凭证类型有:
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凭证

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用密钥对的形式构成成功

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头发莫的了呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值