J'utilise Mac. J'ai iOS and Android projets sur les scripts FastLane réactifs et créés pour chaque projet. Maintenant, je veux automatiser ses constructions avec Jenkins en pipeline, donc j'ai un fichier Jenkins. Dans l'espace de travail de Jenkins I avoir à aller au dossier ios
et exécutez le script de fixation.
Mais le problème est que Jenkins ne change pas le répertoire avec la commande sh 'cd ios'
. Je peux le voir parce que j'exécute une commande pwd
avant et après la commande Change Directory.
J'ai essayé d'utiliser un lien symbolique, exécuter la commande dans mon processus actuel avec la commande "dot" (comme sh '. cd ios'
), essayé d'utiliser plein chemin avec le dossier iOS. Mais tout cela n'a pas apporté le succès :(
Alors, pourquoi Jenkins ne change pas le répertoire avec sh 'cd ios'
commande? Comment puis-je y faire face? Merci en avance.
Voici mon script
pipeline {
agent tout
outils {Nodejs "JENKINS_NODEJS"}
étapes {
stage('Pulling git repo'){
steps{
git(
url: 'url_to_git_repo',
credentialsId: 'jenkins_private_key2',
branch: 'new_code'
)
}
}
stage('Prepare') {
steps{
sh 'npm install -g yarn'
sh 'yarn install'
}
}
stage('Building') {
steps{
sh 'cd /Users/igor/.jenkins/workspace/MobileAppsPipeline/ios'
sh 'ls -l'
sh '/usr/local/bin/fastlane build_and_Push'
}
}
}}
Ceci à cause de toutes les commandes de Jenkins exécutées dans le répertoire [Jenkins Home]/Espace de travail/[Votre nom de pipeline] (j'espère que vous utilisez un pipeline).
Si vous avez besoin de changer de répertoire, votre script devrait être comme:
node {
stage("Test") {
sh script:'''
#!/bin/bash
echo "This is start $(pwd)"
mkdir hello
cd ./hello
echo "This is $(pwd)"
'''
}
}
Et votre sortie sera:
Deuxièmement sh
_ commence au répertoire d'espace de travail.
Exécutez vos commandes en utilisant le format ci-dessous, c'est la manière dont tout script shell peut être exécuté dans le fichier Jenkins.
// Format shell: sh "" "#!/Bin/bash votre commande" ""
Exemple:
sh """
#!/bin/bash
cd /Users/igor/.jenkins/workspace/MobileAppsPipeline/ios
ls -l
/usr/local/bin/fastlane build_and_Push
"""