栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Jenkins环境部署

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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:WindowsSystem32driversetc目录下修改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



  
    default
    http://updates.jenkins-ci.org/update-center.json
  

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

把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

修改参数配置

演示

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292095.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号