Jenkins自动化部署与Pipeline脚本

本文基于Jenkins已搭建完毕,Jenkins服务搭建详解可参考此文:Linux安装与卸载Jenkins(超详细)

一般是Jenkins部署在一台服务器上,gitlab部署在一台服务器上,发布的服务部署在一台服务器上,大致流程基本上三步:

第一步:在Jenkins上创建一个项目,可以创建纯pipeline脚本的,也可以是自由风格的,之后还需要配置一下SSH server,之后就写脚本;

 后台项目的pipeline:

pipeline{
    agent any
    stages{

        stage('拉取GitLab代码'){  /*拉取GitLab代码的工作*/
            steps{
            catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
            checkout([$class: 'GitSCM', branches: [[name: '*/test']], extensions: [], userRemoteConfigs: [[credentialsId: '创建的gitlab上的身份id', url: '代码地址']]])
        } }}
        
        stage('编译代码'){       /*打包构建源码成指定应用包,构建后存放的目录在/root/.jenkins/workspace/指定构建任务/target文件下*/
            steps{
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                    sh"""
                    source /etc/profile
                    cd /opt/jenkins_workspace/workspace/oms_back/zfy-auth/zfy-auth
                    mvn clean 
                    mvn install -Dmaven.test.skip=true
                    """
                    }
                }
        }
                                    
       stage('应用包移动到服务器'){       /*打包构建源码成指定应用包,构建后存放的目录在/root/.jenkins/workspace/指定构建任务/target文件下*/
            steps{
                catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
                sh"""
                mv /opt/jenkins_workspace/workspace/oms_back/zfy-auth/zfy-auth/zfy-auth-admin/target/zfy-auth-admin.jar /opt/jenkins_workspace/workspace/back/zfy-auth/zfy-auth/zfy-auth-admin/target/zfy-auth-admin.jar
                scp -P 10088 /opt/jenkins_workspace/workspace/back/zfy-auth/zfy-auth/zfy-auth-admin/target/zfy-auth-admin.jar  root@192.168.2.2:/opt/tomcat-7.0.67/
                """
            }
            }
        }   
        
        stage('备份更新启动tomcat'){       /*打包构建源码成指定应用包,构建后存放的目录在/root/.jenkins/workspace/指定构建任务/target文件下*/
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'back', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand:
                 '''
                 source /etc/profile
                 cd /opt/tomcat-7.0.67
                 sh stop.sh
                 sleep 2
                 sh start.sh &
                 '''
                 , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '/opt/tomcat-7.0.67')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }        
    }
}

 前端pipeline:

 host='192.168.1.1'
 port='22'
 user='root'
 pwd='root'
 pipeline{
    agent any
    stages{
        stage('拉取GitLab代码'){
                steps{
                    checkout([$class: 'GitSCM', branches: [[name: 'http://192.168.1.1:9001/zfy-projects/zfy.git']], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'Default', submoduleCfg: [], userRemoteConfigs: [[credentialsId: '9947770c-42e2-483c-a47d-b2ef3db791f6', url: '${Gitlab_URL}']]])
                } 
            }
        stage('替换相关配置'){                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                steps{
                    echo "不需要配置"
                }
            }
        stage('打包构建'){
                steps{
                    sh"""
                    
                    if [ -f "pom.xml" ];then
                        cd ${workspace}/${project}/zfy-peak/zfy-client/zfy-c-h
                    else
                        cd ${workspace}/${project}/zfy-peak/zfy-client/zfy-c-h
                    fi
                    npm install
                    sleep 2
                    npm run build
                    rm -rf zfy-c-h
                    mv dist zfy-c-h
                    """
                }
            }
        stage('应用包移动到nginx'){
            steps{
                 sh"""
                 cd ${workspace}/${project}/zfy-peak/zfy-client/zfy-c-h
                 sshpass -p '$pwd' scp -r zfy-c-h '$user'@'$host':/opt/app
                 """
                }
            }
        stage('重启加载服务'){
            steps{
                 sshPublisher(publishers: [sshPublisherDesc(configName: "${remoteHost}", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand:
                 '''
                 source /etc/profile
                 /usr/sbin/nginx -s reload
                 '''
                 , execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '/opt/app')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                } 
        }    
    }
}

第二部:在gitlab上找到需要自动化构建的项目,为它创建一个角色,把该角色的身份id和HTTP代码地址拿到之后放入piepeline脚本里面;

第三步:可以为Jenkins创建免密登录的ssh公私钥,将公钥放在Jenkins上,把私钥放入~/.ssh/authorized_keys文件里面

在piepeline脚本里面也可以输入命令 ssh -p 端口 用户名@IP 进入代码服务器,将打好的jar或者war亦或前端静态文件拷入tomcat或者Nginx服务器。

多多更新,通俗易懂

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值