내가 만드는 샘플 jenkins 파이프라인,는 코드는 다음과 같습니다.
pipeline {
agent any
stages {
stage('test') {
steps {
sh 'echo hello'
}
}
stage('test1') {
steps {
sh 'echo $TEST'
}
}
stage('test3') {
if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
} else {
echo 'I execute elsewhere'
}
}
}
}
이 파이프라인에 실패하고 다음과 같은 오류 로그
Started by user admin
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 15: Not a valid stage section definition: "if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
} else {
echo 'I execute elsewhere'
}". Some extra configuration is required. @ line 15, column 9.
stage('test3') {
^
WorkflowScript: 15: Nothing to execute within stage "test3" @ line 15, column 9.
stage('test3') {
^
하지만 내가 다음 명령어를 실행합니다 예를에서 이러한 url,그것을 성공적으로 실행되고 인쇄 다른 부분입니다.
node {
stage('Example') {
if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
} else {
echo 'I execute elsewhere'
}
}
}
유일한 차이를 볼 수 있는 작업의 예에서 없 단계 하지만 제 경우에는 그것이있다.
무엇이 잘못 할 수 있습니다,여기에 누군가 제안하십시오?
첫 번째 시도를 사용하여 선언적인 파이프라인,그리고 두 번째 작은 스크립트를 사용하여 파이프라인. 로 묶어야 합 단계에서 단계를 선언할 수 있't을 사용하면
으로 최상위 단계에서 선언하는,그래서 당신은에 포장해야스크립트
단계입니다. 여기's 작동하는 선언적인 버전:
pipeline {
agent any
stages {
stage('test') {
steps {
sh 'echo hello'
}
}
stage('test1') {
steps {
sh 'echo $TEST'
}
}
stage('test3') {
steps {
script {
if (env.BRANCH_NAME == 'master') {
echo 'I only execute on the master branch'
} else {
echo 'I execute elsewhere'
}
}
}
}
}
}
를 단순화할 수 있습니다 이것과 잠재적으로 방지하는 경우 성명(을 지속적으로 개't 필요한 다른 사람)를 사용하여"면". 보"때 directive"에 https://jenkins.io/doc/book/pipeline/syntax/. 당신의 유효성을 검사할 수도 있습 jenkinsfiles 를 사용하 jenkins rest api 를 사용합니다. it's 니다. 와 재미를 선언하는 파이프라인에서 jenkins!
그것의 비트가 필요합 다시 정렬하지만,때
좋은 직업을 바꾸기 조건문이다. 여기's 를 들어 위의 기록을 사용하여 선언문입니다. 참고로test3
무대는 이제 두 개의 서로 다른 단계가 있습니다. 중 하나에서 실행되는 마스터는 지점과 하는 것에서 실행됩니다.
stage ('Test 3: Master') {
when { branch 'master' }
steps {
echo 'I only execute on the master branch.'
}
}
stage ('Test 3: Dev') {
when { not { branch 'master' } }
steps {
echo 'I execute on non-master branches.'
}
}
if ( params.build_deploy == '1' ) {
println "build_deploy 是 ${params.build_deploy}"
jobB = build job: 'k8s-core-user_deploy', propagate: false, wait: true, parameters: [
string(name:'environment', value: "${params.environment}"),
string(name:'branch_name', value: "${params.branch_name}"),
string(name:'service_name', value: "${params.service_name}"),
]
println jobB.getResult()
}