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

jenkins pipeline使用

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

jenkins pipeline使用

//声明式语法
pipeline {
    //表示随机选择jenkins执行任务(可指定某个slave如果有的话)
    agent any
    //全局变量
    environment {
        //变量的代码形式
        key_name = "value"
        key_name2 = "value2"
    }
    //阶段集合,包裹所有的阶段
    stages {
        //阶段
        stage('下载代码') {
            //步骤
            steps {
                //具体执行的任务(拉取代码、构建等)
                echo "======="
            }
        }
    }

上述代码就是一个简单的pipeline脚本

一个stages可以有多个stage

一个stage可以有多个steps

可以通过创建pipeline时查看语法

选择某个语法前提是已经安装的对应的模块

拉取代码

填写完生成即可

注意选择的是 checkout: Check out from version control 而不是什么git,另外使用svn的小伙伴也选用这个然后SCM处选择Subversion,需要提前安装该插件才能选择

下面是一个完整的任务脚本

流程是:拉取代码、打包、创建docker镜像、改名、推送镜像、远程kubectl服务器执行更新镜像

pipeline {
    agent any
    environment {
        //jenkins服务器上maven路径
        MAVEN_HOME = "/usr/local/maven3.6"
        //程序包名称
        ServiceName = "crm"
        //镜像名称
        ImageName = "uat-crm-pipeline"
        //内存限制
        MEM_LIMIT = "2048"
        //包类型
        TYPE = "jar"
        //程序端口
        PORT = "18080"
        //jar程序启动指定环境配置文件参数
        ENV = "uat"
        //uat环境镜像仓库
        Reg_NameSpace = "aaa"
        //当前项目下jar包路径
        JENKINS_DIR = "crm-web/target"
        //仓库地址
        VPC_REGISTRY = "registry-vpc.cn-hangzhou.aliyuncs.com"
        //k8s上deploy名称
        Deployment = "uat-crm-app"
    }

    stages {
        stage('下载代码') {
            steps {
                checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: 'b8dbc5f5-b94a59c4899e', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'https://192.168.0.100:4431/svn/online/com_hills/crm-backend/@${svn_version}']], quietOperation: true, workspaceUpdater: [$class: 'UpdateUpdater']])
            }
        }
        stage('构建') {
            steps {
                sh "${MAVEN_HOME}/bin/mvn clean package -Dmaven.test.skip=true"
            }
        }
        stage('创建docker镜像Dockerfile和程序启动脚本') {
            steps {
                sh '''start_command="java -Xms${MEM_LIMIT}m -Xmx${MEM_LIMIT}m -javaagent:/usr/local/agent/skywalking-agent.jar -Dskywalking.agent.service_name=uat-crm  -jar $ServiceName.$TYPE --debug=false --server.port=$PORT --spring.cloud.nacos.discovery.server-addr=jsb-nacos:8848 --spring.profiles.active=$ENV"

docker_image="registry-vpc.cn-hangzhou.aliyuncs.com/aaa/java-sky-agent:v4"

echo -e "#!/bin/bash\n${start_command}" > docker-entrypoint.sh
echo "${start_command}" > startsvc

cat << EOF > Dockerfile
FROM ${docker_image}
WORKDIR /data
COPY ${JENKINS_DIR}/$ServiceName.$TYPE /data
COPY docker-entrypoint.sh /usr/local/bin
ENV TZ Asia/Shanghai
ENV LANG en_US.UTF-8
RUN chmod +x /usr/local/bin/docker-entrypoint.sh && ln -s /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
EOF'''
            }
        }
        stage('构建镜像') {
            steps {
                sh "docker build -t ${ImageName} ."
            }
        }
        stage('修改镜像名称') {
            steps {
                sh "docker tag ${ImageName}:latest ${VPC_REGISTRY}/${Reg_NameSpace}/${ImageName}:${BUILD_NUMBER}"
            }
        }
        stage('上传镜像到仓库') {
            steps {
                sh "docker push ${VPC_REGISTRY}/${Reg_NameSpace}/${ImageName}:${BUILD_NUMBER}"
            }
        }
        stage('k8s deployment更新镜像') {
            steps {
                sshPublisher(publishers: [sshPublisherDesc(configName: 'uat-kubectl', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'kubectl set image deploy ${Deployment} -n uat *=${VPC_REGISTRY}/${Reg_NameSpace}/${ImageName}:${BUILD_NUMBER}', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }
    }
}

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

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

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