program story

Jenkins Pipeline sh 표시 이름 / 라벨

inputbox 2020. 12. 13. 09:23
반응형

Jenkins Pipeline sh 표시 이름 / 라벨


Jenkins 2 Pipeline 플러그인에는 로깅 출력을 포함하여 파이프 라인 단계 및 단계 상태에 대한 빠른 개요를 제공하는 유용한 기능이 있습니다.

그러나 "Shell 스크립트"(sh) 단계를 사용하는 경우 해당 스크립트에 유용한 이름으로 레이블을 지정하는 방법이없는 것 같습니다. 따라서 디스플레이에 "Shell Script"의 긴 목록 만 표시됩니다 ( 아래 이미지).

유용한 이름을 지정하려면 어떻게해야합니까, 아니면 같은 효과를 내기 위해 다른 단계를 어떻게 사용할 수 있습니까?

여기에 이미지 설명 입력


2019 년 2 월 업데이트 :

아래 gertvdijk의 답변 에 따르면 v2.28 부터 sh 단계에 선택적 레이블할당 할 수 있으며 아직 업그레이드 할 수없는 사용자를위한 해결 방법도 있습니다. 자세한 내용과 의견은 그의 답변확인하십시오 !


이전 버전 (마우스 오버하여 확인) :

내가 아는 한, 그것은 현재 불가능합니다. Jenkins 추적기에는 상황과 유사한 이름 또는 별칭 셸 스크립트 단계 (sh) 문제가 있습니다.

sh단계는 파이프 라인에 "셸 스크립트"단계를 추가합니다. 그러나 다양한 플러그인 (예 : Docker)의 단계를 포함하여 여러 단계가있을 수 있으므로 단계를 구분하기가 어렵습니다. sh에 선택적 매개 변수를 추가하여 파이프 라인 단계에 나타날 이름 또는 별칭을 지정해야합니다. 예를 들어 다음은 파이프 라인보기에서 "셸 스크립트 : npm"으로 표시되는 npm에 대한 단계 일 수 있습니다.

sh cmd:"npm install", name: "npm"
그러나 최근에 수정되었으며 pipeline-stage-step-plugin (변경 로그 참조)의 v2.2에 포함 된 것으로 보이는 레이블이 지정된 블록으로 작동 하는 이전 Allow 스테이지 의 복제로 닫혔습니다 . 이제 스테이지가 중첩 될 수 있고 뷰 테이블에 표시 될 것 같지만 찾고있는 것이 아닌 것 같습니다.


"Pipeline Nodes and Processes Plugin" 버전 2.28+는 JENKINS-55410 과 함께 단계에 대한 label옵션을 얻었습니다 .sh

라벨 (선택 사항)

단계 유형 대신 단계에 대한 파이프 라인 단계보기 및 블루 오션 세부 사항에 표시 될 레이블입니다. 따라서보기는 기술적 인 것이 아니라 더 의미 있고 도메인에 따라 다릅니다.

  • 유형 : 문자열

예 :

sh script: "echo foo", label: "my step"

아직 업그레이드 할 수없는 경우 다른 옵션은 Labeled Pipeline Steps 플러그인 을 사용하는 것 입니다.


sh "echo foo", label: "my step"

나를 위해 작동하지 않습니다.

그것은 musst be :

sh script: "echo foo", label: "my step"

https://stackoverflow.com/a/54787322/6847446


글쎄요, 절박한시기에는 절박한 조치가 필요합니다. Blue Ocean을 사용할 수 있다면 단일 실행 라인으로 병렬 스텝을 사용할 수 있습니다.

        parallel(
            "This is my step name" : {
                sh 'env'
            }
        )

이것을 시도하십시오, 좋은 해결 방법

import org.jenkinsci.plugins.workflow.cps.CpsThread
import org.jenkinsci.plugins.workflow.actions.LabelAction


    def test() {
    def xyz = "Prints PWD"
    try {
        sh script: 'pwd'
    }
    finally {
        CpsThread.current().head.get().addAction(new LabelAction("Shell script ${xyz} "))
    }
}

나는 또한 같은 것을 시도했지만 다른 맥락에서 우리 팀은 로그 UI를 통해 여러 개의 sh 로그 창을 원하지 않기 때문에 한 줄에 여러 UNIX 명령을 사용하려고 시도 jenkinsPipeline.sh "echo \"PATH: $PATH\";java -version;echo PROJ DIR = $projectDirectory;env > env.txt;cat env.txt;ls && cd $projectDirectory && gradle --refresh-dependencies clean assemble"했습니다. 예를 들어 Jenkins 작업 내에서 Jenkins 파이프 라인 스크립트에서 작동했습니다. . 그러나 파이프 라인 및 동일한 전략을 확장하기 위해 공유 라이브러리를 사용하면 작동하지 않거나 UI의 sh 로그인에 대해 평소와 같이 여러 창을 생성합니다.


완벽하지는 않지만 일반적으로 다음 bat 또는 sh 단계가 수행하려는 작업을 설명하는 에코 단계를 추가하는 것이 적절하다고 생각합니다. 한 번도 본 적이없는 사람은 빨리 알아낼 수 있어야합니다.

echo "Testing with Ping"
bat "ping www.stackoverflow.com"
echo "Getting IPs"
bat "nslookup www.stackoverflow.com"

Sandy의 훌륭한 답변에 따라 try / finally 블록에서 sh 단계를 캡슐화하는 작은 스크립트 래퍼를 만들었습니다.

기본 사용법 :

wrapper.script script: 'echo the invisible script', returnStdout: true, stepName: "description #1"

일반 텍스트 대신 "설명 # 1"이 표시됩니다.

전체 소스 코드 및 설치 지침은 여기 https://github.com/ael-computas/jenkins-script-wrapper

젠킨스 서버에 라이브러리로 쉽게 설치할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/39414921/jenkins-pipeline-sh-display-name-label

반응형