4.3. 使用 3scale Jenkins 共享库创建管道
本节提供创建使用 3scale toolbox 的自定义 Jenkins 管道的最佳实践。它解释了如何在 Groovy 中编写 Jenkins 管道,该管道使用 3scale Jenkins 共享库根据示例应用程序调用 toolbox。如需了解更多详细信息,请参阅 Jenkins 共享库。
重要
红帽支持红帽集成存储库中提供的 Jenkins 管道示例。
对这些管道所做的任何修改都不受红帽直接支持。不支持您为环境创建的自定义管道。
先决条件
- 部署示例 Jenkins CI/CD 管道.
- 您的 API 必须具有 OpenAPI 规格文件。例如,您可以使用 Apicurio Studio 生成此操作。
步骤
将以下内容添加到 Jenkins 管道的开头,以引用管道的 3scale 共享库:
#!groovy library identifier: '3scale-toolbox-jenkins@master', retriever: modernSCM([$class: 'GitSCMSource', remote: 'https://github.com/rh-integration/3scale-toolbox-jenkins.git'])
#!groovy library identifier: '3scale-toolbox-jenkins@master', retriever: modernSCM([$class: 'GitSCMSource', remote: 'https://github.com/rh-integration/3scale-toolbox-jenkins.git'])
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 声明一个全局变量来存放
三个scaleService
对象,以便您可以在管道的不同阶段使用它。def service = null
def service = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用所有相关信息创建
ThreescaleService
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
OpenAPI.filename
是包含 OpenAPI 规范的文件的路径。 -
environment.baseSystemName
用于根据 OpenAPI 规格info.version
中的 environment.environmentName
和 API 主要版本计算最终system_name
。 -
toolbox.openshiftProject
是创建 Kubernetes 作业的 OpenShift 项目。 -
toolbox.secretName
是包含 3scale toolbox 配置文件的 Kubernetes secret 的名称,如 安装 3scale toolbox 并启用访问权限 所示。 -
toolbox.destination
是 3scale toolbox 远程实例的名称。 -
applicationPlans
是使用 a.yaml
文件或提供应用程序计划属性详情创建的应用程序计划列表。
-
添加一个管道阶段来在 3scale 中置备服务:
stage("Import OpenAPI") { service.importOpenAPI() echo "Service with system_name ${service.environment.targetSystemName} created !" }
stage("Import OpenAPI") { service.importOpenAPI() echo "Service with system_name ${service.environment.targetSystemName} created !" }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加一个阶段来创建应用程序计划:
stage("Create an Application Plan") { service.applyApplicationPlans() }
stage("Create an Application Plan") { service.applyApplicationPlans() }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加全局变量和阶段来创建测试应用程序:
stage("Create an Application") { service.applyApplication() }
stage("Create an Application") { service.applyApplication() }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加阶段来运行集成测试。使用 APIcast Hosted 实例时,您必须获取代理定义来提取暂存公共 URL:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加一个阶段来将 API 提升到生产环境:
stage("Promote to production") { service.promoteToProduction() }
stage("Promote to production") { service.promoteToProduction() }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow