Jenkins一站成魔【1】传统安装与说明

Jenkins一站成魔【1】传统安装与说明
Jenkins一站成魔【2】传统项目CI/CD
Jenkins一站成魔【3】Docker平台CI/CD
Jenkins一站成魔【4】K8S平台CI/CD

1、CI/CD 学习第一页

CI/CD 的核心概念是持续集成、持续交付和持续部署。而今天的主角是 Jenkins

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

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

2、Gitlab Install and Configuration

2.1、Gitlab 安装

主机 192.168.168.151

1. 安装相关依赖
yum -y install policycoreutils openssh-server openssh-clients postfix policycoreutils-python

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
# 如果关闭防火墙就不需要做以上配置
systemctl disable firewalld && systemctl stop firewalld

5. 下载gitlab包,并且安装
在线下载安装包:
wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
安装:
rpm -ivh gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm

6. 修改gitlab配置
vim /etc/gitlab/gitlab.rb
修改gitlab访问地址和端口,默认为80,我们改为8000
external_url 'http://192.168.168.151:8000'
nginx['listen_port'] = 8000

7. 重载配置及启动gitlab
#此处耗时较长 耐心等待哦! 
sudo gitlab-ctl reconfigure
gitlab-ctl restart

9. 把端口添加到防火墙
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --reload
# 如果关闭防火墙就不需要做以上配置

http://192.168.168.151:8000
启动成功后,在页面修改管理员root密码admin123,修改密码后即可登录;

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

2.2.1)创建组

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

2.2.2)创建项目

组Group 下创建项目

2.2.3)创建用户

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

创建user成功后,可以使用Edit功能给user一个密码

2.2.4)将用户添加到组中

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

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

2.2.5)在用户组中创建项目

用新用户litaibai/admin123登录到Gitlab,然后在用户组中创建新的项目【 操作同 2)

2.2.6)源码上传到Gitlab仓库

同gitee,github,_ O(∩_∩)O哈哈~

3、Jenkins Install and Configuration

主机 192.168.168.152
为解决plugins不能使用的问题,我没有耐性了,索性一路将jenkins直升2.346.1;

3.1、Jenkins安装

1)安装JDK
rpm -qa | grep java       
rpm -e --nodeps java*
yum search jdk
#yum search jdk | grep java-1.8.0
yum list | grep java-11

yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-accessibility.x86_64 java-1.8.0-openjdk-devel.x86_64 java-1.8.0-openjdk-headless.x86_64
# yum install -y java-11-openjdk.x86_64 java-11-openjdk-devel.x86_64 java-11-openjdk-headless.x86_64 java-11-openjdk-jmods.x86_64 java-11-openjdk-static-libs.x86_64

java -version
安装目录为:/usr/lib/jvm

2)获取jenkins安装包
下载页面:https://jenkins.io/zh/download/
下载页面:下载路径:https://mirror.gruenehoelle.nl/jenkins/redhat-stable/
安装文件:jenkins-2.361.1-1.1.noarch.rpm
# rpm安装
#wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.190.1-1.1.noarch.rpm
#wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.289.2-1.1.noarch.rpm
# wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.303.1-1.1.noarch.rpm
wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.346.1-1.1.noarch.rpm

3)把安装包上传到192.168.168.152服务器,进行安装
yum -y install epel-release
yum -y install daemonize
rpm -ivh jenkins-2.346.1-1.1.noarch.rpm

4)修改Jenkins配置
vim /etc/sysconfig/jenkins
修改内容如下:
JENKINS_USER="root"
JENKINS_PORT="8888"

vim /usr/lib/firewalld/services/jenkins.xml 
<port protocol="tcp" port="8888"/>

vim /usr/lib/systemd/system/jenkins.service
Environment="JENKINS_PORT=8888"

systemctl daemon-reload

5)启动Jenkins
systemctl disable firewalld && systemctl stop firewalld
systemctl start jenkins

6)打开浏览器访问
http://192.168.168.152:8888

账户:admin
密码:cat /var/lib/jenkins/secrets/initialAdminPassword

7)跳过插件安装
因为Jenkins插件需连接默认官网下载,速度非常慢且经常会失败,这里暂时选
【选择插件来安装】>>【无】>>【创建第一个管理员用户】>>【保存并完成】>>【保存并完成】

如 john/admin123

3.2、Jenkins国内插件地址修改

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

修改Jenkins插件下载地址
Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:
Jenkins -> Manage Jenkins -> Manage Plugins,点击Available

这样做是为了把Jenkins官方的插件列表下载到本地;

3.2.1、rpm包Jenkins修改地址国内插件地址

#http://updates.jenkinsci.org/download 修改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins
sudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' /var/lib/jenkins/updates/default.json
sudo sed -i 's#www.google.com#www.baidu.com#g' /var/lib/jenkins/updates/default.json

最后,Manage Plugins点击Advanced,把Update Site改为国内插件下载地址

https://updates.jenkins.io/update-center.json
修改为--->>>
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

3.2.2、war包Jenkins修改地址国内插件地址

find / -name *.UpdateCenter.xml

vim /root/.jenkins/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>

