首页 > 其他分享 >jenkins pipline 和 jenkinsfile

jenkins pipline 和 jenkinsfile

时间:2023-10-12 14:23:16浏览次数:24  
标签:java agent echo steps Jenkins jenkins jenkinsfile pipline stage

Jenkins Pipeline(或简称为 "Pipeline")是一套插件,将持续交付的实现和实施集成到 Jenkins 中。
Jenkins Pipeline 提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件(称为Jenkinsfile)中,该文件可以被放入项目的源代码控制库中。
Jenkinsfile 是 Jenkins 2.x 核心特性 Pipeline 的脚本,由Groovy语言实现。
jenkinsfile 能使用两种语法进行编写 - 声明式和脚本化。
声明式和脚本化的流水线从根本上是不同的。 声明式流水线的是 Jenkins 流水线更近的特性:

  • 相比脚本化的流水线语法,它提供更丰富的语法特性,
  • 是为了使编写和读取流水线代码更容易而设计的。
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                //
            }
        }
        stage('Test') {
            steps {
                //
            }
        }
        stage('Deploy') {
            steps {
                //
            }
        }
    }
}
node { 
    stage('Build') {
        //
    }
    stage('Test') {
        //
    }
    stage('Deploy') {
        //
    }
}

下面将以声明式脚本为例,介绍jenkinsfile:
#设置运行的agent

pipeline {
agent {label 'jenkins-slave'} // 配置构建项目在标签为jenkins-slave的机器上运行
.....
使用多个agent

pipeline {
    agent none
    stages {
        stage('Build') {
            agent any
            steps {
               echo "build..."
            }
        }
        stage('Test on Linux') {
            agent {
                label 'linux'
            }
            steps {
               echo "test..."
            }

#配置可选参数
agent any
options{
       disableConcurrentBuilds() //不允许同时执行流水线
       skipDefaultCheckout() //在`agent` 指令中,跳过从源代码控制中检出代码的默认情况
       timeout(time: 10, unit: 'MINUTES') //设置流水线运行的超时时间
       timestamps() //预定义由Pipeline生成的所有控制台输出时间
}
.....

#配置全局变量
environment {
      service="java"
}
.....
#配置局部变量
stage('Deploy'){
   steps {
       withEnv(['service=java']){
       echo '$service'
}}}

#配置可选参数
parameters{
     string(name: 'branch', defaultValue: 'dev', description: 'which branch do you want to build?')
     choice(name: 'service',choices:"java\nnodejs",description: "服务名")
     choice(name: 'gitrepo',choices:"java\nnodejs",description: "仓库地址")
}

#配置机密文本、用户名和密码
stage('Deploy'){
steps {
     withCredentials([usernamePassword(credentialsId: 'aliyun_oss_upload', passwordVariable: 'aliyun_sceret', usernameVariable: 'aliyun_key')]) {
     sh '~/ossutil config -e ${endpoint} -i ${aliyun_key} -k ${aliyun_sceret};~/ossutil cp -r -f dist "oss://${name}"'
}}}
注:需先在jenkins添加用户凭据

#拉取代码
stage('Checkout') {
steps {
         checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '3', url: 'ssh://git@giturl/javacode.git']]])
}
}
#在job中点击Pipline Syntax ,选择checkout out from version control ,选择git输入仓库地址,生成拉取代码配置

#定义构建完成后执行动作

 

post {
       success {
           echo '构建成功'
       }
       failure {
           echo '构建失败'
       }
       unstable {
           echo '该任务被标记为不稳定任务'
       }
       aborted {
           echo '该任务被终止'
       }
   }

#条件判断

 

stage('Build'){
  steps {
    script {
      if ("${gitrepo}" == "java") {
                         echo "java"
      }        
      else if ("${gitrepo}" == "python"){
         echo "python"
      } else {
         echo "nodejs"
       }
      }           
  }
}

#if 需定义在script{}内

 

#获取命令返回值

stage('Push'){
  steps {
    script{
    def pid = sh returnStatus: true, script: " ps -ef|grep tomcat|awk '{print \$2}'"
    echo '$pid'
  }  
  }
}

 

标签:java,agent,echo,steps,Jenkins,jenkins,jenkinsfile,pipline,stage
From: https://www.cnblogs.com/imcati/p/17759363.html

