Jenkins 中的 "container" 关键字是什么?

What is the "container" keyword in Jenkins?

我最近继承了一个包含一些 Jenkins 文件的代码库。在其中一个中,我 运行 变成了这个语法

            stage('Prepare database for integration tests') {
                steps {
                    container('postgres') {
                        sh "..."
                    }
                }
            }

我们的 Jenkins 运行 在 Openshift 上,pod 有多个容器,包括这个 postgres 容器。但是我找不到任何关于使用容器或使用 container('containerName') 连接到容器的参考资料。

我尝试用以下部分创建一个单独的管道

                        container('az-cli') {
                            try {
                                sh 'ls'
                            } catch (error) {
                                throw error
                            }
                        }

并且 ls 列出了代码存储库中的内容 - 而不是容器。显然 container 没有按照我的想法去做,我找不到任何关于它的文档。有谁知道这应该做什么?

提前致谢。

如果 container(...) 方法没有记录在案,它很可能被自定义加载 library.

检查管道中的@Library 注释,或者它是否不是自动加载库的一部分。然后您会在声明它的地方找到 groovy 文件。

更多信息请见https://jenkins.io/doc/book/pipeline/shared-libraries/#using-libraries

如果你想用一个容器来运行一个步骤,你可以这样做:https://jenkins.io/doc/book/pipeline/docker/#using-multiple-containers

我以前从未见过 "container" 关键字。

好的,它显然来自 Kubernetes 插件。更多文档在此 jenkins github repo and in this jenkins documentation 中。

它也能正常工作,但 'ls' 命令是骗人的。当我 运行 一个实际的 Azure 命令时,我看到了命令结果,也看到了容器的日志。

谢谢大家