web-dev-qa-db-fra.com

Comment puis-je exécuter un script shell dans Jenkinsfile?

Je conserve un fichier de script shell nommé urltest.sh dans /var/lib/jenkins et en exécutant le fichier à partir de jenkins build.

Lorsque j'exécute la construction, cela échoue.

The Environment Variables are - 
HOME -          /var/lib/jenkins ;
JENKINS_HOME -  /var/lib/jenkins

La sortie de la console se présente comme suit:

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/AutoScript
[AutoScript] $ /bin/sh -xe /tmp/hudson2777728063740604479.sh
+ sh urltest.sh
sh: 0: Can't open urltest.sh
Build step 'Execute Shell' marked build as failure
Finished: FAILURE

Je ne comprends pas où je devrais conserver le fichier de script shell pour qu'il soit exécuté.

24
Kworks

Si vous voyez votre message d'erreur, il est écrit

Création d'un espace de travail/var/lib/jenkins/workspace/AutoScript

et selon vos commentaires, vous avez mis urltest.sh dans

/ var/lib/jenkins

Par conséquent, Jenkins n'est pas en mesure de trouver le fichier. Dans votre étape de construction faites cette chose, cela fonctionnera

cd             # which will point to /var/lib/jenkins
./urltest.sh   # it will run your script

Si cela échoue toujours, essayez de chown le fichier car l'utilisateur jenkin n'a peut-être pas l'autorisation de fichier, mais je pense que si vous faites l'étape précédente, vous pourrez l'exécuter.

19
Avinash Agrawal

En fonction du nombre de vues de cette question, il semble que de nombreuses personnes visitent cette page pour savoir comment configurer un travail qui exécute un script Shell.

Voici les étapes à suivre pour exécuter un script Shell dans Jenkins:

  • Dans la page principale de Jenkins, sélectionnez Nouvel élément .
  • Entrez un nom d'élément tel que "mon travail de script Shell" et choisissez Projet Freestyle . Appuyez sur [~ # ~] ok [~ # ~] .
  • Sur la page de configuration, dans le bloc Générer , cliquez sur Ajouter l'étape de construction et sélectionnez Exécuter Shell .
  • Dans la zone de texte, vous pouvez coller un script ou indiquer comment exécuter un script existant. Donc, vous pouvez soit dire:

    #!/bin/bash
    
    echo "hello, today is $(date)" > /tmp/jenkins_test
    

    ou juste

    /path/to/your/script.sh
    
  • Cliquez sur Enregistrer .

Maintenant, le travail nouvellement créé devrait apparaître dans la page principale de Jenkins, avec les autres. Ouvrez-le et sélectionnez Construire maintenant pour voir si cela fonctionne. Une fois qu'il a terminé, sélectionnez cette construction spécifique dans l'historique de génération et lisez la sortie de la console pour voir si tout s'est déroulé comme vous le souhaitez.

Vous pouvez obtenir plus de détails dans le document Créer un travail de script Jenkins Shell dans GitHub.

36
fedorqui

Il y a le Managed Script Plugin qui fournit un moyen simple de gérer les scripts utilisateur. Il ajoute également une action d'étape de construction qui vous permet de sélectionner le script utilisateur à exécuter.

6
Mihai Rotaru

Les réponses précédentes sont correctes, mais voici une autre façon de procéder et quelques conseils:

Option n ° 1 Allez à votre travail Jenkins et recherchez "add build step", puis copiez et collez votre script ici.

Option n ° 2 Allez à Jenkins et répétez l'opération "Ajouter une étape de construction", mais cette fois, indiquez le chemin complet de votre script dans l'exemple suivant:. /usr/somewhere/helloWorld.sh

enter image description hereenter image description here

choses à surveiller/conseils:

  • Variables d'environnement, si votre travail s'exécute en même temps, vous devez vous préoccuper des problèmes de simultanéité. Un travail peut définir la valeur des variables d’environnement et le suivant peut utiliser la valeur ou prendre certaines mesures en conséquence.
  • Assurez-vous que tous les chemins sont pleinement qualifiés
  • Pensez à vous connecter/var/log ou quelque part pour avoir quelque chose à voir sur le serveur (facultatif)
  • le problème d'espace et d'autorisations, le manque d'espace et les problèmes d'autorisation sont très courants dans l'environnement Linux
  • Alerte et assurez-vous que votre script/travail échoue avec les travaux jenkin lorsque votre script échoue
4
grepit