Jenkins-Pipeline

这篇具有很好参考价值的文章主要介绍了Jenkins-Pipeline。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Pipeline

1 安装插件
Jenkins-Pipeline,docker && k8s && devops,jenkins,运维,pipeline

2 新建一个 Pipline 工程
Jenkins-Pipeline,docker && k8s && devops,jenkins,运维,pipeline
3 配置Pipeline 脚本
agent的使用可以参考这个文档

pipeline {
    agent any

    stages {
        stage('Build') { 
            steps {
                echo 'Building project...'
            }
        }
        stage('Test') { 
            steps {
                echo 'Testing project...'
            }
        }
        stage('Deploy') { 
            steps {
                echo 'Deploying to server ...'
            }
        }
        stage('Push') { 
           steps {
               echo 'Pusing to harbor ...'
           }
       }
    }
}

我们配置的每一个阶段都可以在这里展示:
Jenkins-Pipeline,docker && k8s && devops,jenkins,运维,pipeline
4 如果我们需要在阶段内部执行多条指令

pipeline {
  agent any
  stages {
      stage('Build') { 
          steps {
              sh 'echo "multi-steps pipeline"'
              sh '''
                  echo "multi command"
                  pwd
                  ls
              '''
          }
      }
  }
}

5 失败以后重重试

pipeline {
    agent any

    stages {
        stage('Build') { 
            steps {
                sh 'echo "multi-steps pipeline"'
                sh '''
                    echo "multi command"
                    pwd
                    ls
                '''
            }
        }
        stage('Test') { 
            steps {
                echo 'Testing project...'
            }
        }
        stage('Deploy') { 
            steps {
                echo 'Deploying to server ...'
            }
        }
          stage('Push') { 
            steps {
                echo 'Pusing to harbor ...'
            }
        }
          stage('Retry') { 
            steps {
                retry(3) {
                    sh 'Retry failure...'
                }
            }
        }
    }
}

Jenkins-Pipeline,docker && k8s && devops,jenkins,运维,pipeline

Jenkins-Pipeline,docker && k8s && devops,jenkins,运维,pipeline
6 超时重试

pipeline {
    agent any

    stages {
        stage('Build') { 
            steps {
                sh 'echo "multi-steps pipeline"'
                sh '''
                    echo "multi command"
                    pwd
                    ls
                '''
            }
        }
        stage('Test') { 
            steps {
                echo 'Testing project...'
            }
        }
       stage('Deploy') { 
            steps {
                retry(3) {
                    sh 'echo hello_world'
                }
                
                timeout(time: 3, unit: 'SECONDS') {
                    sh 'sleep 5'
                }
            }
        }
          stage('Push') { 
            steps {
                echo 'Pusing to harbor ...'
            }
        }
          stage('Retry') { 
            steps {
                retry(3) {
                    sh 'Retry failure...'
                }
            }
        }
    }
}

Jenkins-Pipeline,docker && k8s && devops,jenkins,运维,pipeline
7 使用环境变量

pipeline {
    agent any
    #在这里进行环境变量的定义
    environment {
        EV1 = 'e1'
        EV2 = 'e2'
    }
    stages {
        stage('Build') { 
            steps {
                #在后面的i奥本中进行应用
                sh 'echo "Hello, $NAME1 and $NAME2"'
            }
        }
    }
}

上面的例子是为了方便演示,这里也提供一个生产环境中会使用的真正的pipeline,是一个脱敏后的demo, 然后我们还可加一些代码检查机制在构建步骤里面,关于代码检查:

pipeline {
    agent {
        node {
            label 'Slave1'
        }
    }
    environment {
        
         def artifactId = 'xxxx'
         def projectNameSpace='backend'
         def harborIp='ip:8888'
    }
    stages{
        stage('pull'){
            steps{
                git branch: 'master', credentialsId: 'jenkins-gitlab', url: 'http:xxxx.git'
            }
        }
        stage('compiler'){
            steps{ 
            
                sh '''
                 mvn clean package -DskipTests -Pmaster
                '''
            }
        }
        stage('build'){
            environment {
                def version = sh script: 'mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true
            } 
            steps{
                 sh '''
                 cp -r ./gis-config    startup/demo-project/target/
                mv ./startup/demo-project/Dockerfile startup/demo-project/target/Dockerfile
                docker build -t ${harborIp}/${projectNameSpace}/b_${artifactId}:${version} startup/demo-project/target
                docker build -t ${harborIp}/${projectNameSpace}/b_${artifactId}:1.1.8 startup/demo-project/target
                '''
            }
        }
		stage('push'){
		    environment {
                def version = sh script: 'mvn org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate -Dexpression=project.version -q -DforceStdout', returnStdout: true
            } 
            steps{
                sh '''
                docker push ${harborIp}/${projectNameSpace}/b_${artifactId}:${version}
                docker push ${harborIp}/${projectNameSpace}/b_${artifactId}:1.1.8
                '''
            }
        }
    }
}

8 使用post action

pipeline {
   agent any

   stages {
       stage('Build') { 
           steps {
               sh 'echo "multi-steps pipeline"'
               sh '''
                   echo "multi command"
                   pwd
                   ls
               '''
           }
       }
       stage('Test') { 
           steps {
               echo 'Testing project...'
           }
       }
      stage('Deploy') { 
           steps {
               retry(3) {
                   sh 'echo hello_world'
               }
               timeout(time: 3, unit: 'SECONDS') {
                   sh 'sleep 5'
               }
           }
       }
         stage('Push') { 
           steps {
               echo 'Pusing to harbor ...'
           }
       }
         stage('Retry') { 
           steps {
               retry(3) {
                   sh 'Retry failure...'
               }
           }
       }
   }
    post {
      
       always {
           echo 'always executed'
       }
     
       success {
           echo 'executed if this test success'
       }
      
       failure {
           echo 'executed if this test fails'
       }
   }
}

