Jenkinsfiles를 온라인에서 확인할 수있는 도구가 있습니까?


13

현재 Jenkinsfile을 편집하고 Jenkins가 문제를보고하지 않는 한 실행되도록하십시오. 이 방법은 시간이 많이 걸립니다. Jenkinsfile을 커밋하기 전에 구문의 유효성을 검사하는 것을 선호합니다. 이 문제를 해결하는 도구가 있습니까?

에서 gitlab 는 URI, 즉이 /ci/lint가능하는 gitlab 파일을 제출 체크 버튼을 클릭 한 후 UI 구문이 올바른지 여부 나타냅니다 할 수 있습니다.

답변:


13

다음은 Jenkins 파이프 라인 린터 및 해당 명령에 대한 설명서입니다. 커밋 하기 전에 유효성을 검사해야 합니까? 그렇지 않은 경우 파이프 라인을 실행하기 전에 linting 명령을 실행하는 것이 쉽지만 통과하지 못하면 실패합니다.

에서 명령 줄 파이프 라인 린터 :

Jenkins는 실제로 실행하기 전에 명령 줄에서 선언 파이프 라인의 유효성을 검사하거나 " lint " 할 수 있습니다 . 이는 Jenkins CLI 명령을 사용하거나 적절한 매개 변수를 사용하여 HTTP POST 요청을 수행하여 수행 할 수 있습니다. 린터를 실행하기 위해 SSH 인터페이스 를 사용하는 것이 좋습니다 . 안전한 명령 줄 액세스를 위해 Jenkins를 올바르게 구성하는 방법에 대한 자세한 내용은 Jenkins CLI 설명서 를 참조하십시오.

SSH를 통한 CLI를 통한 Linting

# ssh (Jenkins CLI)
# JENKINS_SSHD_PORT=[sshd port on master]
# JENKINS_HOSTNAME=[Jenkins master hostname]
ssh -p $JENKINS_SSHD_PORT $JENKINS_HOSTNAME declarative-linter < Jenkinsfile

를 사용하여 HTTP POST를 통한 Linting curl

# curl (REST API)
# Assuming "anonymous read access" has been enabled on your Jenkins instance.
# JENKINS_URL=[root URL of Jenkins master]
# JENKINS_CRUMB is needed if your Jenkins master has CRSF protection enabled as it should
JENKINS_CRUMB=`curl "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)"`
curl -X POST -H $JENKINS_CRUMB -F "jenkinsfile=<Jenkinsfile" $JENKINS_URL/pipeline-model-converter/validate

다음은 작동중인 파이프 라인 린터의 두 가지 예입니다. 이 첫 번째 예제는 선언의 Jenkinsfile일부가 누락 된 invalid 전달 된 linter 출력을 보여줍니다 agent.

젠킨스 파일

pipeline {
  agent
  stages {
    stage ('Initialize') {
      steps {
        echo 'Placeholder.'
      }
    }
  }
}

유효하지 않은 Jenkinsfile에 대한 린터 출력

# pass a Jenkinsfile that does not contain an "agent" section
ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Errors encountered validating Jenkinsfile:
WorkflowScript: 2: Not a valid section definition: "agent". Some extra configuration is required. @ line 2, column 3.
     agent
     ^

WorkflowScript: 1: Missing required section "agent" @ line 1, column 1.
   pipeline &#125;
   ^

이 두 번째 예에서,이 Jenkinsfile누락 포함하도록 업데이트되었습니다 anyagent. 린 터는 이제 파이프 라인이 유효하다고보고합니다.

젠킨스 파일

pipeline {
  agent any
  stages {
    stage ('Initialize') {
      steps {
        echo 'Placeholder.'
      }
    }
  }
}

유효한 Jenkinsfile에 대한 린터 출력

ssh -p 8675 localhost declarative-linter < ./Jenkinsfile
Jenkinsfile successfully validated.

클라이언트를 로컬로 사용하는 방법을 설명해 주시겠습니까? java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]
030


답변을 게시 해 주셔서 감사합니다. 온라인 도구도 있습니까? UI를 탐색하고 jenkinsfile을 게시하고 구문 문제가 있는지 확인할 수 있다면 좋을 것입니다. 질문을 업데이트했습니다.
030

@ 030 온라인 linter 도구가 의심 스럽지만 재미있는 프로젝트처럼 들립니다. linter를 로컬로 사용하려면 자격 증명을 사용하여 Jenkins 서버에 로그인 한 다음 Jenkins에 "보내기"해야합니다. jenkinsfile. pierre-beitz.eu/2017/01/17/…
PrestonM

해당 링크의 일부 스 니펫을이 답변에 추가 할 수 있습니까? 링크가 더 이상 사용되지 않으면 정보가 사라집니다.
030
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.