2017-12-20 31 views
1

내 Jenkins 파이프 라인의 빌드 번호를 작업에 어떻게 전달할 수 있습니까? 나는 일자리를 빌드 파이프 라인을 가지고 다음과 같은 순서 -Jenkins의 액세스 환경 변수 작업 내 파이프 라인

A -> B -> C -> D

내가 작업 C로 파이프 라인 자체의 빌드 번호를 통과해야합니다. 이 작업은 이전 단계에서 쉘 스크립트에서 전달 된 매개 변수 빌드 번호를 사용합니다.

내 파이프 라인에는 BUILD_NUMBER 환경 변수가 있습니다.

작업 C에서 파이프 라인의 환경 변수에 액세스하는 방법이 있습니까? 내가

1을 시도 무엇

. withEnv을 사용하여 환경 변수를 무시하지만 작동하지 않습니다. 나는 this-

withEnv(['SERVER_BUILD_NUMBER=$env.BUILD_NUMBER']) { 
    build job: 'app-server-perf', parameters: [string(name: 'appServer_commit_id', value: appServer_commit_id)] 
    } 

을하고 그리고

${SERVER_BUILD_NUMBER} 

follows-로

2 c를 작업의 내 전 단계의 쉘 스크립트에서 접근하고있다. "StringParameter"param2를 작업 c에 전달합니다. 이제이 작업은 문자열 값 param1과 파이프 라인 BUILD_NUMBER param2의 문자열 값이라는 두 개의 매개 변수를 수신합니다. 나는 때문에 내가 파이프 라인의 옵션 The project is parameterized을 확인했다

java.lang.IllegalArgumentException: Could not instantiate {job=Shared Types, parameters=[[@string(name=sharedTypes_commit_id,value=develop2.2)], [@string(name=serverPerformance_build_number,value=494)]]} for BuildTriggerStep(job: String, parameters?: ParameterValue{BooleanParameterValue(name: String, value: boolean) | CredentialsParameterValue(name: String, value: String, description: String) | CvsTagsParamValue(name: String, tagName: String) | FileParameterValue(name: String, file: FileItem{}) | GitParameterValue(name: String, value: String) | JiraIssueParameterValue(name: String, value: String) | JiraVersionParameterValue(name: String, version: String) | LabelParameterValue(name: String, label: String, allNodesMatchingLabel: boolean, nodeEligibility: NodeEligibility{AllNodeEligibility() | IgnoreOfflineNodeEligibility() | IgnoreTempOfflineNodeEligibility()}) | ListSubversionTagsParameterValue(name: String, tagsDir: String, tag: String) | NodeParameterValue(name: String, labels: String[], nodeEligibility: NodeEligibility{AllNodeEligibility() | IgnoreOfflineNodeEligibility() | IgnoreTempOfflineNodeEligibility()}) | PromotedBuildParameterValue(name: String, runId: String, description: String) | RunParameterValue(name: String, runId: String, description: String) | StringParameterValue(name: String, value: String) | TextParameterValue(name: String, value: String) | com.michelin.cio.hudson.plugins.passwordparam.PasswordParameterValue~PasswordParameterValue(name: String, value: String, description: String) | hudson.model.PasswordParameterValue~PasswordParameterValue(name: String, value: String, description: String)}[], propagate?: boolean, quietPeriod?: int, wait?: boolean): java.lang.ClassCastException: class org.jenkinsci.plugins.workflow.support.steps.build.BuildTriggerStep.setParameters() expects class hudson.model.ParameterValue but received class java.util.ArrayList 
    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264) 
    at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:177) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:124) 
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:117) 
    at groovy.lang.GroovyObject$invokeMethod$6.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155) 
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) 

변수는 인자 전달하는 잘못된 방법에 내가 믿는 다음과 같은 오류를 얻고있다. 매개 변수 전달 구문은 다음과 같습니다.

build job: 'server', parameters: [[string(name: 'param1', value: param1)], [string(name: 'param2', value: '${env.BUILD_NUMBER}')]] 
+0

AD1 그냥 매개 변수를 전달하려고 올바르게 여기

는 두 개의 문자열 PARAMS 호출과 작업의 예입니다. 그것의 죽은 도로. Ad2. 빌드 작업 ivocation + 대상 작업 구성을 제공해 주실 수 있습니까? 나는 그 일이 잘못 호출 된 것 같아 – tworec

+0

[질문] (https://stackoverflow.com/questions/45324806/how-to-set-a-variable-inside-jenkins-shell-command)에 대한 답변을 확인하십시오. 그들은 너를 도울지도 모른다. –

답변

0

Ad1. 그것은 막 다른 길이다

Ad2. 이것은 당신이하고 싶은 일입니다. https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel

참조이 SO 질문 : How can I trigger another job from a jenkins pipeline (jenkinsfile) with GitHub Org Plugin?

+0

나는 Jenkins와 그 용어에 익숙하지 않다. 작업 c를 빌드 할 때 파이프 라인 스크립트에 BUILD_NUMBER 환경 변수를 전달해야합니다. 그것은 약간의 명확성을주고 있습니까? – mlsngh

+0

일부 코드 샘플을 제공하십시오 – tworec

+0

업데이트 된 게시물을 참조하십시오. – mlsngh