-进入配置阶段
-新建jenkins任务
#脚本 [root@jenkins ~]# vim bbb.sh #!/bin/bash source /etc/profile scp /var/lib/jenkins/workspace/tast/test1/target/test1.war root@192.168.100.204:/usr/local/tomcat/webapps/ ssh root@192.168.100.204 "/usr/local/tomcat/bin/shutdown.sh" sleep 3 ssh root@192.168.100.204 "/usr/local/tomcat/bin/startup.sh" [root@jenkins ~]# cd /var/lib/jenkins/workspace [root@jenkins workspace]# rm -rf * #删除原来的 [root@jenkins workspace]# ll 总用量 0 [root@jenkins workspace]# git clone git@192.168.100.202:root/test.git #重新克隆 正克隆到 'test'... remote: Enumerating objects: 14, done. remote: Counting objects: 100% (14/14), done. remote: Compressing objects: 100% (5/5), done. remote: Total 14 (delta 0), reused 0 (delta 0) 接收对象中: 100% (14/14), done. [root@jenkins workspace]# ll 总用量 0 drwxr-xr-x 3 root root 36 7月 2 18:19 test [root@jenkins workspace]# cd test/ [root@jenkins test]# ll 总用量 4 -rw-r--r-- 1 root root 19 7月 2 18:19 index.html [root@jenkins test]# rm -rf * [root@jenkins test]# ll #传输项目到脚本指定的路径下 总用量 4 drwxr-xr-x 5 root root 97 7月 2 17:56 test1 -rw-r--r-- 1 root root 491 7月 2 17:56 time.java [root@jenkins test]# git add test1 #添加暂存区 [root@jenkins test]# git add time.java [root@jenkins test]# git commit -m "tomcat " #添加到本地仓库 [master 502f979] tomcat 20 files changed, 262 insertions(+) create mode 100644 test1/.classpath create mode 100644 test1/.project create mode 100644 test1/.settings/.jsdtscope create mode 100644 test1/.settings/org.eclipse.jdt.core.prefs create mode 100644 test1/.settings/org.eclipse.m2e.core.prefs create mode 100644 test1/.settings/org.eclipse.wst.common.component create mode 100644 test1/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 test1/.settings/org.eclipse.wst.jsdt.ui.superType.container create mode 100644 test1/.settings/org.eclipse.wst.jsdt.ui.superType.name create mode 100644 test1/.settings/org.eclipse.wst.validation.prefs create mode 100644 test1/pom.xml create mode 100644 test1/src/main/resources/com/Time.java create mode 100644 test1/src/main/webapp/WEB-INF/web.xml create mode 100644 test1/src/main/webapp/index.jsp create mode 100644 test1/target/classes/com/Time.class create mode 100644 test1/target/classes/com/Time.java create mode 100644 test1/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF create mode 100644 test1/target/m2e-wtp/web-resources/META-INF/maven/www.linuxfan.cn.new/test1/pom.properties create mode 100644 test1/target/m2e-wtp/web-resources/META-INF/maven/www.linuxfan.cn.new/test1/pom.xml create mode 100644 time.java [root@jenkins test]# echo $? 0 [root@jenkins test]# git push -u origin master #推送到远程仓库 Counting objects: 38, done. Compressing objects: 100% (26/26), done. Writing objects: 100% (37/37), 5.25 KiB | 0 bytes/s, done. Total 37 (delta 1), reused 0 (delta 0) To git@192.168.100.202:root/test.git 6974052..502f979 master -> master 分支 master 设置为跟踪来自 origin 的远程分支 master。
-在web主机上安装tomcat
******(1)先删除httpd [root@apache ~]# yum -y remove httpd 。。。。。。 完毕! ******(2)安装tomcat [root@apache ~]# ll #上传jdk和tomcat的源码包 总用量 186324 -rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg -rw-r--r-- 1 root root 9417469 7月 3 02:08 apache-tomcat-8.5.16.tar.gz -rw-r--r-- 1 root root 181367942 7月 3 02:02 jdk-8u91-linux-x64.tar.gz [root@apache ~]# tar xf jdk-8u91-linux-x64.tar.gz [root@apache ~]# mv jdk1.8.0_91/ /usr/local/java [root@apache ~]# cat <<a>> /etc/profile > export PATH=$PATH:/usr/local/java/bin:/usr/local/java > a [root@apache ~]# source /etc/profile [root@apache ~]# java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode) [root@apache ~]# tar xf apache-tomcat-8.5.16.tar.gz [root@apache ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat [root@apache ~]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@apache ~]# netstat -anpt | grep java tcp6 0 0 :::8080 :::* LISTEN 1458/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1458/java tcp6 0 0 :::8009 :::* LISTEN 1458/java
-在jenkins中进行构建
-报错的解决方案
#为web主机添加权限 [root@apache ~]# chmod a+x /usr/local/tomcat/bin/shutdown.sh [root@apache ~]# chmod a+x /usr/local/tomcat/bin/startup.sh [root@apache ~]# chmod -R o=rx /usr/local/tomcat/bin/ [root@apache ~]# chmod -R o=rwx /usr/local/tomcat/logs/ [root@apache ~]# vim /usr/local/tomcat/bin/catalina.sh #直接在注释下添加 #!/bin/bash JAVA_HOME="/usr/local/java" JRE_HOME="/usr/local/java/jre" 。。。。。。 #保存退出
(5)Jenkins回滚
Jenkins回滚有两种方式,分别是通过gitlab仓库的commit_id来回滚和使用jenkins的版本序列号来回滚
-通过commit_id来回滚
- Gitlab可以通过提交的id号的前12位,就可以回到之前的状态
******(1)使用的是上面的apache项目,所以现在web主机上安装一下httpd [root@apache ~]# yum -y install httpd 。。。。。。 完毕! [root@apache ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@apache ~]# systemctl start httpd
(2)在做之前先安装一下gogs插件
注意:安装失败可以去手动下载,然后上传
(3)配置jenkins中apache的项目
case $status in rollback) echo "-----本次操作为回滚,版本号为$version-----" git reset --hard $version echo "-----回滚完成,打包中-----" ;; *) exit esac #发现上面的status和version,都作为变量被引入了,使用case语句,把rollback作为条件,达到目的效果
[root@jenkins ~]# vim aaa.sh #编写脚本 #!/bin/bash cd /root scp /var/lib/jenkins/workspace/aaa/index.html root@192.168.100.204:/var/www/html/index.html #/var/lib/jenkins/workspace/这个目录为jenkins拉取gitlab库下来的库,后面的aaa就是项目目录,仓库文件会拉到相应的项目目录中 [root@jenkins ~]# rm -rf test/ #删除原来拉下来的gitlab库,重新拉取 [root@jenkins ~]# ll 总用量 605960 -rwxr-xr-x 1 root root 144 7月 1 17:14 aaa.sh -rw-------. 1 root root 1264 1月 12 18:27 anaconda-ks.cfg -rw-r--r-- 1 root root 8842660 7月 2 09:29 apache-maven-3.5.4-bin.tar.gz -rwxr-xr-x 1 root root 274 7月 2 19:05 bbb.sh -rw-r--r-- 1 root root 181367942 6月 30 22:11 jdk-8u91-linux-x64.tar.gz -rw-r--r-- 1 root root 66044542 6月 30 22:16 jenkins-2.222.4-1.1.noarch.rpm drwxr-xr-x 6 root root 99 7月 2 09:29 maven -rw-r--r-- 1 root root 122904706 7月 2 09:34 nexus-3.13.0-01-unix.tar.gz -rw-r--r-- 1 root root 241319636 6月 30 23:49 plugins.tar.gz drwxr-xr-x 3 root root 20 7月 2 09:34 sonatype-work [root@jenkins ~]# git clone git@192.168.100.202:root/test.git #重新拉取仓库 正克隆到 'test'... remote: Enumerating objects: 57, done. remote: Counting objects: 100% (57/57), done. remote: Compressing objects: 100% (35/35), done. remote: Total 57 (delta 1), reused 0 (delta 0) 接收对象中: 100% (57/57), 6.79 KiB | 0 bytes/s, done. 处理 delta 中: 100% (1/1), done. [root@jenkins ~]# cd test/ [root@jenkins test]# git rm -rf * #使用git rm -rf删除之前仓库中的所有文件 rm 'index.html' rm 'test1/.classpath' rm 'test1/.project' rm 'test1/.settings/.jsdtscope' rm 'test1/.settings/org.eclipse.jdt.core.prefs' rm 'test1/.settings/org.eclipse.m2e.core.prefs' rm 'test1/.settings/org.eclipse.wst.common.component' rm 'test1/.settings/org.eclipse.wst.common.project.facet.core.xml' rm 'test1/.settings/org.eclipse.wst.jsdt.ui.superType.container' rm 'test1/.settings/org.eclipse.wst.jsdt.ui.superType.name' rm 'test1/.settings/org.eclipse.wst.validation.prefs' rm 'test1/pom.xml' rm 'test1/src/main/resources/com/Time.java' rm 'test1/src/main/webapp/WEB-INF/web.xml' rm 'test1/src/main/webapp/index.jsp' rm 'test1/target/classes/com/Time.class' rm 'test1/target/classes/com/Time.java' rm 'test1/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF' rm 'test1/target/m2e-wtp/web-resources/META-INF/maven/www.linuxfan.cn.new/test1/pom.properties' rm 'test1/target/m2e-wtp/web-resources/META-INF/maven/www.linuxfan.cn.new/test1/pom.xml' rm 'time.java' [root@jenkins test]# echo "aaaa1" > index.html #重新写一份文件 [root@jenkins test]# git add index.html #添加到暂存区 [root@jenkins test]# git commit -m "aaa1" #添加到本地仓库 [master eec82c4] aaa1 21 files changed, 1 insertion(+), 263 deletions(-) delete mode 100644 test1/.classpath delete mode 100644 test1/.project delete mode 100644 test1/.settings/.jsdtscope delete mode 100644 test1/.settings/org.eclipse.jdt.core.prefs delete mode 100644 test1/.settings/org.eclipse.m2e.core.prefs delete mode 100644 test1/.settings/org.eclipse.wst.common.component delete mode 100644 test1/.settings/org.eclipse.wst.common.project.facet.core.xml delete mode 100644 test1/.settings/org.eclipse.wst.jsdt.ui.superType.container delete mode 100644 test1/.settings/org.eclipse.wst.jsdt.ui.superType.name delete mode 100644 test1/.settings/org.eclipse.wst.validation.prefs delete mode 100644 test1/pom.xml delete mode 100644 test1/src/main/resources/com/Time.java delete mode 100644 test1/src/main/webapp/WEB-INF/web.xml delete mode 100644 test1/src/main/webapp/index.jsp delete mode 100644 test1/target/classes/com/Time.class delete mode 100644 test1/target/classes/com/Time.java delete mode 100644 test1/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF delete mode 100644 test1/target/m2e-wtp/web-resources/META-INF/maven/www.linuxfan.cn.new/test1/pom.properties delete mode 100644 test1/target/m2e-wtp/web-resources/META-INF/maven/www.linuxfan.cn.new/test1/pom.xml delete mode 100644 time.java [root@jenkins test]# git push origin master #推送到远程仓库 Counting objects: 5, done. Compressing objects: 100% (1/1), done. Writing objects: 100% (3/3), 234 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.100.202:root/test.git 6783721..eec82c4 master -> master
在配置完成后,在构建项目时,会带参数
可以选择选项进行构建,点击构建
访问web主机,成功修改页面
******修改gitlab远程仓库的文件内容 [root@jenkins ~]# cd test/ [root@jenkins test]# ll 总用量 4 -rw-r--r-- 1 root root 6 7月 4 14:46 index.html [root@jenkins test]# echo "bbbbb1" > index.html #修改为bbbbb1 [root@jenkins test]# git add index.html [root@jenkins test]# git commit -m "bbbb1" [master b20929a] bbbb1 1 file changed, 1 insertion(+), 1 deletion(-) [root@jenkins test]# git push origin master Counting objects: 5, done. Writing objects: 100% (3/3), 233 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.100.202:root/test.git eec82c4..b20929a master -> master
再次进行构建
测试页面成功推送
查看仓库的commit_id号
右边的都是id号,可以直接复制
复制上一个仓库版本的id号
-通过项目的发布的版本号来回滚
通过发布时备份项目,会有一个版本号,通过版本号来进行回滚
修改一些jenkins项目的配置,在上面的使用commit_id回滚实验的基础上修改
case $status in deploy) echo "-----发布前进行打包备份-----" echo "status:$status" BACK_DIR=/var/lib/jenkins/workspace path="${BACK_DIR}/bak" if [ -d $path ]; then echo "The files is already exists " else mkdir -p $path fi cd ${BACK_DIR}/${JOB_NAME} #${JOB_NAME}=项目名称(test) #${BUILD_NUMBER}=第几次构建 tar czf ${JOB_NAME}-${BUILD_NUMBER}.tar.gz * mv ${JOB_NAME}-${BUILD_NUMBER}.tar.gz ${BACK_DIR}/bak scp ${WORKSPACE}/* root@192.168.100.214:/var/www/html/index.html echo "Completin!" ;; rollback) BACK_DIR=/var/lib/jenkins/workspace cd ${BACK_DIR}/bak tar xf ${JOB_NAME}-${version}.tar.gz scp ${BACK_DIR}/bak/index.html root@192.168.100.214:/var/www/html/index.html rm -rf ${JOB_NAME} ;; *) exit ;; esac
修改仓库的文件内容
[root@jenkins ~]# cd test/ [root@jenkins test]# ll 总用量 4 -rw-r--r-- 1 root root 7 7月 4 14:56 index.html [root@jenkins test]# cat index.html bbbbb1 [root@jenkins test]# echo "cccccc" > index.html [root@jenkins test]# git add index.html [root@jenkins test]# git commit -m "add ccc" [master e89845c] add ccc 1 file changed, 1 insertion(+), 1 deletion(-) [root@jenkins test]# git push origin master Counting objects: 5, done. Writing objects: 100% (3/3), 233 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 2 (delta 0) To git@192.168.100.202:root/test.git b20929a..e89845c master -> master
先进行构建
******(1)可以看到项目已经被打包备份了 [root@jenkins test]# cd /var/lib/jenkins/workspace/ [root@jenkins workspace]# [root@jenkins workspace]# ll 总用量 0 drwxr-xr-x 3 root root 36 7月 5 14:20 aaa drwxr-xr-x 2 root root 6 7月 5 14:20 aaa@tmp drwxr-xr-x 2 root root 27 7月 5 14:20 bak drwxr-xr-x 3 root root 36 7月 4 14:42 test [root@jenkins workspace]# cd bak/ [root@jenkins bak]# ll 总用量 4 -rw-r--r-- 1 root root 128 7月 5 14:20 aaa-22.tar.gz #这个就是备份的文件 ******(2)再次修改仓库文件内容 [root@jenkins bak]# cd [root@jenkins ~]# cd test/ [root@jenkins test]# echo "dddddd" > index.html [root@jenkins test]# git add index.html [root@jenkins test]# git commit -m "add ddd" [master 5b934c3] add ddd 1 file changed, 1 insertion(+), 1 deletion(-) [root@jenkins test]# git push origin master Counting objects: 5, done. Writing objects: 100% (3/3), 233 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.100.202:root/test.git e89845c..5b934c3 master -> master
再次进行构建
这次进行回滚,回滚上一个,上一个的项目序列号是22