web-dev-qa-db-fra.com

Jenkins ne change pas le répertoire via la commande sh 'CD Directory'

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'
    }
}

}}

4
Igor Vlasuyk

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:

enter image description here

Deuxièmement sh _ commence au répertoire d'espace de travail.

1
ozlevka

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
    """ 
1
Sumit