此时需要更换插件源,否则插件将安装失败
将 https://updates.jenkins.io/download 改为 http://mirrors.tuna.tsinghua.edu.cn/jenkins
将 https://www.google.com 改为 https://www.baidu.com

sed -i 's/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /root/.jenkins/updates/default.json
sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /root/.jenkins/updates/default.json

3.2.3、重启jenkins

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

bash /opt/tomcat/bin/shutdown.sh
bash /opt/tomcat/bin/startup.sh

3.3、Jenkins中文汉化插件安装

Jenkins -> Manage Jenkins -> Manage Plugins,点击Available,搜索 “Chinese”,安装,重启

3.4、Jenkins用户权限管理

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

3.4.1、安装 Role-based Authorization Strategy 插件

3.4.2、开启权限全局安全配置

【系统管理】->【全局安全配置】->【授权策略 “Role-Based Strategy”】->【 保存】

3.4.3、创建角色

【系统管理】->【Manage and Assign Roles】->【Manage Roles】

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

我们添加以下三个角色:

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

3.4.4、创建用户

【系统管理】->【管理用户】->【新建用户】
创建三个用户:michael/admin123、emily/admin123、michelle/admin123

此时直接登录是没有任何权限的哦!!!

3.4.5、给用户分配角色

【系统管理】->【Manage and Assign Roles】->【Assign Roles】

绑定规则如下:
emily用户 绑定 baseRole 和 role1 角色;
michelle用户 绑定 baseRole 和role2 角色;

3.4.6、创建项目验证权限

以john管理员账户创建两个项目 michael-goods 和 michelle-order ;

以emily用户登录,只能看到michael-goods项目:

以michelle用户登录,只能看到michelle-order项目:

3.5、Jenkins凭证管理

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件;
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

3.5.1、安装Credentials Binding插件

【系统管理】->【插件管理】->【可选插件】->【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的凭证。

3.5.2、安装Git插件和Git工具

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

CentOS7上安装Git工具:

# yum安装git
yum install git -y
# 查看git版本
git --version 

3.5.3、创建使用【用户密码类型】凭证

【系统管理】->【Manage Credentials】->【全局】->【添加一些凭据】





3.5.4、创建使用【SSH密钥类型】凭证

ssh-keygen -t rsa

暂无,不想记录了…

3.6、Jenkins配置关联JdkMaven

3.6.1、全局工具配置关联JdkMaven

需要先操作 “ 4、Maven Install and Configuration
【系统管理】->【全局工具配置】->【JDKMaven】->【应用、保存】


3.6.2、添加Jenkins全局变量

【系统管理】->【Configure System】->【全局属性】->【环境变量】

添加三个变量:JAVA_HOMEM2_HOMEPATH+EXTRA

4、Maven Install and Configuration

192.168.168.152
在Jenkins集成服务器上安装Maven来编译和打包项目。
上传 apache-maven-3.6.2-bin.tar.gz/opt/ 文件夹

# 解压
tar -xzf apache-maven-3.6.2-bin.tar.gz

配置环境变量

# 配置java maven环境变量
cat > /etc/profile.d/myjava.sh <<-EOF
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export MAVEN_HOME=/opt/apache-maven-3.6.2
export PATH=${
     
     PATH}:${JAVA_HOME}/bin:${MAVEN_HOME}/bin
EOF

# 配置生效
source /etc/profile
# 查找Maven版本
mvn -v

# 一定要记得创建仓库路径并赋予权限;不然后面maven构建会不成功的哦!!!
mkdir -p /opt/mavenrepo && chmod -R 777 /opt/mavenrepo

凌波微步 Maven 详细配置 在其他房间 … 如:本地仓库目录,项目编码,国内镜像等。

5、Tomcat Install and Configuration

192.168.168.153

5.1 安装jdk

# 安装jdk;此处使用openjdk
rpm -qa | grep java
rpm -e --nodeps java*
yum search jdk | grep java-1.8.0

yum install -y java-1.8.0-openjdk.x86_64 \
java-1.8.0-openjdk-accessibility.x86_64 \
java-1.8.0-openjdk-devel.x86_64 \
java-1.8.0-openjdk-headless.x86_64
# 安装目录为:/usr/lib/jvm
java -version

oracle jdk install 见此处 https://blog.csdn.net/Michael_lcf/article/details/86300662

5.2 安装tomcat

# 关闭防火墙
systemctl disable firewalld && systemctl stop firewalld
# 安装Tomcat8.5,上传压缩包到 /opt/ 目录
mkdir -p /opt/tomcat
tar -xzvf /opt/apache-tomcat-8.5.47.tar.gz --strip-components 1 -C /opt/tomcat
# 启动tomcat
/opt/tomcat/bin/startup.sh

访问Tomcat:http://192.168.168.153:8080 不出意外,一只可爱的tomcat出现了…

5.3 配置tomcat权限

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

vim /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="manager-jmx"/>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <user username="tomcat" password="tomcat" roles="tomcat,manager-script,manager-gui,admin-gui,admin-script,manager-jmx"/>
</tomcat-users>

注意:为了能使配置的用户登录到Tomcat,还需要注释掉以下配置才可以!

vim /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.168.153:8080/manager/html
账号密码:tomcat/tomcat

猜你喜欢

转载自blog.csdn.net/Michael_lcf/article/details/124785548