75 votes

Exécuter la commande bash sur le pipeline jenkins

À l'intérieur d'un script groovy (pour un jenkins pipeline): Comment puis-je exécuter un bash de commande au lieu d'un sh commande?

J'ai essayé ce qui suit:

Appel "#!/bin/bash" à l'intérieur de l' sh appel:

stage('Setting the variables values') {
    steps {
         sh '''
            #!/bin/bash
            echo "hello world"
         '''
    }
}

Remplacer l' sh appel avec un bash appel:

stage('Setting the variables values') {
    steps {
         bash '''
            #!/bin/bash
            echo "hello world"
         '''
    }
}

Infos Supplémentaires:

Ma commande est plus complexe qu'un echo hello world.

117voto

Jake Points 494

Le script Groovy que vous avez fourni met en forme la première ligne en tant que ligne vierge dans le script résultant. Le shebang, indiquant au script de s'exécuter avec / bin / bash au lieu de / bin / sh, doit être sur la première ligne du fichier ou il sera ignoré.

Donc, à la place, vous devez formater votre Groovy comme ceci:

 stage('Setting the variables values') {
    steps {
         bash '''#!/bin/bash
                 echo "hello world" 
         '''
    }
}
 

Et il s'exécutera avec / bin / bash.

16voto

Jacob Points 454

Selon ce document , vous devriez pouvoir le faire comme ceci:

 node {
    sh "#!/bin/bash \n" + 
       "echo \"Hello from \$SHELL\""
}
 

8voto

Santosh Kumar A Points 482

Je suis sûr que les réponses ci-dessus fonctionne parfaitement. Cependant, j'avais de la difficulté de l'ajout de guillemets doubles comme mon bash lignes, où la plus proche de 100. Donc, la façon suivante m'a aidé. (En bref, pas de guillemets autour de chaque ligne de la coquille)

Aussi, lorsque j'ai eu "bash "'#!/bin/bash" dans les étapes, j'ai eu l'erreur suivante java.lang.NoSuchMethodError: No such DSL method '**bash**' found among steps

pipeline {
    agent none

    stages {

        stage ('Hello') {
            agent any

            steps {
                echo 'Hello, '

                sh '''#!/bin/bash

                    echo "Hello from bash"
                    echo "Who I'm $SHELL"
                '''
            }
        }
    }
}

Le résultat de ce qui précède l'exécution est

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X