क्या कोई ऐसा उपकरण है जो जेनकिंसफाइल्स को ऑनलाइन मान्य करना संभव बनाता है?


13

फिलहाल मैं जेनकिंसफाइल का संपादन कर रहा हूं और तब तक इसे चलने दूंगा जब तक कि जेनकिन्स किसी मुद्दे की रिपोर्ट नहीं करता। इस दृष्टिकोण में बहुत समय लगता है। मैं जेनकिन्सफाइल करने से पहले सिंटैक्स को मान्य करना पसंद करता हूं। क्या कोई ऐसा उपकरण है जो इस समस्या को हल करता है?

में gitlab यूआरआई, यानी वहाँ है /ci/lintयह संभव, एक gitlab फ़ाइल सबमिट की जांच बटन पर क्लिक करें और फिर यूआई की जानकारी देगा कि वाक्य रचना सही है या नहीं करने के लिए बनाता है।

जवाबों:


13

जेनकिन्स पाइपलाइन लाइनर और इसके आदेशों पर कुछ दस्तावेज यहां दिए गए हैं। क्या आपको एक प्रतिबद्ध होने से पहले मान्य करने की आवश्यकता है ? यदि नहीं, तो लाइनिंग कमांड को अपनी पाइपलाइन चलाने से पहले चलाना वास्तव में मामूली होगा, और यदि यह पास नहीं होता है तो बस विफल हो जाता है।

से कमांड लाइन पाइप लाइन Linter :

जेनकिन्स वास्तव में इसे चलाने से पहले कमांड लाइन से डिक्लेरेटिव पाइपलाइन को " लिंट " कर सकता है। यह जेनकिन्स सीएलआई कमांड का उपयोग करके या उचित मापदंडों के साथ HTTP POST अनुरोध करके किया जा सकता है। हमने लाइनर को चलाने के लिए SSH इंटरफ़ेस का उपयोग करने की सिफारिश की है । सुरक्षित कमांड-लाइन एक्सेस के लिए जेनकिन्स को ठीक से कॉन्फ़िगर करने के तरीके के विवरण के लिए जेनकिन्स सीएलआई प्रलेखन देखें ।

SSH के साथ CLI के माध्यम से लाइनिंग

# 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 का उपयोग करके लाइनिंग 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, जो कि agentघोषणा का एक हिस्सा गायब है ।

Jenkinsfile

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

अमान्य जेनकिंसफाइल के लिए लाइनर आउटपुट

# 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लापता शामिल करने के लिए अद्यतन किया गया है anyपर agent। लाइनर अब रिपोर्ट करता है कि पाइपलाइन वैध है।

Jenkinsfile

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

मान्य जेनकिंसफाइल के लिए लाइनर आउटपुट

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 पोस्ट कर सकता है और जांच सकता है कि क्या सिंटैक्स समस्याएं हैं। मैंने सवाल अपडेट किया है।
०३० 0

@ 030 मुझे संदेह है कि एक ऑनलाइन लिंटर टूल है, लेकिन यह ऑन करने के लिए एक मजेदार प्रोजेक्ट की तरह लगता है :) लिंटर को स्थानीय रूप से उपयोग करने के लिए, आपको अपने क्रेडेंशियल्स के साथ अपने जेनकिंस सर्वर पर लॉगिन करने की आवश्यकता है, फिर "जेनकिन्स को अपने लिंट के लिए" पूछें jenkinsfile। pierre-beitz.eu/2017/01/17/…
PrestonM

क्या आप इस उत्तर से कुछ स्निपेट जोड़ सकते हैं। यदि लिंक को हटा दिया जाता है, तो जानकारी चली जाएगी।
030
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.