3.代码发布平台--Jenkins持续集成系统实践

04.Jenkins持续集成系统实践

1.Jenkins基本概述

1.1 什么是Jenkins

Jenkins是一个开源持续集成的工具,是由 JAVA 开发而成。
Jenkins 是一个调度平台,本身不处理任何事情,调用插件来完成所有的工作。

1.2 为什么需要Jenkins

jenkins 能将各种开源的软件集成为一体,从而实现不同功能的调度工作。如下图所示:

2.Jenkins安装部署

安装Jenkins只需要简单几步即可完成。PS: Jenkins的安装方式很多,可参考。Jenkins官方安装文档

2.1 安装JDK环境

[root@jenkins-node1 ~]# yum install java -y

2.2 安装Jenkins

1.配置 jenkins

[root@jenkins-node1 ~]# cat /etc/yum.repos.d/jenkins.repo
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1

2.安装 Jenkins

[root@jenkins-node1 ~]# yum install jenkins -y

3.启动 Jenkins,加入开机自启动

[root@jenkins-node1 ~]# systemctl start jenkins
[root@jenkins-node1 ~]# systemctl enable jenkins
  1. Jenkins 下的所有内容都是文件,他没有数据库,所以我们简单了解下每个目录的功能。
[root@jenkins-node1 ~]# rpm -ql jenkins
/etc/init.d/jenkins             #jenkins启动与停止脚本
/etc/logrotate.d/jenkins        #jenkins日志切割配置文件
/etc/sysconfig/jenkins          #jenkins配置文件
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war    #jenkins的程序文件(升级时替换这个文件即可)
/usr/sbin/rcjenkins             #jenkins启动与停止脚本(软链接)
/var/cache/jenkins              #jenkins缓存目录
/var/lib/jenkins                #jenkins主要目录
/var/log/jenkins                #jenkins日志相关

2.3 解锁Jenkins

1.当您第一次通过浏览器访问 http://HostnameIP:8080Jenkins 时,系统会要求您使用自动生成的密码对其进行解锁。

2.解锁 Jenkins 之后,可以安装任何数量的插件作为您初始步骤的一部分。
 1)如果不确定需要哪些插件,请选择 “安装建议的插件”(这个过程可能需要几分钟或几十分钟的时间)
 2)也可以跳过插件安装,后期可以通过 Jenkins 中的 Manage Jenkins > Manage Plugins 页面进行插件安装或删除。

3.最后,创建一个 Jenkins 的管理员用户。然后单击保存完成。

3.Jenkins插件管理

jenkins 系统管理中的插件管理非常重要,因为 jenkins 的工作全部是由插件来完成。
在插件管理中有 {可更新 | 可选插件 | 已安装} 日常的插件安装都是在这个界面上完成的。

3.1 Jenkins联网安装插件

通过联网的方式安装插件,但由于仓库源在国外,所以首先修改源为国内源进行插件下载加速。

1.选择 系统管理 -->插件管理-->高级-->升级站点

2.将原来的 https://updates.jenkins.io/update-center.json 修改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 最后点击提交

3.尝试通过联网方式安装与 gitlab 相关的插件,然后重启 Jenkins 测试,插件是否可用。

3.2 Jenkins手动上传插件

通过页面上传一个.hpi文件的方式来安装插件。

1.在 jenkins 官网 https://plugins.jenkins.io/下载插件。( 插件是以 .hpi 结尾的 )

2.将下载好的插件通过上传的方式进行安装 系统设置->插件管理->上传插件

3.3 Jenkins离线安装插件

将之前已下载的插件,导入到服务器中,(离线安装),然后重启 Jenkins

[root@jenkins-node1 ~]# wget plugins.tar.gz
[root@jenkins-node1 ~]# mv plugins/* /var/lib/jenkins/plugins/
[root@jenkins-node1 ~]# chown -R jenkins.jenkins /var/lib/jenkins/plugins/
[root@jenkins-node1 ~]# systemctl restart jenkins

