7.3. 3scale Jenkins 공유 라이브러리를 사용하여 파이프라인 생성
이 섹션에서는 3scale toolbox를 사용하는 사용자 지정 Jenkins 파이프라인을 생성하는 모범 사례를 제공합니다. 3scale Jenkins 공유 라이브러리를 사용하여 예제 애플리케이션을 기반으로 toolbox를 호출하는 Groovy에서 Jenkins 파이프라인을 작성하는 방법을 설명합니다. 자세한 내용은 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'])
파이프라인의 다양한 단계에서 사용할 수 있도록
ThreescaleService
오브젝트를 보유하는 글로벌 변수를 선언합니다.def service = null
모든 관련 정보를 사용하여
ThreescaleService
를 생성합니다.stage("Prepare") { service = toolbox.prepareThreescaleService( openapi: [ filename: "swagger.json" ], environment: [ baseSystemName: "my_service" ], toolbox: [ openshiftProject: "toolbox", destination: "3scale-tenant", secretName: "3scale-toolbox" ], service: [:], applications: [ [ name: "my-test-app", description: "This is used for tests", plan: "test", account: "<CHANGE_ME>" ] ], applicationPlans: [ [ systemName: "test", name: "Test", defaultPlan: true, published: true ], [ systemName: "silver", name: "Silver" ], [ artefactFile: "https://raw.githubusercontent.com/my_username/API-Lifecycle-Mockup/master/testcase-01/plan.yaml"], ] ) echo "toolbox version = " + service.toolbox.getToolboxVersion() }
-
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
파일을 사용하거나 애플리케이션 계획 속성 세부 정보를 제공하여 생성할 애플리케이션 계획 목록입니다.
-
OpenAPI
3scale에서 서비스를 프로비저닝할 파이프라인 단계를 추가합니다.
stage("Import OpenAPI") { service.importOpenAPI() echo "Service with system_name ${service.environment.targetSystemName} created !" }
애플리케이션 계획을 생성하려면 단계를 추가합니다.
stage("Create an Application Plan") { service.applyApplicationPlans() }
글로벌 변수와 단계를 추가하여 테스트 애플리케이션을 생성합니다.
stage("Create an Application") { service.applyApplication() }
통합 테스트를 실행하는 단계를 추가합니다. APIcast 호스팅 인스턴스를 사용하는 경우 프록시 정의를 가져와서 스테이징 공용 URL을 추출해야 합니다.
stage("Run integration tests") { def proxy = service.readProxy("sandbox") sh """set -e +x curl -f -w "ListBeers: %{http_code}\n" -o /dev/null -s ${proxy.sandbox_endpoint}/api/beer -H 'api-key: ${service.applications[0].userkey}' curl -f -w "GetBeer: %{http_code}\n" -o /dev/null -s ${proxy.sandbox_endpoint}/api/beer/Weissbier -H 'api-key: ${service.applications[0].userkey}' curl -f -w "FindBeersByStatus: %{http_code}\n" -o /dev/null -s ${proxy.sandbox_endpoint}/api/beer/findByStatus/ available -H 'api-key: ${service.applications[0].userkey}' """ }
API를 프로덕션으로 승격하는 단계를 추가합니다.
stage("Promote to production") { service.promoteToProduction() }