首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins + Docker更改工作区布局

Jenkins + Docker更改工作区布局
EN

Stack Overflow用户
提问于 2020-11-21 17:47:39
回答 1查看 171关注 0票数 1

我正在尝试在jenkins服务器上设置一个yocto构建作业。我遇到了一个问题,我需要一个特定的文件夹布局,将存储库内容克隆到其中。jenkins本身作为docker容器运行,通过连接到“外部”docker套接字来启动和启动容器。此外,我需要在两次运行之间缓存构建目录(>20 to ),否则这将在两次运行之间花费很长时间。

我尝试了以下Jenkinsfile来查看jenkins使用的布局:

代码语言:javascript
复制
pipeline {
    agent {
        docker {
            image 'XXXXXX/yocto:latest'
            args '-v $HOME/yocto:/home/yocto'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'ls'
                sh 'echo "$(pwd)"'
            }
        }
    }
}

这将产生以下输出:

代码语言:javascript
复制
+ls
<contents of the repository>
+pwd
/var/jenkins_home/workspace/XXXXX-yocto_master

无论如何,为了让我的bootstrap脚本工作(我不能很容易地更改它,因为很多其他人都依赖它),我需要以下文件夹布局:

代码语言:javascript
复制
/var/jenkins_home/workspace/XXXXXX-yocto_master
└── new_reposiotry_name
    └── <repository contents>

如何指示Jenkins管道不将存储库的内容克隆到工作区中,而是将其放入文件夹中?我知道这可以通过移动文件来完成,但如果有其他方法,我会尽量避免这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-21 23:36:23

简单的方法可能是使用选项checkoutToSubdirectory('myRepoDir')

代码语言:javascript
复制
pipeline {
    options{
        checkoutToSubdirectory('myRepoDir')
    }
    agent {
        docker {
            image 'XXXXXX/yocto:latest'
            args '-v $HOME/yocto:/home/yocto'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'ls'
                sh 'echo "$(pwd)"'
            }
        }
    }
}

或者,您可以将其作为管道步骤,并使用skipDefaultCheckout()选项忽略默认的git签出。

代码语言:javascript
复制
pipeline {
    options{
        skipDefaultCheckout()
    }
    agent {
        docker {
            image 'XXXXXX/yocto:latest'
            args '-v $HOME/yocto:/home/yocto'
        }
    }
    stages {
        stage('Checkout SCM'){
            steps{
                 dir('myRepoDir'){
                     git branch: 'master', credentialsId: 'your-credential', url: 'your-repo'
                 }
            }
        }
        stage('Build') {
            steps {
                sh 'ls'
                sh 'echo "$(pwd)"'
            }
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64941733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档