1.安装Jdk和Jenkins
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
rpm -ivh jdk-8u251-linux-x64.rpm
rpm -ivh jenkins-2.99-1.1.noarch.rpm
#启动用户修改为root
[root@jenkins ~]# grep 'root' /etc/sysconfig/jenkins
JENKINS_USER="root"
[root@jenkins ~]# systemctl start jenkins
http://192.168.122.103:8080
[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
bd9ef34d00074bb1bd69b4d037e98e68
jenkins主要的目录
/usr/lib/jenkins/: #jenkins安装目录,WAR包会放在这里 如果升级 将war包发到这个目录就升级
/etc/sysconfig/jenkins: #jenkins配置文件,"端口","JENKINS_HOME"等都可以在这里配置
/var/lib/jenkins/: #默认的JENKINS_HOME
/var/log/jenkins/jenkins.log: #Jenkins日志文件
/var/lib/jenkins/users/admin/config.xml #账户密码文件 修改密码
/var/lib/jenkins/plugins 插件目录
如果启动不起来 执行下面命令
java -jar jenkins.war
java -jar jenkins.war --httpPort=1080
图片.png
图片.png
图片.png
修改密码.png
2. 加载插件
tar xf plugins.tar.gz -C /var/lib/jenkins/plugins/
cd /var/lib/jenkins/plugins/
mv plugins/* .
rm -rf plugins/
systemctl restart jenkins.service
图片.png
图片.png
图片.png
图片.png
图片.png
[root@localhost workspace]# pwd
/var/lib/jenkins/workspace
drwxr-xr-x. 2 root root 6 12月 24 09:28 freestyle-job
[root@localhost workspace]# tree freestyle-job
freestyle-job
└── test.txt
图片.png
图片.png
图片.png
拉取gitee上代码.png
3.配置jenkins 跟gitlab 连接 拉取代码 并返回结果到gitlab上
git clone https://gitee.com/kangjie1209/monitor.git #测试web
gitlab 创建项目并将上面代码源代码导入进去
git clone git@192.168.122.102:testing/dzp.git
jenkins主机要配置sshkey 并在做ssh认证 才能拉取成功
检查拉取结果
[root@jenkins freestyle-job]# ll /var/lib/jenkins/workspace/freestyle-job
cat devops.sh 脚本
Web_Dir=/usr/share/nginx
Ip=192.168.122.106
Time=`date +%F-%H-%M-%S`
cd $Code_Dir && tar czf /tmp/web-${Time}.tar.gz ./*
scp /tmp/web-${Time}.tar.gz $Ip:$Web_Dir
ssh root@$Ip "cd $Web_Dir && mkdir web-${Time}"
ssh root@$Ip "cd $Web_Dir && tar xf web-${Time}.tar.gz -C web-${Time} && rm -rf web-${Time}.tar.gz"
ssh root@$Ip "cd $Web_Dir && rm -rf html &&ln -s web-${Time} html"
配置sshkey 192.168.122.106
copy-ssh-id root@192.168.122.106
这样手动构建后 就会自动更新网页文件
图片.png
图片.png
图片.png
测试是否成功.png
这样git提交自动提交代码
图片.png
图片.png
在jenkins主界面系统设置 --- 系统设置 ---gitlab
gitlab生成tokens.png
配置连接gitlab.png
项目配置.png
配置生效.png
3.根据gitab的tag发布
基于tag版本发布需要Git Paraneter插件
基于下面步骤打几个tag版本推送到gitlab上
vim index.html
git add .
git commit -m "tag v1.1"
git tag v1.1
git tag
git push origin v1.1
图片.png
参数化构建.png
图片.png
图片.png
[root@jenkins scripts]# vim html_devops_tag_rollback.sh
#/bin/bash
##WORKSPACE是jenkins内置变量打印当前项目目录
Code_Dir=$WORKSPACE
Web_Dir=/usr/share/nginx
Web_IP="192.168.122.106"
Date=`date +%F-%H-%M-%S`
Time=$Date-${git_version}
get_code(){
cd $Code_Dir && tar czf /tmp/web-${Time}.tar.gz ./*
}
scp_web_server(){
for Ip in $Web_IP
do
scp /tmp/web-${Time}.tar.gz $Ip:$Web_Dir
ssh root@$Ip "cd $Web_Dir && mkdir web-${Time}"
ssh root@$Ip "cd $Web_Dir && tar xf web-${Time}.tar.gz -C web-${Time} && rm -rf web-${Time}.tar.gz"
ssh root@$Ip "cd $Web_Dir && rm -rf html &&ln -s web-${Time} html"
done
}
deploy(){
get_code
scp_web_server
}
rollback() {
for Ip in $Web_IP
do
back_file=`ssh root@$Ip "cd $Web_Dir && find ./ -maxdepth 1 -type d -name "web-*-${git_version}""`
ssh root@$Ip "cd $Web_Dir && rm -rf html &&ln -s $back_file html"
done
}
if [ $deploy_env == "deploy" ];then
##GIT_COMMIT GIT_PREVIOUS_SUCCESSFUL_COMMIT 成功的hash
if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
echo "你已经部署过此版本 ${git_version}"
rollback
exit 0
fi
deploy
elif [ $deploy_env == "rollback" ];then
rollback
fi
4. jenkins集成SonarQube
需要SonarQube Scanner for Jenkins插件
图片.png
图片.png
图片.png
图片.png
sonar.projectKey=html
sonar.projectName=${JOB_NAME}
sonar.sources=.
企业微信插件.png
企业微信配置.png
图片.png
企业微信申请 必须新建群聊 选择群聊右键新建机器人 输入名称 复制到上图就ok了
网友评论