上次基本把环境都搭建好了,下一步就是开始完成整个流程的自动化部署。源码:https://github.com/limingios/netFuture/tree/master/jenkins/

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)

环境回顾

应用 IP地址 服务 端口 安装应用 安装方式
gitlab 192.168.66.100 gitlab 10080 gitlab docker
jenkins 192.168.66.101 jenkins 8888 jdk8 maven3.2 git2.8 shell
nexus 192.168.66.102 nexus 8081 nexus docker
tomcat 192.168.66.103 tomcat 8080 tomcat docker
IP地址 端口 用户名 密码
192.168.66.100 10080 root 123456789qwe
192.168.66.101 8888 root 8d31833e277c4b579a3be35fe2bdc7d4
192.168.66.102 8081 admin admin123
192.168.66.103 8080

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第1张图片

本地项目部署到100上gitlab

  • 本地代码

    代码比较简单为的是流程

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第2张图片
『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第3张图片

  • 本地提交到gitlab上

    修改配置,可以非本地化提交代码

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第4张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第5张图片

可以新建用户建立仓库,或者用root建立仓库。

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第6张图片

提示没有上传ssh 秘钥

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第7张图片

查看本地的ssh秘钥,window环境直接使用git bash

ssh-keygen -t rsa -C "[email protected]"
cat /c/Users/Administrator/.ssh/id_rsa.pub

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第8张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第9张图片

查看jenkins的ssh秘钥,101环境直接使

ssh-keygen -t rsa -C "[email protected]"
cat /root/.ssh/id_rsa.pub

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第10张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第11张图片

本地windows 和 101的jenkins添加完毕

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第12张图片

本地windows 代码提交

git init
git add .
git commit -m "注释语句"
git remote add origin ssh://[email protected]:10022/root/idig8.git
git push -u origin master

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第13张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第14张图片

本地项目部署到101上 jenkins

  • 全局安全性配置
    『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第15张图片
    『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)

  • 创建任务

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第16张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第17张图片

口令随意写,等下要在gitlab做触发设置
Use the following URL to trigger build remotely: JENKINS_URL/job/idig8/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第18张图片

100 gitlab触发器的设置
http://192.168.66.101:8888/job/idig8/build?token=123456
token的值就是jenkins上设置的。
『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第19张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第20张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第21张图片

等下有专门的对pipeline的编写

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第22张图片

保存

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第23张图片

101的配置私服nexus


cd .m2
pwd
vi settings.xml

>settings.xml
```  xml



  
  

  
      
      nexus-releases
      admin
      admin123
    
    
      nexus-snapshots
      admin
      admin123
    
  

   
     
      nexus-releases 
      * 
      http://192.168.66.102:8081/nexus/content/groups/public 
    
     
      nexus-snapshots 
      * 
      http://192.168.66.102:8081/nexus/content/repositories/snapshots 
     
   

  
   
      nexus
      
        
          nexus-releases
          http://nexus-releases
          true
          true
        
        
          nexus-snapshots
          http://nexus-snapshots
          true
          true
        
      
      
         
                nexus-releases
                 http://nexus-releases
                 true
                 true
               
               
                 nexus-snapshots
                  http://nexus-snapshots
                true
                 true
             
         
    
  

  
      nexus
  

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)

安装sshpass,ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。

yum -y install sshpass

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第24张图片

测试gitlab和jenkins

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第25张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第26张图片

正式编写

  • pipeline

    #!groovy
    pipeline {
    agent any
    //环境变量,
    environment {
        REPOSITORY="ssh://[email protected]:10022/root/idig8.git"
        MODULE="idig8"
        SCRIPT_PATH="/root/"
        remoteHost_tomcat= '192.168.66.103'
    
    }
    //流水线是如何提前,都是通过很多个stages下面的stage
    stages {
        stage('获取代码'){
            steps{
                echo " start fetch code from git ssh://[email protected]:10022/root/idig8.git"
                deleteDir()
                git "${REPOSITORY}"
            }
        }
        stage('代码静态检查') {
            steps{
                echo " start code check"
            }
        }
        stage('编译+单元测试') {
            steps{
                echo " start compile"
                 sh"""
         cd $workspace/idig8/common-parent/
         mvn  -U clean install -Dmvn.test.skip=true -Ptest
         """
            }
        }
    
        stage('jar包上传到nexus上') {
            steps{
                echo " start maven update jar"
                 sh"""
         cd $workspace/idig8/common-parent/common-utils
         mvn clean deploy
         cd $workspace/idig8/common-parent/common-dao
         mvn clean deploy
         cd $workspace/idig8/common-parent/common-service
         mvn clean deploy
         """
            }
        }
    
        stage('移动目录到用户目录下') {
            steps{
                echo "mv idig8.war"
                 sh"""
         mv -f $workspace/idig8/common-parent/common-web/target/common-web.war ${SCRIPT_PATH}${MODULE}.war
         """
            }
        }
        stage('拷贝文件到tomcat指定目录下') {
    
            steps{
                echo "scp 目标文件"
                 sh"""
         sshpass -p 'vagrant' ssh -p 22 -o stricthostkeychecking=no root@${remoteHost_tomcat} 'rm -rf /root/tomcat/tomcat-persistence/tomcat/data/${MODULE}*';
         sshpass -p 'vagrant' scp -P 22 -o stricthostkeychecking=no ${SCRIPT_PATH}${MODULE}.war root@${remoteHost_tomcat}:/root/tomcat/tomcat-persistence/tomcat/data/${MODULE}.war;
         """
         echo "打包完毕美滋滋 刷新tomcat查看吧"
            }
        }
    
    }
    }

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第27张图片

只要push代码流水线自动开启工作,真是美滋滋啊

结果20轮的pipeline的编写终于成功了
删除docker挂载的idig所有的目录,然后替换新的jar包放进去

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第28张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第29张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第30张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第31张图片

『互联网架构』软件架构-jenkins搭建和 maven gitlab自动化部署流程(下)(六)_第32张图片

PS:完成自动化部署,终于完成了 ,在自己的虚拟机环境下搞了3天,感觉好有成就感,首选shell脚本部署学习,pipeline并不是那么麻烦。里面多半是用shell的方式搞定了,多亏自己搞了2年shell的开发。没忘记,必须前2年了解的东西确定对自己的以后的路起关键作用。ssh的公钥也在里面起到了很重要的作用,希望老铁按照我的思路可以轻松的完成部署。感谢老铁的支持,本来想2篇写在一起的,后来又拆开了,因为内容太充实了。为了搞这个每天怼到晚上2点,下班就搞不容易啊。那就拜了个拜~来不及握手!