美文网首页
Jenkins(四)

Jenkins(四)

作者: 测试游记 | 来源:发表于2019-09-14 16:09 被阅读0次

    欢迎关注我公众号呀~「测试游记」「zx94_11」

    文件目录相关操作

    • deleteDir:删除当前目录

    • dir:切换到目录

      • 默认流水线工作在工作空间目录下,dir步骤可以让我们切换到其他目录
      dir('/tmp'){
         deleteDir()
      }
      
    • fileExists:判断文件是否存在,结果返回布尔值

    • isUnix:判断是非为UNIX系统,如果是则返回true

    • pwd:返回当前所在目录

    • 有一个布尔类型的可选参数tmp,如果为true,则返回与当前工作空间关联的临时目录

    • writeFile:将内容写入指定文件中

      • file:文件路径,可以是绝对路径,也可以是相对路径
      • text:要写入的文件内容
      • encoding:目标文件的编码。如果为空,则使用操作系统默认的编码
    • readFile:读取文件

      • file:路径,同上
      • encoding:编码,同上
    script{
       writeFile(file:"base64File", text:"amVua2lucyBib29r", encoding:"Base64")
       def content = readFile(file:"base64File", encoding: "UTF-8")
       echo "${content}"
    }
    
    修改Jenkinsfile 执行结果

    amVua2lucyBib29rjenkins book的Base64编码

    转码

    制品相关步骤

    • stash:保存临时文件

      将文件保存起来,以便同一次构建的其他步骤或阶段使用。

      如果整个流水线在同一台机器上执行,那stash是多余的,一般用于跨Jenkins node使用。

      stash步骤会将文件存储在tar文件中,对于大文件的stash操作会消耗Jenkins master的计算资源。

      • name:字符串类型,保存文件的集合的唯一标识

      • allowEmpty:布尔类型,允许stash内容为空

      • excludes:字符串类型,排除文件,如果排除多个使用「逗号」分隔

      • includes:字符串类型,stash文件,留空表示全部

      • useDefaultExcludes:布尔类型,true:使用Ant风格路径默认排除文件

      Ant风格
      
      | 通配符 | 说明                    |
      | ------ | ----------------------- |
      | `?`    | 匹配任何单字符          |
      | `*`    | 匹配0或者任意数量的字符 |
      | `**`   | 匹配0或者更多的目录     |
      
      | URL路径                  | 说明                                                         |
      | ------------------------ | ------------------------------------------------------------ |
      | /project/`*`.a           | 匹配**项目根路径**下所有在project路径下的.a文件              |
      | /project/p`?`ttern       | 匹配**项目根路径**下 /project/pattern 和 /app/pXttern等,但是不包括/app/pttern |
      | /`**`/example            | 匹配项目根路径下 /project/example, /project/foow/example, 和 /example等 |
      | /app/`**`/dir/file.`*` | 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java等 |
      | /`**`/`*`.jsp            | 匹配(Matches)任何的.jsp 文件                                 |
      
      最长匹配原则:
      /project/dir/file.jsp,现在存在两个路径匹配模式`/**/*.jsp`和`/project/dir/*.jsp`,那么会根据模式`/project/dir/*.jsp`来匹配
    
    • unstash:取出之前stash的文件

      pipeline {
          agent none
          stages {
              stage('stash') {
                  agent {label "master"}
                  steps {
                      writeFile file: "a.txt",text: "$BUILD_NUMBER"
                      stash(name: "abc", includes: "a.txt")
                  }
              }
              stage('unstash') {
                  agent {label "node2"}
                  steps {
                      script {
                          unstash("abc")
                          def content = readFile("a.txt")
                          echo "${content}"
                      }
                  }
              }
          }
      }
      

    命令相关

    • sh:执行shell命令

      • script:要执行的shell脚本

      • encoding:脚本执行后输出日志的编码,默认为系统编码

      • returnStatus:布尔类型,默认返回状态码,如果是非零则流水线执行失败。设置为true后,无论什么状态码,流水线执行都不受影响

      • returnStdout:布尔类型,如果为true,任务的标准输出将作为步骤的返回值,而不是打印到构建日志中(如果有错误,则依旧会打印到日志中)

        ⚠️returnStatus和returnStdout同时使用,只有returnStatus生效

    • bat,powershell步骤

      • bat步骤执行Windows的批处理命令
        • 支持参数类型sh
      • powershell执行的是PowerShell脚本
        • 支持参数类似sh

    其他步骤

    • error:主动报错,中止pipeline

      • error(“there is a error”)
    • tool:使用预定义的工具

      • name:工具名称

      • type(可选):工具类型,指该工具安装类的全路径类名

      • 在Global Tool Configuration(全局工具配置)中配置了工具

        全局工具配置 image-20190712222337303
    • timeout:代码块超时时间

      • time:整型
      • unit(可选):时间单位,默认分钟。支持NANOSECONDS,MICROSECONDS,MILLISECONDS,SECONDS,MINUTES(默认),HOURS,DAYS
      • activity(可选):布尔类型,true时 只有当日志没活动才算真正的超时
    • waitUntil:等待条件满足

      timeout(50) {
         waitUntil{
            script{
               def r = sh script: 'curl http://exmple',return Status: true
               return (r == 0)
            }
         }
      }
      
    • retry:重复执行块

      steps {
         retry(20){
            script{
               sh script: 'curl http://exmple',return Status: true
            }
         }
      }
      

      ⚠️如果某次retry抛出异常,只中止当次,不会中止整个retry的执行

      在执行retry的过程中,用户是无法中止流水线的

    • sleep:休眠一段时间

      • time:整型,休眠时间
      • unit(可选):时间单位,默认秒,与timeout类似
      • 示例:sleep(120) // 休眠120秒sleep(time:'2',unit:"MINUTES") // 休眠2分钟

    编写Jenkinsfile

    推荐VS Code扩展:Jenkins Pipeline Linter Connector

    1. 安装
    2. 配置扩展
    3. 配置Jenkins服务器
    4. 运行
    Jenkins Pipeline Linter Connector 配置插件 配置CSRF 运行校验

    故意写错了进行校验:

    错误进行校验
    Errors encountered validating Jenkinsfile:
    WorkflowScript: 14: unexpected token: } @ line 14, column 1.
       }
       ^
    

    相关文章

      网友评论

          本文标题:Jenkins(四)

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