내 소프트웨어에는 컴파일, 유닛 테스트, 통합 테스트, 음파 분석, 전쟁 파일 생성과 같은 여러 단계로 실행되는 모듈이 현재 6 개 있습니다. 성능을 향상시키고 동시 스레드를 제한하기 위해 클래스의 인스턴스에 해당 단계를 넣습니다. 단계는 종속성에 대한 최소한의 정보를 보유하고 완료된 경우 수행합니다.Jenkinsfile에서 실행 중에 스테이지의 이름을 동적으로 바꿀 수 있습니까?
정확한 스레드 수를 실행하려면 모든 작업이 완료 될 때까지 새로운 작업을 수행하는 작업자를 생성해야했습니다.
def parallelWorkers = [:]
Data.maxConcurrentBuilds.times {
parallelWorkers["Worker#${it}"] = {
Step work = getWork()
if (work == null) {
echo "Could not get initial work"
return null
}
waitUntil {
stage(work.name) {
work.run()
}
work = getWork()
return work == null
}
echo "No remaining work. Shutting down worker ${it}"
}
}
try {
stage('Parallel workers for module building') {
gitlabCommitStatus('modules') {
parallel parallelWorkers
}
}
} catch (e) {
throw e
}
그러나 문제는 BlueOcean UI에 해당 단계가 표시되지 않는다는 것입니다.
동적으로 이름을 바꾸는 방법이 있는지 궁금합니다. 내가 읽은 BlueOcean은 그러한 중첩을 지원하지 않기 때문에 내 생각은 실행중인 작업자의 무대 이름을 변경하는 것입니다.
내가 이름의 목록을 만들었습니다. 그게 작동하는지 확인하겠습니다. 하지만 우리 Jenkins 대기열은 조금 붐비고 ... 몇 분 정도 기다려야합니다. 나는 이것이 정말로 잘되기를 바란다. – Ctwx
귀하의 증명 결과를 알려주십시오;) –
작동하지 않습니다. 이것은 내 접근 방식입니다 : https://pastebin.com/SFFqpga6 – Ctwx