4.Jenkins简单应用

4.1 创建FreeStyle项目

1.创建一个FreeStyle(自动风格的软件项目)

4.2 配置项目基本信息

  • 描述:描述这个自动发布项目是做什么
  • 丢弃旧的构建:构建后的产物,保留多久
  • 参数化构建:在执行任务时,可以传递参数

4.3 简单执行Shell命令

构建-->选择执行 shell 命令

4.4 项目的构建与执行

选择项目,点击立即构建

4.5 检查项目构建结果

1.选择对应的项目,点击控制台输出获取结果

2.构建后所产生的文件等资源,都会存储在/var/lib/jenkins/workspace/jenkins_project_name目录下





gitlab–jenkins集成

1.开发提交代码至Gitlab

1) 准备一个仓库   web-monitor
2) 通过WIndows提交代码
3) 为了方便,我们使用的是root身份, 正常情况应该使用普通身份, 但要对项目有权限;

2.jenkins安装gitlab所需插件

插件名称 插件作用
Credentials Plugin 允许在Jenkins中存储认证的凭据
Git Client Plugin 允许Jenkins使用Git
Git Plugin 允许Jenkins集成Git
Gitlab Plugin 允许Gitlab触发Jenkins构建并在Gitlab中显示
GitLab Hook 允许 gitlab 自动触发 jenkins 构建项目
Gitlab Authentication plugin gitlab 身份验证插件

3.jenkins创建freestyle项目,然后配置gitlab仓库项目对应地址。

1.jenkins无法访问gitlab的域名,所以要配置域名解析; 
		echo "10.0.0.110 gitlab.oldxu.com" >> /etc/hosts

2.jenkins与gitlab秘钥验证失败;
	2.1) jenkins生成公钥对;
	2.2) jenkins将公钥推送到gitlab服务器对应的用户;( 用户必须得对项目有拉取权限;)
	2.3) 告诉jenkins私钥是什么,这样才可以解密;  Credentials

1.搭建环境: Nginx+web_cluster集群 对外提供,html.oldxu.com 站点; 一般公司都Ansible运行好了;

1.配置负载均衡
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_html.oldxu.com.conf
upstream web {
server 172.16.1.7:80;
server 172.16.1.8:80;
}

server {
listen 80;
server_name html.oldxu.com;

location / {
	proxy_pass http://web;
	proxy_set_header Host $http_host;
}

}

2.配置web集群
[root@web01 ~]# cat /etc/nginx/conf.d/html.oldxu.com.conf
server {
listen 80;
server_name html.oldxu.com;
root /code/web_monitor;

location / {
	index index.html;
}

}
[root@web01 ~]# rm -rf /code
[root@web01 ~]# mkdir /code

3.配置域名解析


2.手动拉取代码,部署代码;

1.先克隆项目;
[root@jenkins ~]# git clone [email protected]:dev/web-monitor.git

2.将代码打包;
tar czf /opt/web_monitor_$(date +%F_%H).tar.gz ./*


3.配置免密:
	ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
	ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

3.通过scp发送到web集群节点
for i in 7 8 ; do scp /opt/web_monitor_$(date +%F_%H).tar.gz [email protected].$i:/opt ; done

4.通过ssh登录到目标主机,解压,创建软连接;

for i in 7 8 
do
	ssh [email protected].$i "cd /opt && \
	mkdir -p web_monitor_$(date +%F_%H) && \
	tar xf web_monitor_$(date +%F_%H).tar.gz -C web_monitor_$(date +%F_%H)
	rm -f /opt/web_monitor_$(date +%F_%H).tar.gz && \
	rm -f /code/web_monitor && \
	ln -s /opt/web_monitor_$(date +%F_%H) /code/web_monitor"
done

猜你喜欢

转载自blog.csdn.net/xiaoleinb/article/details/112586538