我正在尝试在jenkins服务器上设置一个yocto构建作业。我遇到了一个问题,我需要一个特定的文件夹布局,将存储库内容克隆到其中。jenkins本身作为docker容器运行,通过连接到“外部”docker套接字来启动和启动容器。此外,我需要在两次运行之间缓存构建目录(>20 to ),否则这将在两次运行之间花费很长时间。
我尝试了以下Jenkinsfile来查看jenkins使用的布局:
pipeline {
agent {
docker {
image 'XXXXXX/yocto:latest'
args '-v $HOME/yocto:/home/yocto'
}
}
stages {
stage('Build') {
steps {
sh 'ls'
sh 'echo "$(pwd)"'
}
}
}
}这将产生以下输出:
+ls
<contents of the repository>
+pwd
/var/jenkins_home/workspace/XXXXX-yocto_master无论如何,为了让我的bootstrap脚本工作(我不能很容易地更改它,因为很多其他人都依赖它),我需要以下文件夹布局:
/var/jenkins_home/workspace/XXXXXX-yocto_master
└── new_reposiotry_name
└── <repository contents>如何指示Jenkins管道不将存储库的内容克隆到工作区中,而是将其放入文件夹中?我知道这可以通过移动文件来完成,但如果有其他方法,我会尽量避免这样做。
发布于 2020-11-21 23:36:23
简单的方法可能是使用选项checkoutToSubdirectory('myRepoDir')
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签出。
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)"'
}
}
}
}https://stackoverflow.com/questions/64941733
复制相似问题