相关文章

  • 记一次线上华为云Kubernetes(CCE)环境Jenkins 发版爆雷事故
    一、前言2023年10月11号下午17:16分,临近下班之际,研发同事在办公室发出了尖锐的爆鸣声....紧接着企业微信呼唤,说线上项目突然无法正常发版了....与此同时接收到消息,便展开一系列排查。二、排查思路定位从报错信息上来看,在gitpull项目的过程就出错了,提示无法写入新的配置文件.....c......
  • 软件测试|docker搭建Jenkins+Python+allure自动化测试环境
    简介本文将详细介绍如何使用Docker搭建一个完整的自动化测试环境,其中包括Jenkins作为持续集成和持续交付工具,Python作为测试脚本编写语言,以及Allure作为测试报告生成工具。通过使用Docker容器,您可以轻松地设置和管理这些工具,提高测试效率和质量。安装docker安装docker的步骤,可......
  • Jenkins集成newman
    一、Docker环境准备二、Jenkins环境准备三、登录Jenkins安装NodeJs插件四、Jenkins全局工具配置Nodejs五、创建Jenkins自由风格项目构建步骤1:选择ExecuteNodeJSscript构建步骤2:选择执行shell脚本六、将postman相关的脚本、环境变量数据、全局变量数据等拷贝到Jenki......
  • Jenkins+sonar+jacoco 实现代码扫描,接口测试,代码覆盖
    sonar配置参照往期博文jacoco+自动化测试参照往期博文sonar+jacoco覆盖报告配置# jacoco生成的exec文件sonar.jacoco.reportPaths=/home/jacoco/lXXXXXXXX/lXXXXXXXXX.exec #代码覆盖率插件sonar.java.coveragePlugin=jacoco#jacoco插件版本jacoco.version=0.8.8#s......
  • Docker 安装 Jenkins 系统
    超级简单原地址:https://my.oschina.net/sh021/blog/50554691、环境平台系统及工具就不多介绍说明了,大家应该都比较了解熟悉了,我就直接实操过程截图记录说明。虚拟机系统Ubuntu18.04.5 启动docker 查看安装的版本信息#dockerversion查看本地安装的镜像系统#dock......
  • Jenkins 配置MAC节点,编译iOS项目
     文章主要介绍Jenkins主从节点配置,mac机配置slave节点。从机已经搭建android和ios编译环境为例,介绍Jenkins节点配置。环境介绍主机环境介绍:主机Jenkins运行在tomcat中。Jenkins本身安装的环境仅包括java环境和gradle环境。#setjavaenvironmentexportJAVA_HOME=/usr......
  • 如何在Jenkins Pipeline中接入SonarQube进行代码扫描
    随着软件开发项目的不断增多,代码质量的管理变得愈发重要。SonarQube是一个开源的代码质量管理平台,它可以帮助开发团队发现和修复代码中的各种问题,从而提高代码的质量。而Jenkins是一个广泛使用的持续集成和持续交付工具,它可以自动化构建、测试和部署应用程序。本文将介绍如何在Jen......
  • jenkins安装插件报错
    1、安装插件publish-over-ssh报错 解决方案:下载publish-over.hpi文件 https://updates.jenkins.io/download/plugins/publish-over/0.22/publish-over.hpi离线安装选择的插件: 然后再安装publish-over-ssh插件 ......
  • jenkins结合Sonarqube实现代码扫描。
    #1.centos8系统环境准备: ip 主机名 软件 10.0.0.170sonarqubesonarqube8.9.9LTSpostgresql-10.17 10.0.0.160jenkins-masterjenkins-2.346.3sonar-scanner-4.7#sonarqube7.9.x版本后不在支持mysql。#sonarqube6.7.xLTS版本要求数据库需......
  • k8s部署jenkins+gitlab实现代码发布
     1.#k8s部署jenkins#k8s中运行jenkins服务,gitlab还是跑在物理机上,因为经常需要clone修改代码。#基于java命令,运⾏javawar包或jar包,本次以jenkins.war包部署⽅式为例,jenkins的数据保存⾄外部存储(NFS或者PVC)。1.1#镜像⽬录⽂件:#pwd/opt/k8s-data/docke......