IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Jenkins环境部署 -> 正文阅读

[系统运维]Jenkins环境部署

简介

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
Jenkins是一个广泛用于持续构建的可视化Web工具,持续构建就是将项目自动化编译、打包、部署。通过规范化来完成,简单,繁琐,浪费时间的重复工作。

工作流程

1、开发人员提交代码到git仓库
2、Jenkins手动/定时构建项目
3、Jenkins拉取git仓库代码-》代码编译-》打包镜像-》推送到镜像仓库
4、Jenkins执行脚本/Dodckerfile在Docker主机上创建容器并发布
5、测试人员浏览项目进行测试

在这里插入图片描述

安装

Jenkins安装包来源

https://jenkins.io/zh/doc/
或者使用本人提供的
https://download.csdn.net/download/weixin_39218464/27377641

在这里插入图片描述

安装命令

# 注意我们需要安装java环境
yum install -y java
yum localinstall -y /root/jenkins/jenkins-2.222.1-1.1.noarch.rpm

启动

systemctl start jenkins

验证

netstat -lnpt

配置域名

在C:\Windows\System32\drivers\etc目录下修改hosts文件

192.168.10.211 jenkins.liuyuanshan.top

获取密码

cat /var/lib/jenkins/secrets/initialAdminPassword

登录

http://jenkins.liuyuanshan.top:8080/login

登录白屏问题解决

1、在$JENKINS_HOME/hudson.model.UpdateCenter.xml文件中,默认内容如下/var/lib/jenkins/hudson.model.UpdateCenter.xml

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://updates.jenkins-ci.org/update-center.json</url>
  </site>
</sites>

这个地址在外国的服务器,因为墙的原因,下载初始化界面所需插件不了,就一直处于等待状态

把url改为http://mirror.xmission.com/jenkins/updates/update-center.json就解决了

直接导入扩展

扩展来源:
https://download.csdn.net/download/weixin_39218464/27377641
在这里插入图片描述

