ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《Jenkins持续集成入门到精通02》

2022-01-18 19:02:45  阅读:128  来源: 互联网

标签:02 插件 gitlab 入门 Gitlab 用户 Jenkins 安装


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

2.1 持续集成流程说明

img

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

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

服务器列表

本实验虚拟机统一采用CentOS7。

名称IP地址安装的软件
代码托管服务器192.168.66.100Gitlab-12.4.2
持续集成服务器192.168.66.101Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git, SonarQube
应用测试服务器192.168.66.102JDK1.8,Tomcat8.5

2.2 Gitlab代码托管服务器安装

2.2.1 Gitlab简介

img

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

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

2.2.2 Gitlab安装

\1. 安装相关依赖

yum -y install policycoreutils openssh-server openssh-clients postfix

\2. 启动ssh服务&设置为开机启动 (免密登录)

systemctl enable sshd && sudo systemctl start sshd

\3. 设置postfix开机自启,并启动,postfix支持gitlab发信功能 (支持邮件发送)

systemctl enable postfix && systemctl start postfix

\4. 开放ssh以及http服务,然后重新加载防火墙列表

firewall-cmd --add-service=ssh --permanent

firewall-cmd --add-service=http --permanent

firewall-cmd --reload

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

\5. 下载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

\6. 修改gitlab配置

vi /etc/gitlab/gitlab.rb

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

external_url ‘http://192.168.66.100:82’

nginx[‘listen_port’] = 82

\7. 重载配置及启动

gitlab gitlab-ctl reconfigure gitlab-ctl restart

\8. 把端口添加到防火墙

firewall-cmd --zone=public --add-port=82/tcp --permanent firewall-cmd --reload

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

img

(尚未实操,使用公司已有的)

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

1)创建组

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

imgimg

2)创建用户

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

img

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

img

3)将用户添加到组中

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

img

img

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

Guest:可以创建issue、发表评论,不能读写版本库

Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限

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

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

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

4)在用户组中创建项目

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

img

img

2.3 源码上传到Gitlab仓库

下面来到IDEA开发工具,我们已经准备好一个简单的Web应用准备到集成部署。 我们要把源码上传到Gitlab的项目仓库中。

2.3.1 项目结构说明

img

我们建立了一个非常简单的web应用,只有一个index.jsp页面,如果部署好,可以访问该页面就成功 啦!

2.3.2 开启版本控制

img

img

2.3.3 提交代码到本地仓库

先Add到缓存区

img

再Commit到本地仓库

img

2.3.4 推送到Gitlab项目仓库中

img

这时都Gitlab的项目中拷贝url地址

img

输入gitlab的用户名和密码,然后就可以把代码推送到远程仓库啦

img

刷新gitlab项目

img

2.4 持续集成环境

2.4.1 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/syscofig/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

img

9)添加一个管理员账户,并进入Jenkins后台

img

保存并完成

img

开始使用Jenkins

img

img

2.4.2 Jenkins插件管理

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

1.修改Jenkins插件下载地址

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

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

img

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

cd /var/lib/jenkins/updates sed -i ‘s/http://updates.jenkinsci.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

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

2.下载中文汉化插件

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

img

完成后如下图: 重启Jenkins后,就看到Jenkins汉化了!(PS:但可能部分菜单汉化会失败)

img

2.4.3 Jenkins用户权限管理

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

1.安装Role-based Authorization Strategy插件

img

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

img

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

img

3.创建角色

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

img

img

img

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

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

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

我们添加以下三个角色:

  • baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑 定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission

  • role1:该角色为项目角色。使用正则表达式绑定"itcast.*",意思是只能操作itcast开头的项目。

  • role2:该角色也为项目角色。绑定"itheima.*",意思是只能操作itheima开头的项目。

img

保存。

4.创建用户

在系统管理页面进入 Manage Users

img

img

分别创建两个用户:jack和eric

img

5.给用户分配角色

系统管理页面进入Manage and Assign Roles,点击Assign Roles

绑定规则如下:

  • eric用户分别绑定baseRole和role1角色
  • jack用户分别绑定baseRole和role2角色

img

保存。

6.创建项目测试权限

以itcast管理员账户创建两个项目,分别为itcast01和itheima01

img

结果为:

  • eric用户登录,只能看到itcast01项目
  • jack用户登录,只能看到itheima01项目

2.4.4 Jenkins凭证管理

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

安装Credentials Binding插件

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

img

安装插件后,左边多了"凭证"菜单,在这里管理所有凭证

img

可以添加的凭证有5种:

img

  • 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的凭证。

1.安装Git插件和Git工具

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

Git插件安装:

img

CentOS7上安装Git工具:

yum install git -y 安装

git --version 安装后查看版本

2.用户密码类型

1)创建凭证

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

img

img

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

img

2)测试凭证是否可用

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

img

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

img

这时会报错说无法连接仓库!在Credentials选择刚刚添加的凭证就不报错啦

img

保存配置后,点击构建”Build Now“ 开始构建项目

img

img

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

img

3.SSH密钥类型

SSH免密登录示意图

img

1)使用root用户生成公钥和私钥 (在jenkins服务器执行)

ssh-keygen -t rsa

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

img

id_rsa:私钥文件

id_rsa.pub:公钥文件

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

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

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

img

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

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

img

img

4)测试凭证是否可用

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

img

img

同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!

img

2.4.5 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 移动文件

2.配置环境变量

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版本

3.全局工具配置关联JDK和Maven

Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:

img

Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:

img

4.添加Jenkins全局变量

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

JAVA_HOME、M2_HOME、PATH+EXTRA

img

5.修改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

6.测试Maven是否配置成功

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

img

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

img

输入

mvn clean package

img

再次构建,如果可以把项目打成war包,代表maven环境配置成功啦!

img

2.4.6 Tomcat安装和配置

1.安装Tomcat8.5

把Tomcat压缩包上传到192.168.66.102服务器

yum install java-1.8.0-openjdk* -y 安装JDK(已完成)

tar -xzf apache-tomcat-8.5.47.tar.gz 解压

mkdir -p /opt/tomcat 创建目录

mv /root/apache-tomcat-8.5.47/* /opt/tomcat 移动文件

/opt/tomcat/bin/startup.sh 启动tomcat

注意:服务器已经关闭了防火墙,所以可以直接访问Tomcat啦

地址为:http://192.168.66.102/8080

img

2.配置Tomcat用户角色权限

默认情况下Tomcat是没有配置用户角色权限的

img

img

但是,后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置, 添加用户及权限

vi /opt/tomcat/conf/tomcat-users.xml

内容如下:

<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-status"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,managerscript,tomcat,admin-gui,admin-script"/>
</tomcat-users>

用户和密码都是:tomcat

注意:为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置

vi /opt/tomcat/webapps/manager/META-INF/context.xml

<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

把上面这行注释掉即可!

重启Tomcat,访问测试

/opt/tomcat/bin/shutdown.sh 停止

/opt/tomcat/bin/startup.sh 启动

访问: http://192.168.66.102:8080/manager/html ,输入tomcat和tomcat,看到以下页面代表成功 啦

img

标签:02,插件,gitlab,入门,Gitlab,用户,Jenkins,安装
来源: https://blog.csdn.net/weixin_44589991/article/details/122566198

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有