Jenkins中的“容器”关键字是什么?

时间:2019-10-09 13:30:24

标签: jenkins jenkins-declarative-pipeline

我最近继承了一些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并没有按照我的预期去做,也找不到任何文档。有人知道这应该做什么吗?

先谢谢了。

3 个答案:

答案 0 :(得分:1)

好的,它显然来自Kubernetes插件。此jenkins github repo和此jenkins documentation中有更多文档。

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

谢谢大家。

答案 1 :(得分:0)

如果未记录container(...)方法,则可能是由自定义 library 加载的。

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

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

答案 2 :(得分:0)

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

我以前从未见过“容器”关键字。