2017-09-28 2 views
1

젠킨스에서 선언적 파이프 라인을 사용하면 여러 버전의 도커 이미지에서 스테이지를 어떻게 실행합니까? 파이썬 2.7, 3.5 및 3.6에서 다음 jenkinsfile을 실행하고 싶습니다. 다음은 고정 표시기 컨테이너여러 도커 이미지에서 젠킨스 파이프 라인

pipeline { 
    agent { 
    docker { 
     image 'python:2.7.14' 
    } 
    } 

    stages { 
    stage('Build') { 
     steps { 
     sh 'pip install pipenv' 
     sh 'pipenv install --dev' 
     } 
    } 

    stage('Test') { 
     steps { 
     sh 'pipenv run pytest --junitxml=TestResults.xml' 
     } 
    } 
    } 

    post { 
    always { 
     junit 'TestResults.xml' 
    } 
    } 
} 

동일한 단계는 파이썬 3.5과 3.6을 통해 성공을 확인하는 코드의 최소한은 무엇인가에 파이썬 프로젝트를 구축하고 테스트하기위한 파이프 라인 파일은? 테스트가 실패하면 테스트가 실패한 버전이 분명하다는 희망이 있습니다.

또는 내가 선언 파이프 라인 용 불가능을 요구하고있어 (예. 스크립트 파이프 라인은 가장 우아하게이 문제를 해결 될지 될 수있다)을 비교

을,이 방법 Travis CI let's you specify runs across different python version입니다.

답변

5

나는 스크립트 파이프 라인에 의존하고

def pythons = ["2.7.14", "3.5.4", "3.6.2"] 

def steps = pythons.collectEntries { 
    ["python $it": job(it)] 
} 

parallel steps 

def job(version) { 
    return { 
     docker.image("python:${version}").inside { 
      checkout scm 
      sh 'pip install pipenv' 
      sh 'pipenv install --dev' 
      sh 'pipenv run pytest --junitxml=TestResults.xml' 
      junit 'TestResults.xml' 
     } 
    } 
} 

결과 파이프 라인은 우리로 각 작업을 깰 수있을 것 이상적으로

enter image description here

처럼 보이는 모든 단계를 결합했다 단계 (설정, 빌드, 테스트)가 있지만 UI는 currently doesn't support this입니다.

관련 문제