国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Jenkins Pipeline的hasProperty函數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了Jenkins Pipeline的hasProperty函數(shù)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

函數(shù)的作用

用于判斷某個(gè)參數(shù)或者字段是否存在。

用法

例子一

def projectStr = "P1,P2,P3"
pipeline {
    agent any

    parameters {
        extendedChoice(
                defaultValue: "${projectStr}",
                description: '選擇要發(fā)布的項(xiàng)目',
                multiSelectDelimiter: ',',
                name: 'SELECT_PROJECTS',
                quoteValue: false,
                saveJSONParameterToFile: false,
                type: 'PT_CHECKBOX',
                value: "${projectStr}",
                visibleItemCount: 1000)
    }

    stages {
        stage('Git Pull') {
            steps {
                script {
                	// 判斷參數(shù)字段是否存在
                    if (this.hasProperty("SELECT_PROJECTS")) {
                        echo "${SELECT_PROJECTS}"
                    } else {
                        echo "SELECT_PROJECTS is null"
                    }
                }
            }
        }
    }
}

出現(xiàn)的場景: 我想通過參數(shù)配置進(jìn)來一個(gè)選擇框列表,根據(jù)選擇的情況做不同的處理;在過程中,我發(fā)首次構(gòu)建Job的時(shí)候會(huì)報(bào)錯(cuò)誤。錯(cuò)誤如下:

groovy.lang.MissingPropertyException: No such property: SELECT_PROJECTS for class: groovy.lang.Binding
	at groovy.lang.Binding.getVariable(Binding.java:63)
	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:285)
	at org.kohsuke.groovy.sandbox.impl.Checker$7.call(Checker.java:375)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:379)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:355)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:355)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:355)
	at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
	at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
	at WorkflowScript.run(WorkflowScript:78)
	at ___cps.transform___(Native Method)
	at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
	at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
	at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66)
	at sun.reflect.GeneratedMethodAccessor323.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
	at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
	at com.cloudbees.groovy.cps.Next.step(Next.java:83)
	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:177)
	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:166)
	at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136)
	at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275)
	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:166)
	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51)
	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:187)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:420)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$400(CpsThreadGroup.java:95)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:330)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:294)
	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)

原因是:可能是因?yàn)槭状螛?gòu)建,parameters 中的extendedChoice還沒有初始化好導(dǎo)致本次構(gòu)建上線文沒有SELECT_PROJECTS變量 。我又沒有做提前判斷,直接取值去判斷的。 代碼如下:

def projectStr = "P1,P2,P3"
pipeline {
    agent any

    parameters {
        extendedChoice(
                defaultValue: "${projectStr}",
                description: '選擇要發(fā)布的項(xiàng)目',
                multiSelectDelimiter: ',',
                name: 'SELECT_PROJECTS',
                quoteValue: false,
                saveJSONParameterToFile: false,
                type: 'PT_CHECKBOX',
                value: "${projectStr}",
                visibleItemCount: 1000)
    }

    stages {
        stage('Git Pull') {
            steps {
                script {
                	// 不是使用hasProperty函數(shù)判斷的,而是直接用變量判斷的,所以會(huì)報(bào)錯(cuò)
                    if (null == SELECT_PROJECTS) {
                        echo "${SELECT_PROJECTS}"
                    } else {
                        echo "SELECT_PROJECTS is null"
                    }
                }
            }
        }
    }
}

遇到的問題

問題一

沒有執(zhí)行的權(quán)限,解決方法授權(quán)執(zhí)行即可,具體怎么授權(quán)自行百度。
錯(cuò)誤如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-614415.html

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods hasProperty java.lang.Object java.lang.String
	at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectStaticMethod(StaticWhitelist.java:243)
	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123)
	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:178)
	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:182)
	at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
	at WorkflowScript.run(WorkflowScript:78)
	at ___cps.transform___(Native Method)
	at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:90)
	at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:113)
	at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:83)
	at sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
	at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
	at com.cloudbees.groovy.cps.Next.step(Next.java:83)
	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:177)
	at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:166)
	at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136)
	at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275)
	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:166)
	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51)
	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:187)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:420)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$400(CpsThreadGroup.java:95)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:330)
	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:294)
	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)

