1.Jenkins安装和持续集成
linux中Gitlab的安装
1.安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix
2.开启以下服务并且设置为开机自启动
systemctl enable sshd && sudo systemctl start sshd
systemctl enable postfix && systemctl start postfix
如果关闭防火墙systemctl stop firewalld
就不需要做以上配置
3.下载gitlab包,并且安装
在线下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
安装:
rpm -i gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
4.修改gitlab配置
vi /etc/gitlab/gitlab.rb
修改gitlab访问地址和端口,默认为80,这里改为82
external_url 'http://192.168.0.100:82'
nginx['listen_port'] = 82
5.重新加载配置并启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
启动成功后,使用网页访问该gitlab,地址http://192.168.0.100:82
看到以下修改管理员root密码的页面,修改密码
登录成功的界面,
Gitlab添加组、创建用户、创建项目
1)创建组
2)在组中创建项目
以刚才创建的新用户身份登录到Gitlab,然后在用户组中创建新的项目
3)创建用户
在用户创建后,我们需要修改密码
4)将用户添加到组中
选择某给需要添加新成员的组,进行成员管理
1. GitLab用户权限管理
GitLab用户在组中有五种权限由低到高:Guest、Reporter、Developer、Master、Owner。
- Guest
可以创建issue、发表评论、不能读写版本库。
- Reporter
可以克隆代码,不能提交,QA、PM可以赋予这个权限。
- Developer
可以克隆代码、开发、提交、push、RD可以赋予这个权限。
- Master
可以创建项目、添加 tag 、保护分支、添加项目成员、编辑项目、核心RD负责人可以赋予这个权限。
- Owner
可以设置项目的访问权限-Visibility Level、删除项目、迁移项目、管理组成员、开发组leader可以赋予这个权限。
2. GitLab中的组和项目有三种访问权限
GitLab中的组和项目有三种访问权限:Private、Internal、Public。
- private
只有组成员可以看到。
- internal
只要登录的用户就能看到。
- public
开源的所有的人都可以看到。
3. 附加: PM、RD、QA、OP英文缩写含义
- PM
Product Manager, 产品经理
- RD
Research and Development engineer,研发工程师
- QA
Qualtiy Assurance,质量保证。
- OP
Operator,操作员,管理员。
退出当前用户,登录新的用户zhangsan
5)源码上传到Gitlab仓库
1)项目创建
如果部署好,可以访问该页面就成功啦!
1)开启版本控制
2)提交代码到本地仓库
先Add到缓存区
再Commit到本地仓库
3)推送到Gitlab项目仓库中
拷贝Gitlab的项目中url地址
刷新
持续集成环境-Jenkins安装
192.168.0.101环境
1)安装JDK
Jenkins需要依赖JDK,所以先安装JDK1.8
1.准备JDK安装包
我这⾥下载的是jdk-8u161-linux-x64.tar.gz
安装包,并通过SecureFX将其直接上传到了 root ⽬录下
2.卸载已有的openjdk
通过命令查看是否安装有openjdk
包
rpm -qa | grep java
把带有openjdk
的包进行卸载,
例如:
yum -y remove java-1.7.0-openjdk-headless-1.7.0.221-2.6.18.1.el7.x86_64
删除后查看是否还有openjdk
,直到没有,可进行下一步
3.创建jdk存放⽬录并解压
1.创建目录
mkdir /usr/local/java
cd /usr/local/java
2.解压
tar -zxvf /root/jdk-8u161-linux-x64.tar.gz -C ./
注:解压完成后,可以看到/usr/local/java
目录中,会有一个文件夹jdk1.8.0_161
4.配置jdk环境变量
编辑/etc/profile
⽂件,在⽂件尾部加⼊如下 JDK 环境配置即可
Vi /etc/profile
JAVA_HOME=/usr/local/java/jdk1.8.0_161
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
然后执⾏如下命令让环境变量⽣效
source /etc/profile
5.JDK安装结果
java -version
javac
到此为安装jdk成功
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/sysconfig/jenkins
修改内容如下:
JENKINS_USER="root"
JENKINS_PORT="8888"
5)保存退出编辑,然后启动Jenkins
systemctl start jenkins
6)打开浏览器访问
http://192.168.0.101:8888/ 注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口
7)获取并输入admin账户密码
cat /var/lib/jenkins/secrets/initialAdminPassword
8)跳过插件安装
9)添加一个管理员账户,并进入Jenkins后台,
实例配置,保存并完成
开始使用Jenkins
持续集成环境-Jenkins插件管理
修改Jenkins插件下载地址
Jenkins->Manage Jenkins->Manage Plugins,点击Available
以上的操作是为了把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
提交更改后,在浏览器输入: http://192.168.0.101:8888/restart ,重启Jenkins。
下载中文汉化插件
更新jenkins版本
出现报红的异常,是版本太低,可以自行升级https://blog.csdn.net/jiayou516/article/details/116797405
持续集成环境-Jenkins用户权限管理
安装Role-based Authorization Strategy插件
创建角色
Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Project roles(项目角色):针对某个或者某些项目的角色
Slave roles(奴隶角色):节点相关的权限
添加全局角色:baseRole
给该角色绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。
添加项目角色,role1,role2项目角色,并绑定匹配的项目名称
保存
创建用户
分别创建两个用户:jack和eric
给用户分配角色
绑定规则如下:
eric用户分别绑定baseRole和role1角色
jack用户分别绑定baseRole和role2角色
添加全局角色
添加项目角色的用户
为用户分配项目角色
保存。
创建项目测试权限
以jenkins管理员账户创建两个项目,分别为web_demo01和javaweb_demo01
创建项目
退出当前jenkins用户,分别登录eric,和jack
结果为:
eric用户登录,只能看到web_demo01项目
jack用户登录,只能看到javeweb_demo项目
持续集成环境-Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便
Jenkins可以和这些第三方的应用进行交互。
如果是版本比较高的,比如2.293版本的jenkins是自带的凭据
安装Git插件和Git工具
为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。Git插件安装
虚拟机上安装Git工具:
yum install git -y
git --version
用户密码类型
1)创建凭证
Jenkins->凭证->系统->全局凭证->添加凭证
选择"Username with password",输入Gitlab的用户名和密码,点击"确定"。
2)测试凭证是否可用
创建一个FreeStyle项目:新建Item->FreeStyle Project->确定
找到"源码管理"->“Git”,
复制gitlab项目的地址
jenkins的test01项目的源码管理选择Git,把gitlab项目的URL粘贴到Repository URL
Credentials选择刚添加的凭证,并保存
保存配置后,点击构建”Build Now“ 开始构建项目
查看/var/lib/jenkins/workspace/目录,发现已经从Gitlab成功拉取了代码到Jenkins中。
SSH密钥类型
SSH免密登录示意图
1)使用root用户生成公钥和私钥
ssh-keygen -t rsa
cd /root/.ssh/id_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)测试凭证是否可用
新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证
克隆gitlab项目的ssh地址
同样尝试构建项目,如果代码可以正常拉取,代表凭证配置成功!
持续集成环境-Maven安装和配置
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。
1.安装Maven
这⾥下载的是 apache-maven-3.6.3-bin.tar.gz
安装包,并将其放置于提前创建好的 /opt/maven
⽬录下。
mkdir /opt/maven
通过文件传输工具把apache-maven-3.6.3-bin.tar.gz
上传到目录/opt/maven
下
进入到/opt/maven
目录
cd /opt/maven
将压缩包解压到当前文件夹
tar zxvf apache-maven-3.6.3-bin.tar.gz
解压完成,生成apache-maven-3.6.3
文件夹
2.配置maven加速镜像源(aliyun)
1.编辑修改/opt/maven/apache-maven-3.6.3/conf/settings.xml
vi /opt/maven/apache-maven-3.6.3/conf/settings.xml
2.在 标签对⾥添加以下内容:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3.配置环境变量
编辑修改/etc/profile
⽂件,在⽂件尾部添加如下内容,配置 maven 的安装路径,保存退出
vi /etc/profile
export MAVEN_HOME=/opt/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
执行命令source /etc/profile
,刷新环境变量,让maven环境的路径配置生效
source /etc/profile
4.安装结果
mvn -v
能够打印出版本信息,说明安装和配置成功
5.全局工具配置关联JDK和Maven
Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:
Jenkins->Global Tool Confifiguration->Maven->新增Maven,配置如下:
6.添加Jenkins全局变量
Manage Jenkins->Configure System->Global Properties ,添加三个全局变量JAVA_HOME、M2_HOME、PATH+EXTRA
7.测试Maven是否配置成功
使用之前的gitlab密码测试项目,修改配置
构建->增加构建步骤->Execute Shell
输入
mvn clean package
再次构建,如果可以把项目打成war包,代表maven环境配置成功啦!
查看生成war包的路径,可以看到生成了一个web_demo-1.0-SNAPSHOT.war
这⾥使⽤的是8.5.55
版: apache-tomcat-8.5.55.tar.gz
,直接将其放在了/root
⽬录下
持续集成环境-Tomcat安装和配置
解压并安装
1./usr/local/
下创建tomcat
⽂件夹并进⼊
cd /usr/local/
mkdir tomcat
cd tomcat
2.将tomcat的压缩包上传到linux,按住alt+p进入sftp传输
3、将 Tomcat 安装包解压到/usr/local/tomcat
中即可
[root@localhost tomcat]# tar -zxvf apache-tomcat-8.5.55.tar.gz
解压完之后,/usr/local/tomcat
⽬录中会出现⼀个 apache-tomcat-8.5.55
的⽬录
启动TOMCAT
直接进 apache-tomcat-8.5.55
⽬录,执⾏其中bin
⽬录下的启动脚本即可
[root@localhost tomcat]# cd apache-tomcat-8.5.55/
[root@localhost apache-tomcat-8.5.55]# cd bin/
[root@localhost bin]# ./startup.sh
这时候浏览器访问: 你的linux主机IP:8080 ,得到如下画⾯说明成功启动了
如果遇到访问的页面不成功,也许是端口未开放导致的,解决方案如下:
linux开放指定端口的方法
1.查看有哪些端口是开放的
/sbin/iptables -L -n
2.编辑/etc/sysconfig/iptables
文件
vi /etc/sysconfig/iptables
加入内容并保存:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
3.重启服务:/bin/systemctl restart iptables.service
4.查看端口是否开放·/sbin/iptables -L -n
再此访问
配置Tomcat用户角色权限
默认情况下Tomcat是没有配置用户角色权限的
但是,后续Jenkins部署项目到Tomcat服务器,需要用到Tomcat的用户,所以修改tomcat以下配置,
添加用户及权限
vi /usr/local/tomcat/apache-tomcat-8.5.55/conf/tomcat-users.xml
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,tomcat,admin-gui,manager-script"/>
</tomcat-users>
用户和密码都是:tomcat
注意:为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置
vi /usr/local/tomcat/apache-tomcat-8.5.55/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,访问测试
/usr/local/tomcat/apache-tomcat-8.5.55/bin/shutdown.sh 停止
/usr/local/tomcat/apache-tomcat-8.5.55/bin/startup.sh 启动
访问: http://192.168.0.102:8080/manager/html ,输入tomcat和tomcat,
看到以下页面代表成功啦
2、Jenkins构建Maven项目
Jenkins项目构建类型-Jenkins构建的项目类型介绍
Jenkins中自动构建项目的类型有很多,常用的有以下三种:
自由风格软件项目(FreeStyle Project)
Maven项目(Maven Project)
流水线项目(Pipeline Project)
每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在
实际开发中可以根据自己的需求和习惯来选择。这里只演示两种风格(自由风格软件项目,Maven项目)
Jenkins项目构建类型-自由风格项目构建
下面演示创建一个自由风格项目来完成项目的集成过程:
拉取代码->编译->打包->部署
拉取代码
1)创建项目
2)配置源码管理,从gitlab拉取代码
编译打包
构建->添加构建步骤->Executor Shell
部署
把项目部署到远程的Tomcat里面
1)安装 Deploy to container插件
Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现
2)添加Tomcat用户凭证
3)添加构建后操作
点击"Build Now",开始构建过程
4)部署成功后,访问项目
http://192.168.0.102:8080/web_demo-1.0-SNAPSHOT/
演示改动代码后的持续集成
1)IDEA中源码修改并提交到gitlab
2)在Jenkins中项目重新构建
3)访问Tomcat
Jenkins项目构建类型(3)-Maven项目构建
1)安装Maven Integration插件
2)创建Maven项目
3)配置项目
拉取代码
构建项目
远程部署
点击"Build Now",开始构建过程
4)部署成功后,访问项目
http://192.168.0.102:8080/web_demo-1.0-SNAPSHOT/