UNPKG

@sap/cds-dk

Version:

Command line client and development toolkit for the SAP Cloud Application Programming Model

78 lines (63 loc) 2.28 kB
module.exports = Object.assign(up, { options: ['--to'], shortcuts: ['-2'], flags: [], help: ` # SYNOPSIS *cds up* Builds and deploys the application to Cloud Foundry or Kubernetes. # OPTIONS *-2* | *--to* cf|k8s The platform to deploy to. Default is 'cf'. # EXAMPLES *cds up* *cds up --to k8s* `}) const { execSync } = require('node:child_process') const cds = require('../lib/cds') const { highlight } = require('../lib/util/term') const { exists, path: { join } } = cds.utils const { readProject } = require('../lib/init/projectReader') const run = cmd => { console.log(highlight(cmd)) try { execSync(cmd, { stdio: 'inherit', env: { ...process.env, FORCE_COLOR: cds.utils.colors.enabled }}) } catch (error) { throw error.message } } async function up() { const { apps, appName, hasMultitenancy, hasApprouter, hasXsuaa } = readProject() for (const { app } of apps) { const appPath = join(cds.root, cds.env.folders.app, app) if (exists(join(appPath, 'package.json')) && !exists(join(appPath, 'package-lock.json'))) { run(`npm i --package-lock-only --prefix ${appPath}`) } } if (hasMultitenancy && !exists('mtx/sidecar/package-lock.json')) { run('npm i --package-lock-only --prefix mtx/sidecar') } if (cds.cli.options.to === 'k8s') { if (!exists('chart')) run('cds add helm') if (!exists('containerize.yaml')) run('cds add containerize') } else { if (!exists('mta.yaml')) { run('cds add mta') run('npm i --package-lock-only') } else if (!exists('package-lock.json')) { run('npm i --package-lock-only') } } if (cds.cli.options.to === 'k8s') { run('ctz containerize.yaml --log --push') let helmUpgrade = `helm upgrade --install ${appName} ./gen/chart --wait --wait-for-jobs` if (hasXsuaa) helmUpgrade += ' --set-file xsuaa.jsonParameters=xs-security.json' run(helmUpgrade) run(`kubectl rollout status deployment ${appName}-srv --timeout=8m`) if (hasApprouter) run(`kubectl rollout status deployment ${appName}-approuter --timeout=8m`) if (hasMultitenancy) run(`kubectl rollout status deployment ${appName}-sidecar --timeout=8m`) } else { run('mbt build -t gen --mtar mta.tar') run('cf deploy gen/mta.tar -f') } }