apiVersion: v1 kind: Template labels: template: deploy-3scale-api metadata: annotations: description: |- Deploy an API to 3scale openshift.io/display-name: OpenShift BuildConfig to deploy an API to 3scale tags: builder template.openshift.io/documentation-url: https://github.com/nmasse-itix/threescale-cicd template.openshift.io/long-description: OpenShift BuildConfig to deploy an API to 3scale template.openshift.io/provider-display-name: Nicolas Massé template.openshift.io/support-url: https://github.com/nmasse-itix/threescale-cicd/issues name: deploy-3scale-api parameters: - name: API_NAME description: 'The name of your API (subject to OpenShift name syntax: [a-zA-Z0-9_])' value: example required: true - name: API_GIT_URI description: GIT Repository containing the OpenAPI Specification to deploy required: true - name: API_GIT_REF description: The branch or tag to use when checking out the GIT repository value: master required: true - name: API_GIT_CONTEXT_DIR description: The context directory to cd after the git checkout required: false - name: API_OPENAPI_FILE description: The OpenAPI Specification file to use to deploy the API value: openapi-spec.yaml required: true - name: API_OPENAPI_FILE_FORMAT description: The format (JSON or YAML) of the OpenAPI Specification file value: YAML required: false - name: THREESCALE_ADMIN_PORTAL_HOSTNAME description: The hostname of the 3scale admin portal (bare hostname, without https://) required: true - name: THREESCALE_ADMIN_PORTAL_ACCESS_TOKEN description: The 3scale access token required: true - name: SSO_ISSUER_ENDPOINT description: For OpenID Connect APIs only, the Red Hat SSO OIDC Issuer Endpoint (https://client_id:client_secret@sso.hostname/auth/realms/my-realm) required: false - name: THREESCALE_CICD_VERSION description: The version of the Ansible playbooks to use value: stable required: true - name: THREESCALE_CICD_API_SYSTEM_NAME description: Override the 3scale Service system_name required: false - name: THREESCALE_CICD_API_BASE_SYSTEM_NAME description: Define the base name to compute the final system_name required: false - name: THREESCALE_CICD_WILDCARD_DOMAIN description: Automatically defines the APIcast public URLs based on a scheme required: false - name: THREESCALE_CICD_API_BASEPATH description: Overrides the OpenAPI basePath field required: false - name: THREESCALE_CICD_PRIVATE_BASE_URL description: The 3scale private base URL required: false - name: THREESCALE_CICD_APICAST_POLICIES_CORS description: Allows to enable the CORS policy onto APICast gateway required: false - name: THREESCALE_CICD_OPENAPI_SMOKETEST_OPERATION description: Defines the OpenAPI Specification method to use for smoke tests required: false - name: THREESCALE_CICD_API_ENVIRONMENT_NAME description: Prefixes all services with an environment name to prevent any name collision when deploying the same API multiple times on the same 3scale instance required: false - name: THREESCALE_CICD_VALIDATE_OPENAPI description: Validates the OpenAPI Specification file against the official schema required: false - name: THREESCALE_CICD_APICAST_SANDBOX_ENDPOINT description: Defines the Public Staging Base URL required: false - name: THREESCALE_CICD_APICAST_PRODUCTION_ENDPOINT description: Defines the Public Production Base URL required: false objects: - apiVersion: v1 kind: ImageStream metadata: name: threescale-cicd spec: tags: - name: latest annotations: referencePolicy: type: Local from: kind: ImageStreamTag name: ${THREESCALE_CICD_VERSION} - name: ${THREESCALE_CICD_VERSION} annotations: referencePolicy: type: Local from: kind: DockerImage name: docker.io/nmasse/threescale-cicd:${THREESCALE_CICD_VERSION} - kind: "BuildConfig" apiVersion: "v1" metadata: name: "deploy-3scale-api-${API_NAME}" spec: source: type: "Git" git: uri: "${API_GIT_URI}" ref: "${API_GIT_REF}" contextDir: "${API_GIT_CONTEXT_DIR}" strategy: type: "Custom" customStrategy: from: kind: "ImageStreamTag" name: "threescale-cicd:${THREESCALE_CICD_VERSION}" env: - name: THREESCALE_CICD_OPENAPI_FILE_FORMAT value: ${API_OPENAPI_FILE_FORMAT} - name: OPENAPI_FILE value: ${API_OPENAPI_FILE} - name: THREESCALE_CICD_API_BASE_SYSTEM_NAME value: ${API_NAME} - name: THREESCALE_CICD_API_SYSTEM_NAME value: ${THREESCALE_CICD_API_SYSTEM_NAME} - name: THREESCALE_CICD_WILDCARD_DOMAIN value: ${THREESCALE_CICD_WILDCARD_DOMAIN} - name: THREESCALE_CICD_API_BASEPATH value: ${THREESCALE_CICD_API_BASEPATH} - name: THREESCALE_CICD_PRIVATE_BASE_URL value: ${THREESCALE_CICD_PRIVATE_BASE_URL} - name: THREESCALE_CICD_APICAST_POLICIES_CORS value: ${THREESCALE_CICD_APICAST_POLICIES_CORS} - name: THREESCALE_CICD_OPENAPI_SMOKETEST_OPERATION value: ${THREESCALE_CICD_OPENAPI_SMOKETEST_OPERATION} - name: THREESCALE_CICD_API_ENVIRONMENT_NAME value: ${THREESCALE_CICD_API_ENVIRONMENT_NAME} - name: THREESCALE_CICD_VALIDATE_OPENAPI value: ${THREESCALE_CICD_VALIDATE_OPENAPI} - name: THREESCALE_CICD_APICAST_SANDBOX_ENDPOINT value: ${THREESCALE_CICD_APICAST_SANDBOX_ENDPOINT} - name: THREESCALE_CICD_APICAST_PRODUCTION_ENDPOINT value: ${THREESCALE_CICD_APICAST_PRODUCTION_ENDPOINT} secrets: - secretSource: name: "3scale-admin-portal-${API_NAME}" mountPath: "/tmp/secrets" triggers: - type: ConfigChange - apiVersion: v1 kind: Secret metadata: name: 3scale-admin-portal-${API_NAME} type: Opaque stringData: hostname: ${THREESCALE_ADMIN_PORTAL_HOSTNAME} access_token: ${THREESCALE_ADMIN_PORTAL_ACCESS_TOKEN} sso_issuer_endpoint: ${SSO_ISSUER_ENDPOINT}