分享

pipeline常用插件用法

 点点阅 2022-03-08

pipeline 常用插件语句
1、checkout SCM 可以用来下载git仓代码,还可以支持cherry pick 某个patch

    checkout([$class: 'GitSCM', branches: [[name: '*/master']],
         userRemoteConfigs: [[url: 'http://git-server/user/repository.git']]])
  • url Type: String
  • branch (optional) Type: String
  • changelog (optional) Type: boolean
  • credentialsId (optional) Type: String
  • poll (optional) Type: boolean

用法:https:///doc/pipeline/steps/git/
https://www./doc/pipeline/steps/workflow-scm-step/

    checkout([$class: 'GitSCM', branches: [[name: "${branch}"]], doGenerateSubmoduleConfigurations: 
    	false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: "${relative_dir}"]], 
    		submoduleCfg: [], userRemoteConfigs: [[url: "${repo_url}"]]])
    checkout([$class: 'GitSCM', branches: [[name: env.GERRIT_BRANCH]], 
    	doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', 
    		relativeTargetDir: "${relative_dir}"], [$class: 'BuildChooserSetting', buildChooser: [$class: 
    			'GerritTriggerBuildChooser']]], submoduleCfg: [], userRemoteConfigs: [[refspec: 
    				env.GERRIT_REFSPEC, url: "${repo_url}"]]])
checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false,
                            extensions: [[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false, timeout: 120], [$class: 'CheckoutOption', timeout: 20],[$class: 'RelativeTargetDirectory', relativeTargetDir: '${relative_dir}'], [$class: 'CleanCheckout']], 
                            submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxxx-0fbb-4718-8dcd-23e99cc8ecca', 
                            url: '${repo_url}']]])

2、pipeline启动一个job,build

    build job: 'my_job', parameters: [string(name: 'name', value: liurizhou), string(name: 'age', value: 
    	12)],propagate: false,wait: false

可以获取下游的结果等信息,例如:

                    def bld = build job: "${jobName}", parameters: [ string(name: 'name', value: 'liurizhou')], propagate: false
                    def buildNumber = bld.number
                    def buildUrl = bld.absoluteUrl
                    def buildResult = bld.result
                    echo "jobName: ${jobName}, buildNumber: ${buildNumber}, buildResult: ${buildResult}, buildUrl: ${buildUrl}"

用法:https:///doc/pipeline/steps/pipeline-build-step/

3、发布报告,publishHTML

    publishHTML (target: [
        allowMissing: false,
        alwaysLinkToLastBuild: false,
        keepAll: true,
        reportDir: 'info',
        reportFiles: 'manifest.html, report.html',
        reportName: "Summary Report"
    ])

用法:https:///doc/pipeline/steps/htmlpublisher/

4、withDockerContainer ,pipeline中启动docker镜像运行

    withDockerContainer(args: '-e "http_proxy=xxxxx" -e "https_proxy=yyyyyy" -v "/home/my/workspace:/home/my/workspace"', 
    	image: 'myimages:latest')	 {
    		sh "cd /home/my/workspace && ls -l"
    }

用法:https:///doc/pipeline/steps/docker-workflow/

5、emailext, pipeline中实现邮件发送

    emailext (
    	subject:"标题",
    	body:"""
    	正文
    	""",
    	to:"xxxx@126.com"  
    )

用法:https:///doc/pipeline/steps/email-ext/

6、manager.addBadge,在build history条目中增加标签
在这里插入图片描述

    manager.addBadge(
        "computer.png",
        "${script.env.NODE_NAME}",
        manager.hudson.getRootUrl() + "computer/" + "${nodeName}"
    )

用法:https:///doc/pipeline/steps/badge/
补充:manager有很多用法,例如:
manager.createSummary(“star-gold.gif”).appendText(“test test test”)
addShortText(text, color, background, border, borderColor),addInfoBadge(text)等
参见:https://wiki./display/JENKINS/Groovy+Postbuild+Plugin

7、cleanWs()或者deleteDir(), 删除工作目录

    cleanWs() //删除${WORKSPACE}目录
    dir("${env.WORKSPACE}@tmp") { //删除${WORKSPACE}@tmp目录
        deleteDir()
    }
    dir("${env.WORKSPACE}@script") { //删除@script目录
        deleteDir()
    }
    dir("${env.WORKSPACE}@script@tmp") { //删除@script@tmp目录
        deleteDir()
    }