到了這里,關(guān)于Jenkins Pipeline的hasProperty函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Jenkins】Pipeline - 設(shè)置超時(shí)時(shí)間

    默認(rèn)時(shí)間單位為 MINUTES ,如果其他時(shí)間單位,則使用 unit 參數(shù):SECONDS、MINUTES和HOURS 可以在不同級別(每個(gè)整體管道或每個(gè)階段)使用options指定超時(shí) 在上面的示例中,在階段超時(shí)之后,流水線中止,并顯示以下消息: Sending interrupt signal to process Cancelling nested steps due to timeout 如果

    2024年02月17日
    瀏覽(24)
  • 【Jenkins】pipeline流水線

    【Jenkins】pipeline流水線

    流水線既能作為任務(wù)的本身,也能作為jenkinsfile,使用流水線可以讓我們的任務(wù)從ui手動(dòng)操作,轉(zhuǎn)換為代碼化,像docker的dockerfile一樣,從shell命令到配置文件,更適合大型項(xiàng)目,可以讓團(tuán)隊(duì)其他開發(fā)者同事參與進(jìn)來,同時(shí)也可以編輯開發(fā)jenkinswebui不能完成的復(fù)雜的構(gòu)建邏輯,作

    2024年02月09日
    瀏覽(37)
  • jenkins Pipeline接入mysql

    jenkins Pipeline接入mysql

    jenkin pipeline進(jìn)化過程如下: Jenkins Pipeline 腳本優(yōu)化實(shí)踐:從繁瑣到簡潔 Jenkins Pipeline腳本優(yōu)化:為Kubernetes應(yīng)用部署增加狀態(tài)檢測 使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件。有一些需要?jiǎng)討B(tài)設(shè)置的配置不想在jenkins中配置,想將這些變量存儲(chǔ)在mysql 這種數(shù)據(jù)庫中,通過動(dòng)態(tài)修改

    2024年04月15日
    瀏覽(25)
  • Jenkins ——pipeline入門教程

    Jenkins ——pipeline入門教程

    一、什么是pipeline 什么是Pipeline?簡單來說,就是一套運(yùn)行于Jenkins上的工作流框架,將原本獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來,實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜發(fā)布流程(實(shí)用場景:將多個(gè)Jenkins構(gòu)建任務(wù)輕松集成)。 ??簡而言之,就是一套工作流框架,將原本獨(dú)

    2024年02月09日
    瀏覽(36)
  • jenkins_Pipeline使用測試

    jenkins_Pipeline使用測試

    安裝jenkins 安裝聲明式插件Pipeline:Declarative 創(chuàng)建pipeline流水線 樣例 1.1 agent(代理) 1.2 stages(階段) 包含一系列一個(gè)或多個(gè) stage 指令,建議 stages 至少包含一個(gè) stage 指令用于連續(xù)交付過程的每個(gè)離散部分,比如構(gòu)建,測試,和部署。 1.3 post 定義一個(gè)或多個(gè)steps,這些階段根據(jù)流水線或階段

    2024年04月11日
    瀏覽(18)
  • Jenkins-Pipeline基本使用

    使用Groovy語法 Pipeline 是Jenkins 2.X核心特性,幫助Jenkins實(shí)現(xiàn)從CI到CD與DevOps的轉(zhuǎn)變 Pipeline 簡而言之,就是一套運(yùn)行于Jenkins上的工作流框架,將原本獨(dú)立 運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來,實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜流 程編排與可視化 1、聲明式(僅在2.5版本后支持)

    2023年04月22日
    瀏覽(22)
  • Jenkins pipeline中的全局變量

    1.再environment使用key=value形式定義變量 2.從參數(shù)中獲取變量值

    2024年02月07日
    瀏覽(16)
  • jenkins-pipeline語法詳解

    pipeline支持兩種語法形式 1. 聲明式 1.1特點(diǎn): 最外層必須由pipline{ //do something }來進(jìn)行包裹 不需要分號(hào)作為分隔符,每個(gè)語句必須在一行內(nèi) 不能直接使用groovy語句(例如循環(huán)判斷等),需要被script {}包裹 1.2 語句示例 1.3 聲明式核心概念 pipeline 2.agent 3.stages 4.stage 5.steps 6.post 1

    2023年04月19日
    瀏覽(17)
  • jenkins pipeline使用Git Parameter

    在 Jenkins Pipeline 中使用 Git Parameter 可以方便地從 Git 倉庫中選擇分支或標(biāo)簽進(jìn)行構(gòu)建。Git Parameter 是 Jenkins 的插件之一,可以在 Jenkins 構(gòu)建參數(shù)中提供一個(gè) Git 版本選擇器。 要在 Jenkins Pipeline 中使用 Git Parameter,首先需要安裝 Git Parameter 插件。安裝完成后,可以在 Jenkins 中創(chuàng)建

    2024年02月16日
    瀏覽(21)
  • jenkins pipeline 實(shí)現(xiàn)釘釘審批

    jenkins pipeline 實(shí)現(xiàn)釘釘審批

    一、需求 Jenkins job 在構(gòu)建任務(wù)時(shí),推送一條審批消息。 點(diǎn)擊消息確認(rèn)與取消按鈕進(jìn)行審批。 根據(jù)審批結(jié)果觸發(fā)繼續(xù)構(gòu)建還是取消構(gòu)建。 二、流程圖 三、實(shí)現(xiàn)效果 任務(wù)開始: 確認(rèn)效果: 拒絕效果 任務(wù)狀態(tài)失敗與取消后點(diǎn)擊效果: 重復(fù)點(diǎn)擊效果: 四、pipeline腳本 腳本中使

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包