4.3. 3scale Jenkins 共有ライブラリーを使用したパイプラインの作成
本セクションでは、3scale toolbox を使用するカスタム Jenkins パイプラインを作成するためのベストプラクティスについて説明します。ここでは、アプリケーションの例をベースに、3scale Jenkins 共有ライブラリーを使用して toolbox を呼び出す Jenkins パイプラインを Groovy で記述する方法を説明します。詳細は、Jenkins 共有ライブラリー についてのドキュメントを参照してください。
Red Hat では、Red Hat Integration リポジトリーで提供される サンプル Jenkins パイプライン をサポートしています。
このパイプラインに対して行った変更については、Red Hat による直接のサポートはありません。独自の環境用に作成したカスタムのパイプラインはサポート対象外です。
前提条件
- サンプル 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 ThreescaleServiceオブジェクトを保持するグローバル変数を宣言し、パイプラインの別ステージからそれを使用できるようにします。def service = null
def service = nullCopy to Clipboard Copied! Toggle word wrap Toggle overflow 関連情報がすべて含まれる
ThreescaleServiceを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
openapi.filenameは、OpenAPI 仕様が含まれるファイルへのパスです。 -
environment.baseSystemNameは、environment.environmentNameと OpenAPI 仕様info.versionからの API メジャーバージョンをベースにした、最終的なsystem_nameの算出に使用されます。 -
toolbox.openshiftProjectは、そこで Kubernetes ジョブが作成される OpenShift プロジェクトです。 -
toolbox.secretNameは、3scale toolbox のインストールおよびアクセスの有効化 に示すように、3scale toolbox 設定ファイルが含まれる Kubernetes シークレットの名前です。 -
toolbox.destinationは、3scale toolbox リモートインスタンスの名前です。 -
applicationPlansは、.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 インテグレーションテストを実行するステージを追加します。Hosted APIcast インスタンスを使用する場合、ステージング環境用の公開 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