8、获取shell 命令的返回值和状态

    //获取标准输出
    //第一种
    result = sh returnStdout: true ,script: "<shell command>"
    result = result.trim()
    //第二种
    result = sh(script: "<shell command>", returnStdout: true).trim()
    //第三种
    sh "<shell command> > commandResult"
    result = readFile('commandResult').trim()
    
    //获取执行状态
    //第一种
    result = sh returnStatus: true ,script: "<shell command>"
    result = result.trim()
    //第二种
    result = sh(script: "<shell command>", returnStatus: true).trim()
    //第三种
    sh '<shell command>; echo $? > status'
    def r = readFile('status').trim()

9、归档工件 archiveArtifacts

    archiveArtifacts '*report.html'

效果同freestyle类型中Archive the artifacts 插件
https://blog.csdn.net/liqiangeastsun/article/details/79062806:
在这里插入图片描述
用法:
https:///doc/pipeline/steps/core/

10、withCredentials ,pipeline中避免使用密码明文

    steps{
        withCredentials([usernamePassword(credentialsId: 'user_for_openshift', passwordVariable: 'password', usernameVariable: 'username')]) {
        sh 'docker login -u $username -p $password registory.ctiwifi.cn:5000
        }
    }

用法:https:///doc/pipeline/steps/credentials-binding/

11、Artifactory 插件用来上传下载等操作

rtServer (
    id: "Artifactory-1",
    url: "https://XXXXXXXXXXX/artifactory",
    // If you're using username and password:
    username: "username",
    password: "password"
)
rtDownload (
    serverId: "Artifactory-1",
    spec: 
    """{
        "files": [
        {
            "pattern": "project1/temp/1.txt",
            "target": "${WORKSPACE}/dependencies/",
            "flat": "true"
        }
    ]
    }"""
)

用法:https:///doc/pipeline/steps/artifactory/#artifactorygradlebuild-run-artifactory-gradle
示例:
https://www./confluence/display/RTF/Working+With+Pipeline+Jobs+in+Jenkins
https://github.com/jfrog/project-examples/tree/master/jenkins-examples/pipeline-examples
另外还可以使用脚本试的写法:

def deps_download(list){
    def server_url="https://xxxxxxxx/artifactory"
    def server = Artifactory.newServer url: "${server_url}", username: 'username', password: 'passwd'
    server.bypassProxy = true
    for(dep_path in list){
        if(dep_path.contains(server_url)){
            dep_path = dep_path.split(server_url)[-1]
        }
        def downloadSpec = """{
                        "files": [
                        {
                            "pattern": "${dep_path}",
                            "target": "${WORKSPACE}/dependencies/",
                            "flat": "true"
                        }
                        ]
                    }"""
        server.download(downloadSpec)
    }
}

12、findFiles,readJSON等
用法:https:///doc/pipeline/steps/pipeline-utility-steps/

13、常用pipeline step
用法:https:///doc/pipeline/steps/workflow-basic-steps/#retry-retry-the-body-up-to-n-times

Table of Contents
Pipeline: Basic Steps
catchError: Catch error and set build result to failure
deleteDir: Recursively delete the current directory from the workspace
dir: Change current directory
echo: Print Message
error: Error signal
fileExists: Verify if file exists in workspace
isUnix: Checks if running on a Unix-like node
mail: Mail
pwd: Determine current directory
readFile: Read file from workspace
retry: Retry the body up to N times
sleep: Sleep
stash: Stash some files to be used later in the build
step: General Build Step
timeout: Enforce time limit
tool: Use a tool from a predefined Tool Installation
unstable: Set stage result to unstable
unstash: Restore files previously stashed
waitUntil: Wait for condition
warnError: Catch error and set build and stage result to unstable
withEnv: Set environment variables
wrap: General Build Wrapper
writeFile: Write file to workspace
archive: Archive artifacts
getContext: Get contextual object from internal APIs
unarchive: Copy archived artifacts into the workspace
withContext: Use contextual object from internal APIs within a block
  1. 设置job丢弃
    options {
        timeout(time: 60, unit: 'MINUTES')
        buildDiscarder logRotator(artifactDaysToKeepStr: '30', artifactNumToKeepStr: '100', daysToKeepStr: '30', numToKeepStr: '100')
    }
  1. d

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多