Esiste uno strumento che consente di convalidare i file Jenkins online?


13

Al momento sto modificando un file Jenkins e poi lo lascio funzionare a meno che Jenkins non abbia segnalato un problema. Questo approccio costa molto tempo. Preferisco convalidare la sintassi prima di eseguire il commit del file Jenkins. Esiste uno strumento che risolve questo problema?

In gitlab esiste un URI, ovvero /ci/lintche consente di inviare un file gitlab, fare clic sul pulsante di controllo e quindi l'interfaccia utente indicherà se la sintassi è corretta o meno.

Risposte:


13

Ecco alcuni documenti sulla linter della pipeline Jenkins e sui suoi comandi. Devi convalidare prima di un commit? Altrimenti, sarebbe davvero banale eseguire il comando linting prima dell'esecuzione della pipeline, e semplicemente fallire se non passa.

Dalla linter della pipeline della riga di comando :

Jenkins può convalidare, o " sfilacciare ", una pipeline dichiarativa dalla riga di comando prima di eseguirla effettivamente. Questo può essere fatto usando un comando CLI Jenkins o facendo una richiesta POST HTTP con parametri appropriati. Si consiglia di utilizzare l' interfaccia SSH per eseguire la linter. Consultare la documentazione della CLI di Jenkins per i dettagli su come configurare correttamente Jenkins per un accesso sicuro alla riga di comando.

Linting tramite l'interfaccia della riga di comando con 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 tramite HTTP POST utilizzando 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

Esempi

Di seguito sono riportati due esempi di Pipeline Linter in azione. Questo primo esempio mostra l'output del linter quando viene passato un invalido Jenkinsfile, a cui manca una parte della agentdichiarazione.

Jenkinsfile

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

Uscita linter per file Jenkins non valido

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

In questo secondo esempio, il Jenkinsfileè stato aggiornato per includere il mancante anysu agent. La linter ora segnala che la pipeline è valida.

Jenkinsfile

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

Uscita linter per file Jenkins valido

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

Potresti spiegare come usare il client localmente? java -jar jenkins-cli.jar [-s JENKINS_URL] [global options...] command [command options...] [arguments...]
030


Grazie per aver inviato una risposta. Esiste anche uno strumento online? Sarebbe bello se si potesse passare a un'interfaccia utente, pubblicare un file jenkins e verificare se ci sono problemi di sintassi. Ho aggiornato la domanda.
030

@ 030 Dubito che ci sia uno strumento di linter online, ma sembra un progetto divertente da intraprendere :) Per usare la linter localmente, devi accedere al tuo server Jenkins con le tue credenziali, quindi "chiedi" a Jenkins di sfilare il tuo jenkinsfile. pierre-beitz.eu/2017/01/17/…
PrestonM

Potresti aggiungere alcuni snippet da quel link a questa risposta. Se il collegamento è obsoleto, le informazioni sarebbero sparite.
030
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.