jenkins

作者: 挑战_bae7 | 来源:发表于2020-12-24 11:50 被阅读0次

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了

相关文章

网友评论

      本文标题:jenkins

      本文链接:https://www.haomeiwen.com/subject/turynktx.html