generator-partha-btp-capm
Version:
SAP CAP Generator - Partha Sarathi Goswami
415 lines (395 loc) • 13.3 kB
YAML
_schema-version: '3.2'
ID: <%= projectName %>
version: 0.0.1
parameters:
enable-parallel-deployments: true
build-parameters:
before-all:
- builder: custom
commands:
- npm install --production
- npx -p @sap/cds-dk cds build --production
modules:
<% if((hana || schemaName !== '') && !multiTenant){ -%>
# ---------------- DATABASE DEPLOYER MODULE ------------------
- name: <%= projectName %>-db-deployer
# ------------------------------------------------------------
type: hdb
path: gen/db
parameters:
buildpack: nodejs_buildpack
memory: 256M
disk-quota: 1024M
<% if(customDomain !== ""){ -%>
domain: <%= customDomain %>
<% } -%>
requires:
<% if(authentication || api){ -%>
- name: <%= projectName %>-uaa
<% } -%>
- name: <%= projectName %>-db
<% if(schemaName !== ""){ -%>
- name: <%= projectName %>-db-<%= schemaName %>
<% } -%>
properties:
TARGET_CONTAINER: <%= projectName %>_HDI
<% } -%>
# --------------------- SERVER MODULE ------------------------
- name: <%= projectName %>-srv
# ------------------------------------------------------------
type: nodejs
path: gen/srv
parameters:
buildpack: nodejs_buildpack
memory: 512M
disk-quota: 1024M
<% if(customDomain !== ""){ -%>
<% if(multiTenant){ -%>
host: <%= projectName %>-srv
<% } -%>
domain: <%= customDomain %>
<% } -%>
<% if(api){ -%>
properties:
ApplicationInterfaceKey: saptest0
APIKey: <%= APIKey %>
<% if(em && !multiTenant && apiS4HCBP){ -%>
BusinessPartnerCountry: US
BusinessPartnerRole: FLCU01
<% } -%>
<% } -%>
requires:
<% if(authentication || api){ -%>
- name: <%= projectName %>-uaa
<% } -%>
<% if(api){ -%>
- name: <%= projectName %>-dest
<% } -%>
<% if(em){ -%>
- name: <%= projectName %>-em
<% } -%>
<% if(applicationLogging){ -%>
- name: <%= projectName %>-logging
<% } -%>
<% if(multiTenant){ -%>
- name: <%= projectName %>-registry
- name: <%= projectName %>-sm
<% } else if (hana || schemaName !== ''){ -%>
- name: <%= projectName %>-db
<% } -%>
provides:
- name: srv-api
properties:
srv-url: ${default-url}
<% if((authentication || ui) && !managedAppRouter){ -%>
# ------------------ APP ROUTER MODULE -----------------------
- name: <%= projectName %>
# ------------------------------------------------------------
type: approuter.nodejs
path: app
parameters:
memory: 256M
disk-quota: 1024M
<% if(customDomain !== ""){ -%>
<% if(multiTenant){ -%>
host: <%= projectName %>
<% } -%>
domain: <%= customDomain %>
<% } -%>
<% if(multiTenant){ -%>
properties:
<% if(customDomain !== ""){ -%>
TENANT_HOST_PATTERN: '^(.*).<%= customDomain %>'
<% } else { -%>
TENANT_HOST_PATTERN: '^(.*)-${space}-${app-name}.${default-domain}'
<% } -%>
<% } -%>
requires:
<% if(authentication || html5repo){ -%>
- name: <%= projectName %>-uaa
<% } -%>
<% if(html5repo){ -%>
- name: <%= projectName %>-dest
- name: <%= projectName %>-html5repo-rt
<% } else { -%>
- name: srv-api
group: destinations
properties:
name: srv
url: ~{srv-url}
timeout: 60000
<% if(authentication){ -%>
forwardAuthToken: true
<% } -%>
<% } -%>
<% if(applicationLogging){ -%>
- name: <%= projectName %>-logging
<% } -%>
<% if(multiTenant){ -%>
provides:
- name: app_api
properties:
url: ${default-url}
application: ${app-name}
<% } -%>
<% } -%>
<% if(html5repo){ -%>
# ----------- HTML5 APP REPOSITORY APP HTML5 MODULE ----------
- name: <%= projectName %>-html5
# ------------------------------------------------------------
type: html5
path: app/resources/html5
build-parameters:
builder: custom
commands:
- npm run build
supported-platforms: []
<% if(hana){ -%>
# ----------- HTML5 APP REPOSITORY APP FIORI MODULE ----------
- name: <%= projectName %>-fiori
# ------------------------------------------------------------
type: html5
path: app/resources/fiori
build-parameters:
builder: custom
commands:
- npm run build
supported-platforms: []
<% } -%>
# ----------- HTML5 APP REPOSITORY DEPLOYER MODULE -----------
- name: <%= projectName %>-ui-deployer
# ------------------------------------------------------------
type: com.sap.application.content
path: .
requires:
- name: <%= projectName %>-html5repo
parameters:
content-target: true
build-parameters:
build-result: gen/app
requires:
- artifacts:
- html5-content.zip
name: <%= projectName %>-html5
target-path: gen/app/
<% if(hana){ -%>
- artifacts:
- fiori-content.zip
name: <%= projectName %>-fiori
target-path: gen/app/
<% } -%>
# ----- HTML5 APP REPOSITORY DESTINATION CONTENT MODULE ------
- name: <%= projectName %>-dest-content
# ------------------------------------------------------------
type: com.sap.application.content
requires:
- name: <%= projectName %>-uaa
parameters:
service-key:
name: <%= projectName %>-uaa-sk
- name: <%= projectName %>-dest
parameters:
content-target: true
- name: <%= projectName %>-html5repo
parameters:
service-key:
name: <%= projectName %>-html5repo-sk
parameters:
content:
subaccount:
existing_destinations_policy: update
destinations:
- Name: <%= projectName %>-service-<%= projectName %>-uaa
ServiceInstanceName: <%= projectName %>-uaa
ServiceKeyName: <%= projectName %>-uaa-sk
Authentication: OAuth2UserTokenExchange
sap.cloud.service: <%= projectName %>-service
- Name: <%= projectName %>-service-<%= projectName %>-html5repo
ServiceInstanceName: <%= projectName %>-html5repo
ServiceKeyName: <%= projectName %>-html5repo-sk
sap.cloud.service: <%= projectName %>-service
build-parameters:
no-source: true
<% } -%>
resources:
<% if(authentication || api || html5repo){ -%>
# ----------------------- UAA SERVICE ------------------------
- name: <%= projectName %>-uaa
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
parameters:
service: xsuaa
service-plan: application
path: ./xs-security.json
<% if(multiTenant){ -%>
xsuaa-app: ${space}-~{app_api/application}
config:
xsappname: ${xsuaa-app}
properties:
XSAPPNAME: ${xsuaa-app}
requires:
- name: app_api
<% } -%>
<% } -%>
<% if(api || html5repo){ -%>
# -------------------- DESTINATION SERVICE -------------------
- name: <%= projectName %>-dest
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
<% if(html5repo){ -%>
requires:
- name: srv-api
<% } -%>
parameters:
service: destination
service-plan: lite
config:
<% if(html5repo){ -%>
HTML5Runtime_enabled: true
<% } -%>
<% if(api || html5repo){ -%>
init_data:
subaccount:
existing_destinations_policy: update
destinations:
<% } -%>
<% if(apiS4HCSO){ -%>
- Name: <%= projectName %>-API_SALES_ORDER_SRV
Description: SAP S/4HANA Cloud Sales Order (A2X)
URL: https://sandbox.api.sap.com
Type: HTTP
ProxyType: Internet
Authentication: NoAuthentication
HTML5.DynamicDestination: true
<% } -%>
<% if(apiS4HCBP){ -%>
- Name: <%= projectName %>-API_BUSINESS_PARTNER
Description: SAP S/4HANA Cloud Business Partner (A2X)
URL: https://sandbox.api.sap.com
Type: HTTP
ProxyType: Internet
Authentication: NoAuthentication
HTML5.DynamicDestination: true
<% } -%>
<% if(html5repo){ -%>
- Name: <%= projectName %>-srv
Description: <%= displayName %> - Server Module
URL: ~{srv-api/srv-url}
Type: HTTP
ProxyType: Internet
Authentication: NoAuthentication
HTML5.DynamicDestination: true
<% if(authentication){ -%>
HTML5.ForwardAuthToken: true
<% } -%>
# ----------- HTML5 APP REPOSITORY HOSTING SERVICE -----------
- name: <%= projectName %>-html5repo
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
parameters:
service: html5-apps-repo
service-plan: app-host
<% if(!managedAppRouter){ -%>
# ----------- HTML5 APP REPOSITORY RUNTIME SERVICE -----------
- name: <%= projectName %>-html5repo-rt
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
parameters:
service: html5-apps-repo
service-plan: app-runtime
<% } -%>
<% } -%>
<% } -%>
<% if(apiSFSFRC){ -%>
# ----------------- SUCCESSFACTORS API SERVICE ---------------
- name: <%= projectName %>-sf-api
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
parameters:
service: sap-successfactors-extensibility
service-plan: api-access
config:
systemName: <%= systemName %>
<% } -%>
<% if(em){ -%>
# --------------------- EVENT MESH SERVICE -------------------
- name: <%= projectName %>-em
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
parameters:
service: enterprise-messaging
service-plan: default
path: ./em.json
<% } -%>
<% if((hana || schemaName !== '') && !multiTenant){ -%>
# ------------------- HDI CONTAINER SERVICE ------------------
- name: <%= projectName %>-db
# ------------------------------------------------------------
type: com.sap.xs.hdi-container
parameters:
service: hana
service-plan: hdi-shared
service-name: <%= projectName %>_HDI
config:
schema: <%= projectName %>_HDI
properties:
hdi-service-name: ${service-name}
<% if(schemaName !== ""){ -%>
# ------------------- USER-PROVIDED SERVICE ------------------
- name: <%= projectName %>-db-<%= schemaName %>
# ------------------------------------------------------------
type: org.cloudfoundry.existing-service
parameters:
service-name: <%= projectName %>-db-<%= schemaName %>
<% } -%>
<% } -%>
<% if(multiTenant){ -%>
# --------------------- REGISTRY SERVICE ---------------------
- name: <%= projectName %>-registry
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
requires:
- name: <%= projectName %>-uaa
parameters:
service: saas-registry
service-plan: application
config:
xsappname: ~{<%= projectName %>-uaa/XSAPPNAME}
appName: <%= projectName %>
displayName: '<%= displayName %>'
description: '<%= description %>'
appUrls:
<% if(customDomain !== ""){ -%>
onSubscription: https://<%= projectName %>-srv.<%= customDomain %>/mtx/v1/provisioning/tenant/{tenantId}
<% if(api){ -%>
getDependencies: https://<%= projectName %>-srv.<%= customDomain %>/mtx/v1/provisioning/dependencies
<% } -%>
<% } else { -%>
onSubscription: https://${org}-${space}-<%= projectName %>-srv.${default-domain}/mtx/v1/provisioning/tenant/{tenantId}
<% if(api){ -%>
getDependencies: https://${org}-${space}-<%= projectName %>-srv.${default-domain}/mtx/v1/provisioning/dependencies
<% } -%>
<% } -%>
# ------------------- SERVICE MANAGER SERVICE ----------------
- name: <%= projectName %>-sm
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
requires:
- name: <%= projectName %>-uaa
parameters:
service: service-manager
service-plan: container
polling_timeout_seconds: 240
config:
acquireTimeoutMillis: max
polling_timeout_seconds: 480
<% } -%>
<% if(applicationLogging){ -%>
# ---------------- APPLICATION LOGGING SERVICE ---------------
- name: <%= projectName %>-logging
# ------------------------------------------------------------
type: org.cloudfoundry.managed-service
parameters:
service: application-logs
service-plan: lite
<% } -%>