zoukankan      html  css  js  c++  java
  • Jenkins+主从+Pipeline+Webhook

    jenkins安装

    下载地址:https://pkg.jenkins.io/debian-stable/

    sudo apt-get update
    apt install daemon
    sudo apt-get install openjdk-8-jdk
    java -version
    dpkg -i jenkins_2.204.6_all.deb
    systemctl enable --now jenkins
    View Code

    安装插件

    登录后台,点击 Manage Jenkins --> Manage Plugins,搜索关键字Gitlab Hook Email

    jenkins基本配置

    !注意配置邮箱需要开启smtp和授权码

     

     

     

     

     

     https://zhuanlan.zhihu.com/p/22810691

     jenkins 主从配置

    配置免密码

    #主jenknis
    su jenkins
    ssh-keygen
    ssh-copy-id root@192.168.88.11
    

    从jenkins安装jdk

    apt install daemon
    sudo apt-get install openjdk-8-jdk

     复制主jenkins私钥

    https://www.cnblogs.com/jsonhc/p/7372359.html

    Pipeline配置

     安装2台tomcat用于测试

    sudo apt-get install tomcat8
    /etc/init.d/tomcat8 start
    
    mkdir -p /data/tomcat/test
    rm -rf /var/lib/tomcat8/webapps/*
    ln -s /data/tomcat/test/ROOT/ /var/lib/tomcat8/webapps/
    

      

    需要提前开通gitlab账号密码

     

     Jenkinsfile 提前上传到gitlab项目中

    node("jekins-agent1") 表示在jenkins从执行任务

     

     

     Jenkinsfile

    node("jekins-agent1"){
        stage("clone 代码"){
            sh "cd /home/jenkins/workspace/test  && rm -rf ./*"
            git credentialsId: '234d25df-a08d-46f6-a039-b7751e1944c3', url: 'http://192.168.88.10/root/test.git'
        }
        stage("代码构建"){
            sh "cd /home/jenkins/workspace/test  && tar czvf devops.tar.gz ./*"
        }
        
       stage("停止服务"){
        sh 'ssh sdn@192.168.88.12 "sudo /etc/init.d/tomcat8 stop && sudo rm -rf /data/tomcat/test/*"'
        sh 'ssh sdn@192.168.88.13 "sudo /etc/init.d/tomcat8 stop && sudo rm -rf /data/tomcat/test/*"'
       }
       
        stage("代码copy"){
        sh "cd /home/jenkins/workspace/test && scp devops.tar.gz   sdn@192.168.88.12:/data/tomcat/test/"
        sh "cd /home/jenkins/workspace/test && scp devops.tar.gz   sdn@192.168.88.13:/data/tomcat/test/"
        }
        
        
       stage("代码部署"){
            sh 'ssh sdn@192.168.88.12 "cd  /data/tomcat/test/ && tar xvf devops.tar.gz -C /data/tomcat/test/ && rm -rf devops.tar.gz"'
            sh 'ssh sdn@192.168.88.13 "cd  /data/tomcat/test/ && tar xvf devops.tar.gz -C /data/tomcat/test/ && rm -rf devops.tar.gz"'
       }
        stage("启动服务"){
        sh 'ssh sdn@192.168.88.12 "sudo /etc/init.d/tomcat8 start"'
        sh 'ssh sdn@192.168.88.13 "sudo /etc/init.d/tomcat8 start"'
       }
    }
    View Code

     webhook配置

    生成 token 后 复制 URL token 到 gitlab

     

     

     

     如下图返回200 OK

     

    Pipeline 构建邮件通知

    https://www.jianshu.com/p/c8fab60ed58e

    Pipeline 脚本试和声明式

    #脚本试
    node {
        stage("clone 代码"){
            sh "cd /var/lib/jenkins/workspace/pipline-linux40-app1-develop && rm -rf ./*"
            git branch: 'develop', credentialsId: '0792719f-b4fe-412a-a511-e8ecf60dd760', url: 'git@172.31.0.101:magedu/app1.git'
            echo "代码 clone完成"
        }
        stage("代码构建"){
            sh "cd /var/lib/jenkins/workspace/pipline-linux40-app1-develop && tar czvf linux40.tar.gz ./*"
        }
       stage("停止服务"){
            sh 'ssh www@172.31.0.106 "/etc/init.d/tomcat stop && rm -rf /data/tomcat/tomcat_webapps/linux40/*"'
            sh 'ssh www@172.31.0.107 "/etc/init.d/tomcat stop && rm -rf /data/tomcat/tomcat_webapps/linux40/*"'
       }
       
        stage("代码copy"){
            sh "cd /var/lib/jenkins/workspace/pipline-linux40-app1-develop && scp linux40.tar.gz  www@172.31.0.106:/data/tomcat/tomcat_appdir/"
            sh "cd /var/lib/jenkins/workspace/pipline-linux40-app1-develop && scp linux40.tar.gz  www@172.31.0.107:/data/tomcat/tomcat_appdir/"
        }
        
        
       stage("代码部署"){
            sh 'ssh www@172.31.0.106 "cd  /data/tomcat/tomcat_appdir/ && tar xvf linux40.tar.gz -C /data/tomcat/tomcat_webapps/linux40/"'
            sh 'ssh www@172.31.0.107 "cd  /data/tomcat/tomcat_appdir/ && tar xvf linux40.tar.gz -C /data/tomcat/tomcat_webapps/linux40/"'
       }
        stage("启动服务"){
            sh 'ssh www@172.31.0.106 "/etc/init.d/tomcat start"'
            sh 'ssh www@172.31.0.107 "/etc/init.d/tomcat start"'
       }
       
    }
    
    
    
    https://www.jenkins.io/zh/doc/book/pipeline/syntax/
    #声明式:
    pipeline{
        //agent any  //全局必须带有agent,表明此pipeline执行节点
        agent { label 'jenkins-node1' }
        stages{
            stage("代码clone"){
                //#agent { label 'master' }  //具体执行的步骤节点,非必须
                steps{
                    sh "cd /var/lib/jenkins/workspace/pipline-test && rm -rf ./*"
                    git branch: 'develop', credentialsId: '0792719f-b4fe-412a-a511-e8ecf60dd760', url: 'git@172.31.0.101:magedu/app1.git'
                    echo "代码 clone完成"
                }
            }
            
            stage("代码构建"){
                steps{
                    sh "cd /var/lib/jenkins/workspace/pipline-linux40-app1-develop && tar czvf linux40.tar.gz ./*"
                }
            }
            
           stage("停止服务"){
                steps{
                    sh 'ssh www@172.31.0.106 "/etc/init.d/tomcat stop && rm -rf /data/tomcat/tomcat_webapps/linux40/*"'
                    sh 'ssh www@172.31.0.107 "/etc/init.d/tomcat stop && rm -rf /data/tomcat/tomcat_webapps/linux40/*"'
                }
            }
            
            stage("代码copy"){
                steps{
                    sh "cd /var/lib/jenkins/workspace/pipline-linux40-app1-develop && scp linux40.tar.gz  www@172.31.0.106:/data/tomcat/tomcat_appdir/"
                    sh "cd /var/lib/jenkins/workspace/pipline-linux40-app1-develop && scp linux40.tar.gz  www@172.31.0.107:/data/tomcat/tomcat_appdir/"
                }
            }
            
            stage("代码部署"){
                steps{
                    sh 'ssh www@172.31.0.106 "cd  /data/tomcat/tomcat_appdir/ && tar xvf linux40.tar.gz -C /data/tomcat/tomcat_webapps/linux40/"'
                    sh 'ssh www@172.31.0.107 "cd  /data/tomcat/tomcat_appdir/ && tar xvf linux40.tar.gz -C /data/tomcat/tomcat_webapps/linux40/"'
                }
            }
            
            
            stage("启动服务"){
                steps{
                    sh 'ssh www@172.31.0.106 "/etc/init.d/tomcat start"'
                    sh 'ssh www@172.31.0.107 "/etc/init.d/tomcat start"'
                }
            }
        }
    }
    View Code
  • 相关阅读:
    PHP单引号和双引号的区别
    thinkphp实现导航高亮的简单方法
    js选中当前菜单后高亮显示的导航条
    Dubbo新版管控台
    把本人基于Dubbo的毕业设计分享粗来~
    Windows 查看端口占用情况
    GitLab 环境搭建【CentOS7】
    【非专业前端】vue+element+webpack
    【非专业前端】使用vue2.5.17+element2.4.5
    ElasticSearch6.3.2------入门
  • 原文地址:https://www.cnblogs.com/hanwei666/p/13187792.html
Copyright © 2011-2022 走看看