web-dev-qa-db-fra.com

Comment puis-je demander à Jenkins d'exécuter un script qu'il a extrait de Git?

J'utilise Jenkins pour déclencher et gérer une série de travaux d'importation. Je veux mettre mon script d'importation dans Github, et lorsque Jenkins construit le travail, il doit (a) extraire ce script contrôlé par version de Github et (b) exécuter le script.

Le problème que je rencontre est que je ne sais pas comment référencer le nom du script à exécuter dans le travail. Je suppose que le code source est tiré dans le répertoire de l'espace de travail. Cette hypothèse est-elle correcte? (Si seulement il y avait de la documentation!)

Voici ce que j'ai fait jusqu'à présent:

  1. J'ai installé Jenkins (évidemment) sur mon serveur Windows (non, je n'avais pas le choix)
  2. Créé un référentiel sur mon compte github et y mettre mon code
    • C'est public sur https://github.com/mcholl/SARS-Import/
    • Vous verrez que j'ai deux scripts, roottest.py et omniture-video\test.py. Le code est sous brevet par Apple, j'en suis sûr :)
    • L'idée est que je voudrais exécuter roottest.py
  3. Installation du plugin Github
  4. A créé un travail comme suit:
  5. Exécuter manuellement le travail

Ce que j'obtiens, cependant, est un message d'erreur indiquant que le fichier ne peut pas être localisé. C'est étrange, car je suppose que le flux de travail serait de "tirer une copie locale de la source vers le répertoire ... (Job)/workspace /, puis d'exécuter la commande batch dans le contexte du répertoire de l'espace de travail.

Voici la sortie console complète:

Démarré par l'utilisateur anonyme Construction dans l'espace de travail C:\Program Files (x86)\Jenkins\jobs\Test de l'intégration Github\workspace [espace de travail] $ cmd/c appel C:\Windows\TEMP\hudson1966342425043540895.bat

C:\Program Files (x86)\Jenkins\jobs\Testing Github Integration\workspace> python roottest.py python: impossible d'ouvrir le fichier 'roottest.py': [Errno 2] Aucun fichier ou répertoire de ce type

C:\Program Files (x86)\Jenkins\jobs\Testing Github Integration\workspace> exit 2 Étape de build 'Execute Windows batch command' marquée build comme échec Terminé: ÉCHEC

Évidemment, je m'attendais à voir les résultats de ma déclaration d'impression dans la console.

Qu'est-ce que j'ai raté? Et pourquoi mon script n'est-il pas déjà là?

12
Affable Geek

Pour ma build (sur un hôte Linux), je fais quelque chose comme ça (comme une étape de build dans Jenkins) pour exécuter un script de build à partir de l'espace de travail fraîchement extrait:

Exécuter la commande Shell:

 sh -x $WORKSPACE/build/myproject.build

Je suppose que cela fonctionnerait de la même manière sous Windows, sauf bien sûr que vous utiliseriez\plutôt que/et que vous utilisez python plutôt que sh pour exécuter votre script.

5
eric.green

Vous pouvez écrire deux lignes dans votre build:

chmod 777 ./my_script.sh
./my_script.sh
2
Andrs Zam

Vous pouvez stocker un script dans Git, par exemple test.sh:

#!/bin/bash
_test_func(){ 
 echo 'test'
}

Ensuite, dans l'entrée "Execute Shell", placez l'importation de ce script et appelez "_test_func":

source test.sh
_test_func

Résultat:

 + source test.sh
 + _test_func
 test
0
Raf