Có công cụ nào giúp xác thực Jenkinsfiles trực tuyến không?


13

Hiện tại tôi đang chỉnh sửa một Jenkinsfile và sau đó để nó chạy trừ khi Jenkins báo cáo vấn đề. Cách tiếp cận này tốn rất nhiều thời gian. Tôi thích xác nhận cú pháp trước khi cam kết Jenkinsfile. Có một công cụ giải quyết vấn đề này?

Trong gitlab có một URI, tức là /ci/lintcho phép gửi tệp gitlab, nhấp vào nút kiểm tra và sau đó UI sẽ cho biết cú pháp có đúng hay không.

Câu trả lời:


13

Dưới đây là một số tài liệu về kẻ nói dối đường ống Jenkins và các lệnh của nó. Bạn có cần xác nhận trước khi cam kết không? Nếu không, sẽ thật sự tầm thường khi chạy lệnh linting trước khi đường ống của bạn chạy, và đơn giản là thất bại nếu nó không vượt qua.

Từ Bộ chỉ huy đường ống dòng lệnh :

Jenkins có thể xác nhận, hoặc " lint ", Đường ống khai báo từ dòng lệnh trước khi thực sự chạy nó. Điều này có thể được thực hiện bằng cách sử dụng lệnh Jenkins CLI hoặc bằng cách thực hiện yêu cầu POST HTTP với các tham số thích hợp. Chúng tôi khuyên bạn nên sử dụng giao diện SSH để chạy kẻ nói dối. Xem tài liệu CLI của Jenkins để biết chi tiết về cách định cấu hình chính xác Jenkins để truy cập dòng lệnh an toàn.

Linting thông qua CLI với SSH

# 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

Linting qua HTTP POST bằng cách sử dụng 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

Ví dụ

Dưới đây là hai ví dụ về Pipeline Linter đang hoạt động. Ví dụ đầu tiên này cho thấy đầu ra của kẻ nói dối khi nó được thông qua không hợp lệ Jenkinsfile, một phần bị thiếu trong phần agentkhai báo.

Jenkinsfile

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

Đầu ra Linter cho Jenkinsfile không hợp lệ

# 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;
   ^

Trong ví dụ thứ hai này, cái Jenkinsfileđã được cập nhật để bao gồm cái còn thiếu anytrên agent. Người nói dối bây giờ báo cáo rằng Đường ống là hợp lệ.

Jenkinsfile

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

Đầu ra Linter cho Jenkinsfile hợp lệ

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

Bạn có thể giải thích làm thế nào để sử dụng máy khách tại địa phương? java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]
030


Cảm ơn bạn đã gửi câu trả lời. Có một công cụ trực tuyến là tốt? Sẽ thật tuyệt nếu người ta có thể điều hướng đến UI, đăng jenkinsfile và kiểm tra xem có vấn đề cú pháp nào không. Tôi đã cập nhật câu hỏi.
030


Bạn có thể thêm một số đoạn từ liên kết đó vào câu trả lời này. Nếu liên kết không được chấp nhận, thông tin sẽ bị mất.
030
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.