定义执行环境
在上一节中,你可能已经注意到每个示例中的agent
指令,agent
指令告诉Jenkins在何处以及如何执行管道或其子集,正如你所料,所有管道都需要agent
。
在引擎下,agent
导致一些事情发生:
- 该块中包含的所有步骤都由Jenkins排队执行,只要执行程序可用,步骤就会开始执行。
- 分配的工作区将包含从源代码控制中检出的文件以及管道的任何其他工作文件。
有几种方法可以定义在管道中使用的agent
,对于本指南,我们只关注使用短暂的Docker容器。
管道旨在轻松使用Docker镜像和容器在内部运行,这允许管道定义所需的环境和工具,而无需手动配置各种系统工具和代理依赖性,这种方法允许你使用几乎任何可以打包在Docker容器中的工具。
有关更多代理规范选项,请参阅语法参考。
Jenkinsfile (Declarative Pipeline)
pipeline {
agent {
docker { image 'node:7-alpine' }
}
stages {
stage('Test') {
steps {
sh 'node --version'
}
}
}
}
脚本管道(高级):
Jenkinsfile (Scripted Pipeline)
node {
/* Requires the Docker Pipeline plugin to be installed */
docker.image('node:7-alpine').inside {
stage('Test') {
sh 'node --version'
}
}
}
当管道执行时,Jenkins将自动启动指定的容器并执行其中定义的步骤:
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
[guided-tour] Running shell script
+ node --version
v7.4.0
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
混合和匹配不同的容器或其他代理,在执行管道时可以提供相当大的灵活性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。