답변:
다음은 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 } ^
이 두 번째 예에서,이
Jenkinsfile
누락 포함하도록 업데이트되었습니다any
에agent
. 린 터는 이제 파이프 라인이 유효하다고보고합니다.젠킨스 파일
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...]