Jenkins-Pipeline,docker && k8s && devops,jenkins,运维,pipeline

Blue Ocean

除了在Jenkins项目配置中写入Pipeline DSL, 还可以通过BlueOcean UI设置流水线项目。

Blue Ocean 重新思考Jenkins的用户体验,重新设计Jenkins Pipeline, 但与原有的Jenkins作业兼容,增加了新的特性:

  • Pipeline可视化
  • 异常处理可视化
  • Pipeline 编辑器
  • Git集成协作

但是BlueOcean暂时还不成熟,原有的Jenkins classic UI依然保留。需要以插件的形式安装BlueOcean

BlueOcean Plugin

默认情况下不安装 BlueOcean Plugin,手动安装流程如下

  • Manage Jenkins > Manage Plugins > Available Tab
  • 在filter框内输入blue ocean,点击安装
  • Blue Ocean 会自动安装有依赖关系的插件
  • 重启

Dashboard左侧出现Open Blue Ocean

这个其实就是,将Pipe的脚本采用UI的界面来配置,这里演示了,感兴趣的可以去试试,我还是喜欢直接写脚本。文章来源地址https://www.toymoban.com/news/detail-801746.html

到了这里,关于Jenkins-Pipeline的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jenkins pipeline项目

    回到目录 将练习jenkins使用pipeline项目,结合k8s发布一个简单的springboot项目 前提:jenkins的环境和k8s环境都已经安装完成,提前准备了gitlab和一个简单的springboot项目 创建一个流水线项目  流水线中选择git,并选择gitlab的test项目,拉取分支为main  后端代码整体结构如下  jenk

    2024年02月14日
    浏览(34)
  • 【Jenkins】pipeline流水线

    流水线既能作为任务的本身,也能作为jenkinsfile,使用流水线可以让我们的任务从ui手动操作,转换为代码化,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队其他开发者同事参与进来,同时也可以编辑开发jenkinswebui不能完成的复杂的构建逻辑,作

    2024年02月09日
    浏览(56)
  • 【Jenkins】Pipeline - 设置超时时间

    默认时间单位为 MINUTES ,如果其他时间单位,则使用 unit 参数:SECONDS、MINUTES和HOURS 可以在不同级别(每个整体管道或每个阶段)使用options指定超时 在上面的示例中,在阶段超时之后,流水线中止,并显示以下消息: Sending interrupt signal to process Cancelling nested steps due to timeout 如果

    2024年02月17日
    浏览(33)
  • Jenkins ——pipeline入门教程

    一、什么是pipeline 什么是Pipeline?简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程(实用场景:将多个Jenkins构建任务轻松集成)。   简而言之,就是一套工作流框架,将原本独

    2024年02月09日
    浏览(33)
  • jenkins Pipeline接入mysql

    jenkin pipeline进化过程如下: Jenkins Pipeline 脚本优化实践:从繁琐到简洁 Jenkins Pipeline脚本优化:为Kubernetes应用部署增加状态检测 使用Jenkins和单个模板部署多个Kubernetes组件。有一些需要动态设置的配置不想在jenkins中配置,想将这些变量存储在mysql 这种数据库中,通过动态修改

    2024年04月15日
    浏览(28)
  • Jenkins-Pipeline基本使用

    使用Groovy语法 Pipeline 是Jenkins 2.X核心特性,帮助Jenkins实现从CI到CD与DevOps的转变 Pipeline 简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立 运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流 程编排与可视化 1、声明式(仅在2.5版本后支持)

    2023年04月22日
    浏览(35)
  • Jenkins Pipeline的hasProperty函数

    用于判断某个参数或者字段是否存在。 例子一 出现的场景: 我想通过参数配置进来一个选择框列表,根据选择的情况做不同的处理;在过程中,我发首次构建Job的时候会报错误。错误如下: 原因是:可能是因为首次构建, parameters 中的 extendedChoice 还没有初始化好导致本次

    2024年02月15日
    浏览(28)
  • jenkins_Pipeline使用测试

    安装jenkins 安装声明式插件Pipeline:Declarative 创建pipeline流水线 样例 1.1 agent(代理) 1.2 stages(阶段) 包含一系列一个或多个 stage 指令,建议 stages 至少包含一个 stage 指令用于连续交付过程的每个离散部分,比如构建,测试,和部署。 1.3 post 定义一个或多个steps,这些阶段根据流水线或阶段

    2024年04月11日
    浏览(30)
  • Jenkins pipeline中的全局变量

    1.再environment使用key=value形式定义变量 2.从参数中获取变量值

    2024年02月07日
    浏览(28)
  • jenkins-pipeline语法详解

    pipeline支持两种语法形式 1. 声明式 1.1特点: 最外层必须由pipline{ //do something }来进行包裹 不需要分号作为分隔符,每个语句必须在一行内 不能直接使用groovy语句(例如循环判断等),需要被script {}包裹 1.2 语句示例 1.3 声明式核心概念 pipeline 2.agent 3.stages 4.stage 5.steps 6.post 1

    2023年04月19日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包