BuildConfig 是所有构建的基本类型,可以在构建配置中使用不同的构建策略,通过运行oc explain buildconfig.spec.strategy 你可以看到它们。如果你想做一个 docker build 使用dockerStrategy,如果你想使用 source2image 从源代码构建你指定sourceStrategy。
有时您的需求比简单地运行带有输出图像的构建更复杂,假设您想要运行构建,等待该图像部署到某个环境,然后运行一些自动化的 GUI 测试。在这种情况下,您需要一个管道。如果您想从 OpenShift Web 控制台触发和配置此管道,您可以在 BuildConfig 中使用 jenkinsPipelineStrategy。在 OpenShift 3.x Web 控制台中,此类 BuildConfigs 显示为 Pipelines 而不是 Builds,即使它们都是真正的 BuildConfigs。
任何带有jenkinsPipelineStrategy 的 BuildConfig 都将由项目内运行的 Jenkins Build Server 执行。该 Jenkins 实例还可能具有其他管道,这些管道在 OpenShift Web 控制台中未映射或不可见,如果您在 OpenShift Web 控制台中看不到它们的好处,则不需要为每个 Jenkinsfile 都有一个 BuildConfig。
在 Jenkinsfile 和带有一些非 jenkinsfile-strategy 的 BuildConfig 中运行构建的区别在于,构建实际上是在 jenkins 构建代理而不是普通的 OpenShift 构建 pod 中执行的。
在我们公司,我们将 jenkinsFile 管道和 BuildConfigs 与 sourceStrategy 结合使用。我们让管道调用 OpenShift API 并告诉它使用 sourceStrategy 执行 BuildConfig,而不是直接在 Jenkinsfile 管道中运行构建。所以基本上我们仍然使用 s2i 来构建图像,但 Jenkinsfile 作为我们的 CI/CD 管道引擎。你可以在https://github.com/openshift/jenkins-client-plugin找到一些例子。