我试图让以下功能在Jenkins'声明性管道语法:
master
分支input
要求用户确认部署到暂存环境以下是我最终的结果:
pipeline {
agent none
stages {
stage('1. Compile') {
agent any
steps {
echo 'compile'
}
}
stage('2. Build & push Docker image') {
agent any
when {
branch 'master'
}
steps {
echo "build & push docker image"
}
}
stage('3. Deploy to stage') {
when {
branch 'master'
}
input {
message "Deploy to stage?"
ok "Deploy"
}
agent any
steps {
echo 'Deploy to stage'
}
}
}
}
问题是第2阶段需要1的输出,但在运行时不可用。如果我用全局agent
替换各种agent any
指令,则输出可用,但执行器在第3阶段被阻止等待用户输入。如果我尝试组合1& 2进入一个阶段,然后我失去了仅在master
上有条件地运行某些步骤的能力。
有没有办法实现我正在寻找的所有行为?
答案 0 :(得分:1)
您需要在第一步结束时使用stash
命令,然后在需要文件时使用unstash
我认为这些可在snippet generator
中找到保存一组文件,以便稍后在同一版本中使用,通常在 另一个节点/工作区。存储文件不可用 通常在构建结束时被丢弃。请注意藏匿 和unstash步骤设计用于小文件。对于大 数据传输,使用外部工作区管理器插件,或使用 外部存储库管理器,如Nexus或Artifactory