#!groovy import groovy.json.JsonSlurper def readConfigWebfacadeApi() { def packageJson = sh(script: 'cat package.json', returnStdout: true).trim() return new JsonSlurper().parseText(packageJson).config.webfacade_api } node { try { stage('Checkout') { checkout scm } docker.image("registry.nspop.dk/tools/node-chrome:14").inside() { stage('Get generator') { sh "cd webfacade-api && npm run fetch-generator" } } docker.image("registry.nspop.dk/tools/nspbuilder:2.0.8").inside() { stage('Generate api') { def branch = readConfigWebfacadeApi() sh "cd webfacade-api && ./generate-from-openapi.sh $branch" } } docker.image("registry.nspop.dk/tools/node-chrome:14").inside() { stage('Generate index.ts') { sh "cd webfacade-api && ./build.sh" } } // Try it out locally with docker run --rm -it -e NG_CLI_ANALYTICS=ci -v $(pwd):/app -w /app registry.nspop.dk/tools/node-chrome:14 bash -c "npm install --no-optional && npm run test-ci && npm run build-prod" docker.image("registry.nspop.dk/tools/node-chrome:14").inside() { stage('Install') { sh "sed -i 's/.*preinstall.*//' package.json" sh "npm install --no-optional" } stage('Test') { sh "npm run test-ci" } stage('Build') { sh "npm run build-prod" } } stage ('Archive') { dir('dist/maternity-web') { archiveArtifacts artifacts: '**/*.*', fingerprint: true } } } catch (err) { slackSend channel: 'trifork_ci', color: 'bad', message: "${env.JOB_NAME} ${env.BUILD_NUMBER} - Build failed ... (<${env.BUILD_URL}|Open>)", tokenCredentialId: 'Slack-Token' throw err } finally { stage ('Clean') { deleteDir() } } }