Jenkins的快速入门

文章目录


一、Jenkins是什么?

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。官网: http://jenkins-ci.org/

Jenkins的特征:

  • 开源的Java语言开发持续集成工具,支持持续集成,持续部署。
  • 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
  • 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
  • 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
  • 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

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

1.持续集成流程说明

  1. 首先,开发人员每天进行代码提交,提交到Git仓库。
  2. 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
  3. 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

服务器列表

服务器均使用centos7:

名称 IP地址 安装的软件
代码托管服务器 192.168.159.100 Gitllab-12.4.2
持续集成服务器 192.168.159.101 Jenkins-2.410-1.1、Jdk1.8/Jdk11、Maven3.6.2、Git、SonarQube
应用测试服务器 192.168.159.102 Jdk1.8、Tomcat8.5
应用生产服务器 192.168.159.103 Jdk1.8、Tomcat8.5

2.Gitlab代码托管服务器安装

Gitlab简介:

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发 ,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

官网: https://about.gitlab.com/

Gitlab安装

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

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

  1. 下载gitlab包,并且安装

在线下载安装包:

shell 复制代码
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm

安装:

shell 复制代码
rpm -i gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
  1. 修改gitlab配置
shell 复制代码
vi /etc/gitlab/gitlab.rb

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

shell 复制代码
external_url 'http://192.168.159.100:82
nginx['listen_port'] = 82
  1. 重载配置及启动gitlab
shell 复制代码
gitlab-ctl reconfigure
gitlab-ctl restart
  1. 把端口添加到防火墙
shell 复制代码
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload

启动成功后,在浏览器输入:192.168.159.100:82 看到以下修改管理员root 的页面,修改密码为:root123456 后,然后登录即可。


Gitlab的使用

切换中文
添加组

使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限,不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理。


创建用户

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

  • Regular: 普通用户,只能访问属于他的组和项目
  • Admin:管理员,可以访问所有组和项目

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


    用户名和密码:linging/linging123456
将用户添加到组

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

  • Guest:可以创建issue、发表评论,不能读写版本库。
  • Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限。
  • Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限。
  • Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限。
  • Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限。
创建项目

root账户创建项目:

idea中代码上传Gitlab

linging开发者账户上传项目:

add到暂存区:

commit到本地仓库:

push到远程仓库:




3.Jenkins持续集成环境服务器安装

Jenkins安装

1)安装JDK

Jenkins需要依赖JDK,所以先安装JDK11

shell 复制代码
yum install java-11-openjdk* -y 

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

2)获取jenkins安装包

下载页面:https://jenkins.io/zh/download/清华镜像站

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

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

shell 复制代码
rpm -ivh jenkins-2.410-1.1.noarch.rpm

4)修改Jenkins配置

shell 复制代码
vi /etc/sysconfig/jenkins

修改内容如下:

shell 复制代码
JENKINS_USER="root"
JENKINS_PORT="8888"

5)启动Jenkins

shell 复制代码
# 开放端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
# 启动
systemctl start jenkins

6)打开浏览器访问

text 复制代码
http://192.168.159.101:8888

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

shell 复制代码
cat /var/lib/jenkins/secrets/initialAdminPassword

8)跳过插件安装

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

用户名和密码:jenkins/123456

直接下一步下一步,直到完成。

Jenkins插件

Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。

修改Jenkins插件下载地址

Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:

1)把Jenkins官方的插件列表下载到本地

shell 复制代码
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

2)Jenkins->Manage Jenkins->Manage Plugins,点击Advanced,将Update Site的URL替换为下面的:

shell 复制代码
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

3)Sumbit后,在浏览器输入: http://192.168.159.101:8888/restart ,重启Jenkins。

汉化插件安装

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

直接从jenkins的管理插件下载安装发现报错,由于安装的jenkins版本比较低,插件很多版本都不支持,解决方式:1)升级jenkins版本 2)自己下载插件上传安装

下面是直接使用下载的插件进行安装,中文插件,选择最低版本。。。,但是由于每次都需要下载安装所以直接升级jenkins更好,当前步骤已经由原来的jenkins2.19版本升级为2.40版本,所以不会出现插件版本问题。


以上为旧版本UI界面,下面为新版本界面:

用户权限管理

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

安装Role-based Authorization Strategy插件

然后上传即可。

开启权限全局安全配置

Jenkins->Manage Jenkins->Configure Global Security,授权策略切换为"Role-Based Strategy",保存。

创建角色

Jenkins->Manage Jenkins->Manage and Assign Roles,点击"Manage Roles"

  • Global roles(全局角色):管理员等高级用户可以创建基于全局的角色 Project roles(项目角色):针对某个或者某些项目的角色
  • Slave roles(奴隶角色):节点相关的权限

我们添加以下三个角色:

  • baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
  • role1:该角色为项目角色。使用正则表达式绑定"test.*",意思是只能操作test开头的项目。
  • role2 :该角色为项目角色。绑定"linging.*",意思是只能操作linging开头的项目。

创建用户

Jenkins->Manage Jenkins->Manage Users,点击新建用户:

新建2个用户,一个zhangsan,一个lisi,然后进入角色页面进行用户角色分配:

  • zhangsan绑定baseRole角色和role1角色
  • lisi绑定baseRole角色和role2角色

    Jenkins->Manage Jenkins->Manage and Assign Roles,点击Assign Roles进行角色分配。

    测试项目权限
    使用管理员账户创建2个项目。

    分别登录两个新创建的用户:
  • zhangsan用户只能看到test-linging项目
  • lisi用户只能看到linging-test项目

凭证管理

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

安装Credentials Binding插件

要在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插件和Git工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。

CentOS7上安装Git工具:

shell 复制代码
# 安装
yum install git -y
# 安装后查看版本 
git --version 
用户密码类型

1)创建凭证


2)测试凭证是否可用

创建一个FreeStyle项目,新建Item->FreeStyle Project->确定,然后配置gitlib的项目URL:

保存后,build项目。

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

SSH密钥类型

SSH免密登录示意图:

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

shell 复制代码
ssh-keygen -t rsa

在/root/.ssh/目录保存了公钥和使用:

  • id_rsa:私钥文件
  • id_rsa.pub:公钥文件

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

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

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

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

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

4)测试凭证是否可用

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

未完。。。。


总结

相关推荐
Fcy6481 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠1 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9031 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技2 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀3 小时前
Linux环境变量
linux·运维·服务器
zzzsde3 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º4 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~5 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化
神梦流5 小时前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器