web-dev-qa-db-fra.com

Jenkinsfile DSL comment spécifier le répertoire cible

J'explore les pipelines Jenkins 2.0. Jusqu'à présent, mon dossier est assez simple.

node {
    stage "checkout"
    git([url:"https://github.com/luxengine/math.git"])

    stage "build"
    echo "Building from pipeline"
}

Je n'arrive pas à trouver le moyen de définir le répertoire dans lequel git va se connecter. Je ne trouve pas non plus de documentation sur ce sujet. J'ai trouvé https://jenkinsci.github.io/job-dsl-plugin/ mais cela ne semble pas correspondre à ce que je vois dans d'autres tutoriels.

11
user2475269

Clarification

On dirait que vous essayez de configurer Pipeline job (anciennement appelé Workflow). Ce type de travail est très distinct de Job DSL .

Le travail de Pipeline a pour but de:

Orchestre des activités de longue durée pouvant couvrir plusieurs esclaves de construction. Convient à la construction de pipelines (anciennement appelés flux de travaux) et/ou à l'organisation d'activités complexes qui ne s'intègrent pas facilement dans un type de travail de type libre. 

Où comme Job DSL:

... permet la création programmatique de projets à l'aide d'un DSL. Pousser la création de tâches dans un script vous permet d'automatiser et de normaliser votre installation Jenkins, contrairement à tout ce qui était possible auparavant.

Solution

Si vous souhaitez extraire votre code dans un répertoire spécifique, remplacez l'étape git par l'étape plus générale de SCM checkout . Final Pipeline configuration devrait ressembler à ceci:

node {
    stage "checkout"
    //git([url:"https://github.com/luxengine/math.git"])
    checkout([$class: 'GitSCM', 
        branches: [[name: '*/master']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [[$class: 'RelativeTargetDirectory', 
            relativeTargetDir: 'checkout-directory']], 
        submoduleCfg: [], 
        userRemoteConfigs: [[url: 'https://github.com/luxengine/math.git']]])

    stage "build"
    echo "Building from pipeline"
}

En tant que référence future pour Jenkins 2.0 et Pipeline DSL, veuillez utiliser le générateur intégré Snippet ou la documentation .

18
luka5z

Cela peut être fait en utilisant la directive de dir:

def exists = fileExists '<your target dir>'
if (!exists){
    new File('<your target dir>').mkdir()
}
dir ('<your target dir>') {
  git url: '<your git repo address>'
}
7
Cross

Commencez par préciser que vous utilisez Jenkins Job DSL.

Vous pouvez faire ceci comme ceci:

    scm {
        git {
            wipeOutWorkspace(true)
            shallowClone(true);
            remote {
                url("xxxx....")
                relativeTargetDir('checkout-folder')
            }
        }
    }

Cette adresse ci-dessus vous donne simplement la possibilité de taper en haut à gauche par exemple 'scm' et montrera dans quelles relations 'scm' peut être utilisé. Ensuite, vous pouvez sélectionner 'scm-freestylejob' et ensuite cliquer sur le bouton '***' pour voir les détails.

Le point de départ général de Jenkins Job DSL est ici:

Vous pouvez bien sûr demander ici sur SO ou sur le forum Google:

1
khmarbaise

Vous utilisez le Pipeline Plugin , pas le Job DSL Plugin . Dans le plug-in Pipeline, si vous souhaitez définir quelque chose pour lequel il n'existe pas encore de fonction dans la syntaxe Pipeline, vous pouvez le définir vous-même .

0
crasp