我正在尝试建立一个jenkins多分支管道以在docker容器中运行我所有的代码验证步骤,然后构建docker映像并将其推送到所述docker容器之外。
目前,我的Jenkinsfile看起来像这样(为了便于阅读而进行了缩减):
pipeline {
agent {
label 'AWS'
}
stages {
stage('stuff in docker') {
agent {
dockerfile {
filename 'Dockerfile.jenkins'
reuseNode true
}
}
steps {
stuff
}
}
stage('more stuff in docker') {
agent {
dockerfile {
filename 'Dockerfile.jenkins'
reuseNode true
}
}
steps {
stuff
}
}
stage('stuff not in docker') {
steps {
stuff
}
}
stage('more stuff not in docker') {
steps {
stuff
}
}
}
post {
always {
cleanWs()
}
}
}
这里的问题是我使用dockerfile代理的每个阶段,jenkins都会尝试重建docker映像。这些阶段都已缓存,但是发送构建上下文并实际处理所有内容仍然比我想要的时间更多。如果我将dockerfile用作根代理,则可以在同一个docker容器中运行所有内容,但是我失去了执行git东西和构建docker映像的能力(至少在没有连接到外部docker
process sock的情况下,不必要的麻烦)。
我想知道是否可以通过某种方法将 同一个 docker映像用于多个步骤,然后从该docker映像中提取其他步骤。
弄清楚了!
pipeline {
agent {
label 'AWS'
}
stages {
stage('do everything in docker') {
agent {
dockerfile {
filename 'Dockerfile.jenkins'
reuseNode true
}
}
stages {
stage('stuff in docker') {
steps {
stuff
}
stage('more stuff in docker') {
steps {
stuff
}
}
}
}
stage('stuff not in docker') {
steps {
stuff
}
}
stage('more stuff not in docker') {
steps {
stuff
}
}
}
post {
always {
cleanWs()
}
}
}
tl; dr,您可以嵌套阶段
问题内容: 我想在Docker容器中运行Jenkins。一切都好。我可以这样运行:我也可以添加持久性存储。当我创建管道必须执行命令(和)时,问题就来了。首先,错误是未在系统上安装docker。是的,期望。然后我开始搜索,发现如何在容器中运行docker(传递2个持久卷): 这可以运行,但是有一些例外。容器中有命令,但是当我尝试运行它时,它将引发异常: 我该如何解决这个问题?在Docker中安装Je
我试图建立一个jenkins多分支管道,在docker容器中运行我的所有代码验证步骤,然后构建docker映像并将其推出docker容器。 目前,我的 Jenkinsfile 看起来有点像这样(为了便于阅读,它精简了): 这里的问题是,我使用 dockerfile 代理的每个阶段,jenkins 都会尝试重建 docker 映像。这些阶段都被缓存了,但是发送构建上下文并实际处理所有内容仍然需要比我
我正在使用jenkins管道,我的Jenkinsfile有几个阶段和工作。有没有办法在詹金斯管道之外运行特定的工作? 示例:假设其中一个阶段是执行“SCP构建工件到远程位置”。出于某种原因,这失败了,如果我想手动运行jenkins管道之外的其他工作,我如何做到这一点? 我对调用新的构建最不感兴趣。那么,我们可以手动运行jenkins管道以外的故障后的剩余作业吗?
问题内容: 我有一个在我的jenkinsfile中使用的类,这里是其简化版本: 我提供的詹金斯在jenkinsfile使用时参数。在这里模拟具有脚本和sh的jenkins对象的最佳方法是什么?谢谢你的帮助 问题答案: 前一周我遇到了类似的问题,我想到了: 并与您的脚本一起使用(以未命名的sh调用扩展): 它输出: 现在,它本身并不是很有用,但是很容易添加定义模拟方法行为的逻辑,例如,此版本根据要读
问题内容: 我有两条詹金斯管道,比方说管道A和管道B。我想在管道B中调用管道A。我怎样才能做到这一点? (管道A是管道B的子集。管道A负责执行一些日常工作,可以在管道B中重用) 我已经在计算机上安装了Jenkins 2.41。 问题答案: 以下解决方案对我有效: 在此处添加“管道:构建步骤”官方文档的链接:https : //jenkins.io/doc/pipeline/steps/pipeli
问题内容: 我正在尝试在詹金斯(Jenkins)中运行以下内容,但我得到任何建议的错误? 错误-为什么在shell脚本中不使用文件名重新填充? 问题答案: 我建议在双引号中运行bash命令,并转义和字符。考虑以下Jenkins管道示例脚本: 我在此示例中使用的文件包含: 当我运行它时,我得到以下控制台输出: 运行脚本文件后,将其内容更改为: 希望能帮助到你。