gitlab-ci.yml la non-exécution d'un script shell
J'ai configuré gitlab-ci pour mon projet, et inséré à la suite yml script:
---
buildJob:
only:
- master
script:
- "sh /var/www/gitTestFolder/scripts/build.sh"
stage: build
tags:
- ipsenh
deployJob:
only:
- master
script:
- "sh /var/www/gitTestFolder/scripts/deploy.sh"
stage: deploy
tags:
- ipsenh
testJob:
only:
- master
script:
- "sh /var/www/gitTestFolder/scripts/test.sh"
stage: test
tags:
- ipsenh
stages:
- build
- test
- deploy
Ce script s'exécute dans mon gitlab serveur et affiche le terminal qui doit exécuter les scripts (/var/www..../script.sh)
.
Le résultat suivant est pour un de mes travaux:
gitlab-ci-multi-runner 0.6.2 (3227f0a)
Using Shell executor...
Running on ipsenh...
Cloning repository...
Cloning into 'builds/05d0538a/0/root/ipsenh'...
Checking out 4288f64a as master...
$ sh /var/www/gitTestFolder/scripts/deploy.sh
Build succeeded.
Le script cependant, n'est jamais exécutée. Si j'exécute ce script en local sur mon serveur, il crée un fichier avec un simple texte de sortie. Il n'a jamais crée le fichier par le biais de ce travail, cependant.
- Contenu du Script:
echo "job executed" >> job.log
Je n'ai le mal de l'installation? Évidemment, ce n'est pas la syntaxe et les autorisations sont d'accord, sinon je serais une erreur.
Ce que cela pourrait être? Thx!
Pouvez-vous montrer le contenu de ce script?
Le script crée
C'était donc ça le problème? Vous n'étaient pas à la recherche pour le fichier dans le bon répertoire?
Le script crée
job.log
dans le répertoire courant. Si vous cd
d'abord, puis votre répertoire courant est partout où vous cd
ed. Si vous n'en avez pas, il est partout où vous êtes par défaut. Donc, vous êtes probablement juste de ne pas chercher le fichier dans le bon endroit. Utiliser un chemin d'accès complet du fichier de sortie.C'était donc ça le problème? Vous n'étaient pas à la recherche pour le fichier dans le bon répertoire?
OriginalL'auteur Randy | 2015-11-19
Vous devez vous connecter pour publier un commentaire.
Le répertoire courant d'un script est le répertoire de la coquille est lorsque le script est exécuté, et non pas le répertoire du script vie.
Donc
echo "job executed" >> job.log
permettra de créer unjob.log
fichier dans le répertoire courant de la session shell et pas dans le répertoire avec le fichier de script.Si vous souhaitez utiliser les chemins pour dire que le script du répertoire du fichier que vous voulez regarder cette réponse et Bash FAQ 028.
OriginalL'auteur Etan Reisner