UNPKG

@atomist/sdm-pack-spring

Version:

Atomist software delivery machine extension pack for Spring and Spring Boot applications

100 lines 4.39 kB
"use strict"; /* * Copyright © 2019 Atomist, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const sdm_1 = require("@atomist/sdm"); const gradleCommand_1 = require("../gradleCommand"); const buildGradleParser_1 = require("../parse/buildGradleParser"); exports.DefaultGradleBuilderOptions = { deploymentUnitFileLocator: (p, id) => `${p.baseDir}/build/libs/${id.name}.jar`, tasks: ["clean", "build"], flags: [], arguments: [], }; /** * Build with Gradle in the local automation client. * This implementation requires Java and maven on the classpath. * Note it is NOT intended for use for multiple organizations. It's OK * for one organization to use inside its firewall, but there is potential * vulnerability in builds of unrelated tenants getting at each others * artifacts. */ function gradleBuilder(options = exports.DefaultGradleBuilderOptions) { return (goalInvocation) => __awaiter(this, void 0, void 0, function* () { const { configuration, id, progressLog, credentials } = goalInvocation; return configuration.sdm.projectLoader.doWithProject({ credentials, id, readOnly: true }, (p) => __awaiter(this, void 0, void 0, function* () { const gradleProjectIdentifier = yield buildGradleParser_1.GradleProjectIdentifier(p); const buildResult = gradleCommand(p, { progressLog, errorFinder: exports.GradleErrorFinder, flags: ["--console=plain", ...options.flags], tasks: options.tasks, args: options.arguments, }); const rb = new UpdatingBuild(id, yield buildResult); rb.ai = { id, name: gradleProjectIdentifier.name, version: gradleProjectIdentifier.version }; rb.deploymentUnitFile = options.deploymentUnitFileLocator(p, gradleProjectIdentifier); return rb; })); }); } exports.gradleBuilder = gradleBuilder; function gradleCommand(p, options) { return __awaiter(this, void 0, void 0, function* () { const command = yield gradleCommand_1.determineGradleCommand(p); const args = []; if (options.flags) { args.push(...options.flags); } if (options.args) { args.push(...options.args.map(a => `-D${a.name}${a.value ? `=${a.value}` : ""}`)); } if (options.initScript) { args.push(`-I ${options.initScript}`); } args.push(...(options.tasks || ["build"])); return sdm_1.spawnLog(command, args, { cwd: p.baseDir, log: options.progressLog, errorFinder: options.errorFinder, }); }); } exports.gradleCommand = gradleCommand; exports.GradleBuilder = gradleBuilder(); exports.GradleErrorFinder = (code, signal, log) => { const failureRegex = /BUILD FAILED/; return (code > 0) || failureRegex.test(log.log); }; class UpdatingBuild { constructor(repoRef, buildResult) { this.repoRef = repoRef; this.buildResult = buildResult; } get appInfo() { return this.ai; } } //# sourceMappingURL=gradleBuilder.js.map