tar -zxvf jenkins_plugins.tar.gz
rm -rf /var/lib/jenkins/plugins/* 
mv plugins/ /var/lib/jenkins/
systemctl stop jenkins
ls /var/lib/jenkins/plugins/
chown -R jenkins.jenkins /var/lib/jenkins
systemctl start jenkins
ps aux | grep jenkins
tail -f /var/log/jenkins/jenkins.log

隐藏界面上面的警告

在这里插入图片描述

创建项目

jenkins去集成我们的gitlab或者gitee

jenkins为何要集成gitlab

因为我们需要托管Jenkins将gitlab上项目获取到本地,为后续网站的代码发布工作做准备。

jenkins是如何集成gitlab的

由于Jenkins只是一个调度平台,所有需要安装与gitlab相关的插件既可以完成集成。

jenkins与gitlab的集成步骤

1.开发提交代码到Gitlab上
2.jenkins安装gitlab对应的插件
3.jenkins创建freestyle项目,然后配置gitlab仓库项目对应的地址

在这里插入图片描述

jenkins安装gitlab对应的插件

上文直接导入的扩展包以配置好,这里不再配置

jenkins创建freestyle项目

执行 ssh-keygen
把公钥放入到gitlab中

真实目录在

 /var/lib/jenkins/workspace/

集群部署

搭建nginx集群

# 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载新的CentOS-Base.repo 到/etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 或者
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 运行 yum makecache
yum makecache
# 运行yum install epel-release -y
yum install epel-release -y
yum install nginx -y
# 查找nginx.conf路径
find / -name 'nginx.conf'
# 重启nginx
systemctl restart nginx

收到把jenkins的代码拷贝到nginx里面

cd /var/lib/jenkins/workspace/yzm
scp -r ./* root@192.168.10.216:/usr/share/nginx/html

在这里插入图片描述

jenkins自动部署到我们集群上面

写一个shell脚本
1)进入项目目录,将内容进行打包
2)将内容通过scp拷贝分发到web集群组中

vi html_deploy.sh
chmod 777 deploy.sh
#!/usr/bin/bash

DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_serer="192.168.10.216 192.168.10.217"

get_code(){
	cd ${WORKSPACE} && \
	tar czf /opt/web-${DATE}.tar.gz ./../*
}

scp_web_server(){
for host in ${web_serer}
do
	scp /opt/web-${DATE}.tar.gz root@${host}:/opt
	ssh root@${host} "mkdir -p /usr/share/nginx/html_back/web-${DATE} && \
	tar -zxf /opt/web-${DATE}.tar.gz -C /usr/share/nginx/html_back/web-${DATE} && \
	rm -rf /usr/share/nginx/html && \
	ln -s /usr/share/nginx/html_back/web-${DATE}/yzm /usr/share/nginx/html"

done
}

deploy(){
  get_code
  scp_web_server
}

deploy

为nginx下的服务器生成密码:ssh-keygen

将Jenkins服务下的pub公钥传递到nginx服务下上,进行免密登录

cd /root/.ssh
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.216
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.217

修改用户权限

systemctl restart jenkins

jenkins支持gitlab的tab

思路

1.开发如果需要发布新版本,必须将当前的版本打上一个标签tag。
2.jenkis需要让其脚本支持传递,比如用户传递v1.1 拉取v1.1标签

实战jenkins部署tag版本

安装git 参数插件,引入的扩展包有,这里只是说明,没有的自行加入
在这里插入图片描述

修改参数配置
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改tag的脚本: html_deploy_rollback.sh

#!/usr/bin/bash

DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_serer="192.168.10.216 192.168.10.217"

Name=${DATE}-${git_version}
get_code(){
	cd ${WORKSPACE} && \
	tar czf /opt/web-${Name}.tar.gz ./../*
}

scp_web_server(){
for host in ${web_serer}
do
	scp /opt/web-${Name}.tar.gz root@${host}:/opt
	ssh root@${host} "mkdir -p /usr/share/nginx/html_back/web-${Name} && \
	tar -zxf /opt/web-${Name}.tar.gz -C /usr/share/nginx/html_back/web-${Name} && \
	rm -rf /usr/share/nginx/html && \
	ln -s /usr/share/nginx/html_back/web-${Name}/yzm /usr/share/nginx/html"

done
}

deploy(){
  get_code
  scp_web_server
}

deploy

tag 演示

1、将本地修改好的代码提交到远程仓库
2、在本地打标签后推送到远程上

# 修改前对当前版本进行版本定义
git tag -a "v1.1" -m 'v1.1版本'
git push origin v1.1
# 将修改后的文件提交到远程仓库
git add .
git commit -m "v1.2"
git push
# 对推送的代码进行打标签,以便于版本回退
git tag -a "v1.2" -m "1.2"
git push origin v1.2

在这里插入图片描述

部署和回滚

修改脚本: html_deploy_rollback.sh

#!/usr/bin/bash

DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_serer="192.168.10.216 192.168.10.217"

Name=${DATE}-${git_version}
get_code(){
	cd ${WORKSPACE} && \
	tar czf /opt/web-${Name}.tar.gz ./../*
}

scp_web_server(){
for host in ${web_serer}
do
	scp /opt/web-${Name}.tar.gz root@${host}:/opt
	ssh root@${host} "mkdir -p /usr/share/nginx/html_back/web-${Name} && \
	tar -zxf /opt/web-${Name}.tar.gz -C /usr/share/nginx/html_back/web-${Name} && \
	rm -rf /usr/share/nginx/html && \
	ln -s /usr/share/nginx/html_back/web-${Name}/yzm /usr/share/nginx/html"

done
}

deploy(){
  get_code
  scp_web_server
}


back(){
back_file=$(ssh root@192.168.10.216 "find /usr/share/nginx/html_back/ -maxdepth 1 -type d -name "web-*-${git_version}"")
for host in $web_serer
do
        ssh root@${host} "rm -rf /usr/share/nginx/html && \
                          ln -s ${back_file}/yzm /usr/share/nginx/html"
done

}


if [ $deploy_env == "deploy" ];then
        deploy
elif [ $deploy_env == "rollback" ];then
        back
fi

修改参数配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

演示

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:25:02  更:2021-10-03 17:25:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:55:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码