Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
Jenkins是一个广泛用于持续构建的可视化Web工具,持续构建就是将项目自动化编译、打包、部署。通过规范化来完成,简单,繁琐,浪费时间的重复工作。
1、开发人员提交代码到git仓库
2、Jenkins手动/定时构建项目
3、Jenkins拉取git仓库代码-》代码编译-》打包镜像-》推送到镜像仓库
4、Jenkins执行脚本/Dodckerfile在Docker主机上创建容器并发布
5、测试人员浏览项目进行测试
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创建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/htmljenkins自动部署到我们集群上面
写一个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标签
安装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
修改参数配置
演示



