2017-06-25 2 views
0

J'ai actuellement réussi à mettre en place un fichier Jenkins pour exécuter mon analyse PHP dans un conteneur. Voici l'essentiel de celui-ci:Comment extraire un référentiel dans un conteneur Docker lors de l'utilisation d'un fichier Jenkins?

node { 
    stage "Prepare environment" 
     checkout scm 
     def environment = docker.build 'platforms-base' 

     environment.inside { 
      stage "Update Dependencies" 
       sh "composer install || true" 
     } 
} 

Lorsque cela fonctionne, il semble que le repo est vérifié sur la machine hôte et qu'il est monté dans le conteneur docker dans le répertoire /app. (Je n'ai trouvé aucune configuration pour cela, donc je ne sais pas où cela est défini.)

Dans le même conteneur, j'ai installé Magento2 dans le répertoire /var/magento2. J'ai besoin de faire des tests dans le cadre de la base de code de Magento2. Cela signifie que j'ai besoin de vérifier la branche actuelle dans un répertoire particulier dans le conteneur au /var/magento2/vendor/myorg/mypackage/ mais le repo extrait semble être à /app.

Comment puis-je vérifier un dépôt à un certain endroit à l'intérieur du conteneur?

Répondre

1

/app/app sera monté à l'intérieur de votre conteneur parce que vous (ou le Dockerfile que vous utilisez) monte le répertoire courant comme /app.

Maintenant, votre code est déjà bien emprunté par Jenkins, donc je ne ferais pas de contrôle supplémentaire séparé de l'intérieur du conteneur docker. Jenkins vient de vérifier la bonne branche/master/tag pour vous avec les informations d'identification appropriées, donc pas besoin de le faire vous-même.

Vous avez trois choix fondamentaux:

  • Montez le répertoire courant pas /app, mais comme /var/magento2/vendor/myorg/mypackage/

  • Montez le répertoire courant à la fois /app et /var/magento2/vendor/myorg/mypackage/. Vous pourriez peut-être même le faire avec une option de ligne de commande supplémentaire au lieu de modifier le Dockerfile. (Cela dépend beaucoup de votre configuration de développement).

  • Créez un lien symbolique vers /app, cela fonctionnera probablement aussi.