zoukankan      html  css  js  c++  java
  • Jenkins流水线项目发布流程

    CI/CD代码发布流程

    1. 开发者开发代码
    2. 提交至git仓库
    3. jenkins从仓库拉取代码
    4. jenkins通过maven(ant,gradle等)构建项目推到docker仓库
    5. 生成一个在tomcat运行的项目的docker容器
    6. 测试人员测试

    流水线项目创建

    • 环境
    主机(ip) 环境
    node1(192.168.94.141) rhel8,tomcat9,Jenkins,ssh密钥
    node2(192.168.94.143) rhel8,tomcat9,ssh免密登录
    //生成key
    [root@node1 ~]# ssh-keygen -t rsa 
    [root@node1 ~]# ssh-copy-id root@node2 #此处需修改hosts文件端口映射,不然就写node2的ip
    
    //关闭防火墙相关
    [root@node1 ~]# systemctl disable --now firewalld
    [root@node1 ~]# setenforce 0
    [root@node2 ~]# systemctl disable --now firewalld
    [root@node2 ~]# setenforce 0
    
    • 安装maven命令
    //安装maven打包命令
    [root@node1 ~]# yum -y install maven
    //安装git命令
    [root@node1 ~]# yum -y install git
    

    新建任务

    pipeline {
        agent any
        
        stages {
            stage('pull code') {
                steps {   #拉取代码
                    git 'http://github.com/lizhenliang/tomcat-java-demo.git'
                }
            }
    
            stage('package') {
                steps {		#打包代码
                    sh """	#表示用shell解释器解释以下命令
                    mvn clean
                    mvn package
                    """
                }
            }
             stage('deploy') {
                steps {		#scp命令传输包到部署机上并重启tomcat环境
                    sh """
                    scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.94.143:/usr/local/apache-tomcat-9.0.46/webapps
                    ssh root@192.168.94.143 "bash /usr/local/apache-tomcat-9.0.46/bin/shutdown.sh && bash /usr/local/apache-tomcat-9.0.46/bin/startup.sh"
                    """
                }
            }
        }
    }
    





    基于参数构建的流水线流程



    流水线脚本编写

    pipeline {
        agent any
        
        stages {
            stage('pull code') {
                steps {
                    git "${GIT_URL}"	#调用仓库地址变量
                }
            }
     stage('package') {
                steps {		
                    sh """	
                    mvn clean
                    mvn package
                    """
                }
            }
             stage('deploy') {
                steps {		
                    sh """	#调用maven包名,部署主机,tomcat安装目录
                    scp target/${MAVEN_PACK}.war root@${DEPLOY_HOST}:${TOMCAT_DIR}webapps
                    ssh root@192.168.94.143 "bash ${TOMCAT_DIR}bin/shutdown.sh && bash ${TOMCAT_DIR}bin/startup.sh" #远程命令控制部署机重启tomcat服务
                    """
                }
            }
        }
    }
    

  • 相关阅读:
    android MotionEvent中getY和getRawY的区别
    Volley之ByteArrayPool
    读懂Volley,必须要理解的几个问题
    Fragment中getContext得到的context从哪来?(基于androidx.fragment:1.2.5源码)
    ViewPager(三)两个熊孩子天生不一样
    ViewPager(二) Adapter的爱恨情仇
    ViewPager(一) 初相识
    Android Volley框架源码详细解析
    Vue-Switch-Demo
    Redis杂化
  • 原文地址:https://www.cnblogs.com/fangxinxin/p/14783097.html
Copyright © 2011-2022 走看看