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:
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à?
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.
Vous pouvez écrire deux lignes dans votre build:
chmod 777 ./my_script.sh
./my_script.sh
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