栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Jenkins自动化部署与Pipeline脚本

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jenkins自动化部署与Pipeline脚本

本文基于Jenkins已搭建完毕,Jenkins服务搭建详解可参考此文:Jenkins搭建 - 青柠时光 - 博客园

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

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

 后台项目的pipeline:

pipeline{
    agent any
    stages{

        stage('拉取GitLab代码'){  
            steps{
            catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
            checkout([$class: 'GitSCM', branches: [[name: '*/test']], extensions: [], userRemoteConfigs: [[credentialsId: '创建的gitlab上的身份id', url: '代码地址']]])
        } }}
        
        stage('编译代码'){       
            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('应用包移动到服务器'){       
            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'){       
            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服务器。

多多更新,通俗易懂

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号