jenkinsfile的agent使用docker配置,执行时Running on 的node节点会切换是怎么回事
时间: 2024-12-22 16:12:07 浏览: 19
在 Jenkins 中,Jenkinsfile 是一种用于定义流水线(Pipeline)的脚本文件。通过使用 `agent` 指令,可以指定流水线运行的环境。当配置为使用 Docker 时,每次执行流水线时 Jenkins 会启动一个新的 Docker 容器来运行该流水线。
以下是一个简单的 Jenkinsfile 示例,展示了如何使用 Docker 作为 agent:
```groovy
pipeline {
agent {
docker {
image 'maven:3.6.3-jdk-11'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
sh 'mvn clean install'
}
}
}
}
```
在这个示例中,`agent` 部分指定了使用一个基于 `maven:3.6.3-jdk-11` 镜像的 Docker 容器。每次执行这个流水线时,Jenkins 都会启动一个新的 Docker 容器,并在该容器内运行流水线的各个阶段。
### Running on 的 node 节点会切换的原因
当你配置 Jenkinsfile 使用 Docker 作为 agent 时,每次执行流水线时 Jenkins 都会创建并启动一个新的 Docker 容器。这意味着每次执行流水线时,实际运行代码的环境都是一个全新的、独立的 Docker 容器。因此,从 Jenkins 的角度来看,每次执行流水线时都会“切换”到一个新的 node 节点,即新的 Docker 容器。
这种设计有几个好处:
1. **隔离性**:每个流水线运行在一个独立的容器中,避免了不同流水线之间的相互干扰。
2. **一致性**:确保每次构建都在相同的环境中进行,减少了由于环境差异导致的问题。
3. **可重复性**:可以轻松地重现构建过程,因为每次构建都使用相同的 Docker 镜像和配置。
### 相关问题
1. **如何配置 Jenkinsfile 使用 Docker 作为 agent?**
2. **为什么每次执行流水线时 Jenkins 会创建一个新的 Docker 容器?**
3. **在使用 Docker 作为 agent 时,如何管理 Docker 容器的资源?**
阅读全文