UNPKG

3.54 kBJavaScriptView Raw
1"use strict";
2/*
3 * Copyright © 2018 Atomist, Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18 return new (P || (P = Promise))(function (resolve, reject) {
19 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
22 step((generator = generator.apply(thisArg, _arguments || [])).next());
23 });
24};
25Object.defineProperty(exports, "__esModule", { value: true });
26const sdm_1 = require("@atomist/sdm");
27const DockerPerBranchDeployer_1 = require("./DockerPerBranchDeployer");
28/**
29 * Goal definition for deployment using Docker
30 */
31exports.DockerDeployGoal = new sdm_1.Goal({
32 uniqueName: "docker-deploy",
33 displayName: "docker deploy",
34 environment: sdm_1.IndependentOfEnvironment,
35 workingDescription: "Deploying using Docker",
36 completedDescription: "Deployed with Docker",
37 failedDescription: "Docker deployment failed",
38});
39/**
40 * This goal will deploy the Docker image built by the `DockerBuild` goal. Deployments mapped
41 * to free ports and a deployment will be done per branch.
42 */
43class DockerDeploy extends sdm_1.FulfillableGoalWithRegistrations {
44 constructor(goalDetailsOrUniqueName = sdm_1.DefaultGoalNameGenerator.generateName("docker-deploy"), ...dependsOn) {
45 super(Object.assign({}, exports.DockerDeployGoal.definition, sdm_1.getGoalDefinitionFrom(goalDetailsOrUniqueName, sdm_1.DefaultGoalNameGenerator.generateName("docker-deploy")), { displayName: "version" }), ...dependsOn);
46 this.goalDetailsOrUniqueName = goalDetailsOrUniqueName;
47 }
48 with(registration) {
49 this.addFulfillment(Object.assign({ goalExecutor: executeDockerRun({
50 successPatterns: registration.successPatterns,
51 lowerPort: registration.lowerPort ? registration.lowerPort : 9090,
52 baseUrl: registration.baseUrl ? registration.baseUrl : "http://127.0.0.1",
53 sourcePort: registration.sourcePort,
54 }), name: sdm_1.DefaultGoalNameGenerator.generateName("docker-runner") }, registration));
55 return this;
56 }
57}
58exports.DockerDeploy = DockerDeploy;
59function executeDockerRun(options) {
60 const deployer = new DockerPerBranchDeployer_1.DockerPerBranchDeployer(options);
61 return (goalInvocation) => __awaiter(this, void 0, void 0, function* () {
62 return deployer.deployProject(goalInvocation).then(deployment => {
63 return {
64 code: 0,
65 targetUrl: deployment.endpoint,
66 };
67 }).catch(reason => {
68 return {
69 code: 1,
70 message: reason,
71 };
72 });
73 });
74}
75//# sourceMappingURL=DockerDeploy.js.map
\No newline at end of file