jenkins - 詹金斯 | DSL| 工作区目录问题
问题描述
我有一个 Jenkins DSL 工作。它用于java构建。我陷入了一个奇怪的问题。jobname 是 DSL,我看到创建了一个名为 DSL 的工作区,但是当作业运行时,它添加了另一个名为 DSL@2 的工作区。我无法从 DSL 工作区获取最终 jar 文件的问题
pipeline
{
agent any
stages
{
stage('Build')
{
agent {
docker { image 'maven:latest'
args '-v /home/ubuntu/jenkins/jenkins_home/.m2:/root/.m2'
}
}
steps {
git branch: "${params.branch}", url: "git@github.org/repo.git"
sh 'mvn clean install -Dmaven.test.skip=true -Dfindbugs.skip=true'
sh "ls -la target/name.jar "
}
}
stage('Copy Artifects')
{
steps {
//print "$params.IP"
// sh '${params.IP}"
sh "ls -la && pwd "
sh "scp target/name.jar ubuntu@${params.IP}:/home/ubuntu/target/name.jar_2"
}
}
}
}
失业
Compiling 19 source files to /var/jenkins_home/workspace/dsl@2/auth-client/target/classes
解决方案
DSL@2 意味着您要么配置了一个并发作业并且同时运行了两个构建,要么您遇到了错误https://issues.jenkins-ci.org/browse/JENKINS-30231
为了解决您的问题:
您正在从 maven 映像创建的 docker 容器中构建stage('Build') 。
但是,stage('Copy Artifects')在该容器之外运行
要修复它,您需要将代理{}移动到管道{} 级别,如下所示:
pipeline
{
agent {
docker {
image 'maven:latest'
args '-v /home/ubuntu/jenkins/jenkins_home/.m2:/root/.m2'
}
}
stages
{
stage('Build')
{
steps {
git branch: "${params.branch}", url: "git@github.org/repo.git"
sh 'mvn clean install -Dmaven.test.skip=true -Dfindbugs.skip=true'
sh "ls -la target/name.jar "
}
}
stage('Copy Artifects')
{
steps {
sh "ls -la && pwd "
sh "scp target/name.jar ubuntu@${params.IP}:/home/ubuntu/target/name.jar_2"
}
}
}
}
推荐阅读
- shopify - Shopify - 如何在应用程序中扩展结帐页面?
- python - 为什么 python3 中的 switcher 会遍历所有情况?
- sql - 连接问题并在选择中两次使用相同的表列
- oracle - 尝试创建触发器但出现错误 PLS-00103
- java - 为什么 java HashMap 调整大小或重新散列没有像 Redis 那样采用渐进的方法
- tensorflow - 如何转换 Tensorflow 数据集的数据类型 [EMNIST/balanced](从 uint8 到 float32)
- c - C 编译器 `-O0` 是如何让代码变得如此疯狂的?
- java - 如何在本地 getArrow() 处更改 if(ab) 中 x 和 y 的值
- java - 这段代码中的两个类指的是什么?
- android - Flutter - 在 ThemeData 中使用自定义颜色和主题