美文网首页
pipeline流水线以及jenkins扩展

pipeline流水线以及jenkins扩展

作者: Linux运维 | 来源:发表于2020-06-20 18:06 被阅读0次

一、jenkins流水线(pipeline)

1.pipeline的固定书写格式

pipeline {
    agent any
    stages {
        stage ('下载代码') {
            ...
        }
        stage ('检测代码') {
            ...
        }
        stage ('编译代码') {
            ...
        }
        stage ('部署代码') {
            ...
        }
    }
}

2.jenkins实现pipeline流水线

以jenkins部署一个java项目为例
1.新建一个流水线任务

2.对流水线任务进行配置


脚本大概

pipeline {
    agent any
        #允许进行传参
    parameters { string(defaultValue: '', name: 'git_version', description: '请根据发布类型进行选择发布:\n 输入-v1.1-发布-最新代码-到生产' ) }

    stages {

        stage ('下载代码') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '743eb688-00af-4eca-9f76-3ba0c3b7f64d', url: 'git@gitlab.mrche.xyz:dev/java-project.git']]])
            }
        }

        stage ('检测代码') {
            steps {
                sh '/usr/local/sonar-scanner/bin/sonar-scanner \
                -Dsonar.projectName=${JOB_NAME} \
                -Dsonar.projectKey=${JOB_NAME} \
                -Dsonar.sources=. \
                -Dsonar.host.url=http://sonar.mrche.xyz:9000 \
                -Dsonar.login=0e2ba15c72af04********3823c2980e338d2ad7'
                #sonarqube生成的令牌Talk
            }
        }

        stage ('编译代码') {
            steps {
                sh 'mvn package'
            }
        }

        stage ('是否部署') {
            steps {
                #点击ok就会继续执行以下步骤
                input message: '确定要部署吗?', ok: 'ok'
            }
        }

        stage ('部署代码') {
            steps {
                sh 'sh -x /scripts/java-deploy-tag.sh'
            }
        }
    }

    //stages整体流水线运行完毕后才会执行post阶段
    post {
        success {
            #钉钉进行构建结果的通知
            dingTalk accessToken: 'd2c546dceffa5c8e4922194c*****6dcb24c08301a1331fca25b34c3bc76612c', imageUrl: '', jenkinsUrl: 'http://jenkins.mrche.xyz:8080', message: 'pipeline构建成功', notifyPeople: ''
        }

        failure {
            dingTalk accessToken: 'd2c546dceffa5c8e4922194c*****6dcb24c08301a1331fca25b34c3bc76612c', imageUrl: '', jenkinsUrl: 'http://jenkins.mrche.xyz:8080', message: 'pipeline构建失败', notifyPeople: ''
        }
    }
}

流水线参考步骤:

1.下载代码
2.检测代码
3.通知代码检测详情
4.是否编译

编译代码
部署代码

5.钉钉通知构建结果

二、jenkins分布式构建

1.实行分布式构建的原因
1.项目过多,构建次数多,单节点压力过大
2.项目繁多,需要依赖的各种环境可能会发生冲突

2.分布式构建的实现
(1)slave从节点的准备

1.slave从节点不需要安装jenkins
2.环境要与master一致(java、maven、脚本等)
3.sonarqube要一致(sonar-scanner)
4.与web集群节点实现免密
5.与gitlab主机实现免密
6.安装自己持有的环境(ios、python等)

(2)在jenkins中创建从节点

(3)对slave从节点进行配置


(4)检测结果
1.当master节点繁忙时,构建任务会自动分配给slave从节点
2.怎样指定节点进行任务的构建?

#在流水线脚本中进行修改
pipeline {
 agent { label 'slave-node1' }      #添加这个来指定节点运行
...

三、jenkins权限管理

全局角色:控制登录的用户能操作jenkins的哪些资源
项目角色:控制指定用户能操作或看到哪些项目

1.安装插件

2.启动role-base认证方式

3.管理和分配角色



相关文章

网友评论

      本文标题:pipeline流水线以及jenkins扩展

      本文链接:https://www.haomeiwen.com/subject/iwdaxktx.html