Compare commits

...

66 Commits

Author SHA1 Message Date
61c8cbc152 2.1.35 2016-06-07 05:20:09 +02:00
4ffb1d1e7e now checking for specific testfiles for each Image version 2016-06-07 05:20:04 +02:00
48bee2fa92 improve npmignore 2016-06-07 05:07:08 +02:00
494e3c5395 compile 2016-06-07 04:55:28 +02:00
1408cb3b3d fix bash 2016-06-07 04:55:08 +02:00
1bcb1f8fee 2.1.34 2016-06-07 04:52:13 +02:00
d98d8e9667 fix test command for docker 2016-06-07 04:50:36 +02:00
3ac486312e fix README 2016-06-07 04:40:44 +02:00
2464499214 2.1.33 2016-06-07 04:31:29 +02:00
9f4a3783a1 full docker workflow now implemented 2016-06-07 04:31:25 +02:00
fe0b99309b compile 2016-06-07 03:59:47 +02:00
5a05092bc8 improve bash, implement retagging 2016-06-07 03:57:43 +02:00
8dc0db3b71 2.1.32 2016-06-07 00:11:51 +02:00
d24ff4c67b fix another bash typo 2016-06-06 23:57:23 +02:00
821747510f 2.1.31 2016-06-06 23:53:32 +02:00
e13624fc26 fix bash 2016-06-06 23:53:14 +02:00
02e363d105 Start with docker test 2016-06-06 20:30:06 +02:00
47aac2f7c5 compile 2016-06-06 00:00:50 +02:00
832031a02a fix registry login scope 2016-06-05 23:59:10 +02:00
73b4057dc9 2.1.30 2016-06-05 23:53:30 +02:00
fcd6b81668 improve config handling 2016-06-05 23:53:01 +02:00
b84152aac2 fix typo 2016-06-05 23:27:19 +02:00
198b35b0c6 now keeping track of what has been done during a build 2016-06-05 23:24:11 +02:00
334713a344 2.1.29 2016-06-05 22:52:04 +02:00
36c4a676c7 now patching Dockerfiles to use local images during build 2016-06-05 22:51:59 +02:00
0571051009 start unclutter env 2016-06-05 21:11:30 +02:00
0d4fd9dbba 2.1.28 2016-06-05 20:51:21 +02:00
1e9c2c850c added automatic retrial of failed commands 2016-06-05 20:51:13 +02:00
2ae6fad2a1 2.1.27 2016-06-05 17:17:21 +02:00
d3dcc2f8ab now working 2016-06-05 17:17:15 +02:00
c718593162 add NpmciTest module tests 2016-06-05 16:56:07 +02:00
c9ba850b4b fix Test 2016-06-05 16:43:27 +02:00
faef4da6be now testing shell 2016-06-05 14:55:08 +02:00
3300f177ca introduce better shell interaction for testing 2016-06-05 14:33:59 +02:00
b2d56e59bb restore job queue 2016-06-05 14:28:45 +02:00
ee54cbf78d now patches local dependencies for multitag dependent docker builds 2016-06-05 14:27:56 +02:00
e3c1ac1897 started with tests 2016-06-05 13:50:45 +02:00
ea01b87949 start tests 2016-06-05 13:01:45 +02:00
229c3ae27b 2.1.26 2016-06-05 11:08:23 +02:00
19e3aa3721 better sorter function 2016-06-05 11:08:20 +02:00
a965cf38c8 2.1.25 2016-06-05 10:24:00 +02:00
7924ba26a2 now sorting Dockerfiles correctly 2016-06-05 10:23:55 +02:00
361d45e086 2.1.24 2016-06-05 10:11:07 +02:00
cb7cb852ea now sorting Dockerfiles correctly 2016-06-05 10:11:01 +02:00
61720f47be 2.1.23 2016-06-05 09:42:14 +02:00
b435fc6bdf update smartstring 2016-06-05 09:42:08 +02:00
70ad41ab86 fix gitlab.yml 2016-06-05 09:38:11 +02:00
d67109b4bc 2.1.22 2016-06-05 09:34:21 +02:00
a29e04f9e3 fix gitlab.yml 2016-06-05 09:33:51 +02:00
9634ca3b4d 2.1.21 2016-06-05 08:53:52 +02:00
d2e7488868 fix 2016-06-05 08:53:46 +02:00
bb44333d70 2.1.20 2016-06-05 08:30:12 +02:00
87f6adeda4 fix 2016-06-05 08:30:08 +02:00
6334396bfc 2.1.19 2016-06-05 08:19:59 +02:00
7a33252f2f fix 2016-06-05 08:19:03 +02:00
b7068b7b53 2.1.18 2016-06-05 08:06:35 +02:00
1e5b56a388 fix 2016-06-05 08:06:32 +02:00
786de4ae18 2.1.17 2016-06-05 08:00:53 +02:00
62ee8a26a4 fix 2016-06-05 08:00:46 +02:00
f544aef054 2.1.16 2016-06-05 07:50:11 +02:00
cb6867dbde fix 2016-06-05 07:50:04 +02:00
5316740a1a 2.1.15 2016-06-05 07:41:20 +02:00
06bc1e59f8 fix 2016-06-05 07:41:14 +02:00
bd237ccdab 2.1.14 2016-06-05 07:28:02 +02:00
f51b556fca fix 2016-06-05 07:27:58 +02:00
9ce29a7c24 improve .gitlab.yml 2016-06-05 07:24:21 +02:00
38 changed files with 812 additions and 223 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
node_modules/ node_modules/
coverage/ coverage/
docs/ docs/
config.json

View File

@@ -1,10 +1,14 @@
image: hosttoday/ht-docker-node:npmci image: hosttoday/ht-docker-node:lts
stages: stages:
- test - test
- release - release
- trigger - trigger
before_script:
- npm install -g npmci
testLTS: testLTS:
stage: test stage: test
script: script:
@@ -12,10 +16,6 @@ testLTS:
tags: tags:
- docker - docker
before_script:
- npm uninstall -g npmci
- npm install -g npmci
testSTABLE: testSTABLE:
stage: test stage: test
script: script:

View File

@@ -1,2 +1,5 @@
docs/ docs/
coverage/ coverage/
test/
node_modules/
config.json

View File

@@ -3,7 +3,6 @@ npmci is your friend when it comes to handling npm packages during CI builds. It
## Status ## Status
[![build status](https://gitlab.com/pushrocks/npmci/badges/master/build.svg)](https://gitlab.com/pushrocks/npmci/commits/master) [![build status](https://gitlab.com/pushrocks/npmci/badges/master/build.svg)](https://gitlab.com/pushrocks/npmci/commits/master)
[![Build status](https://ci.appveyor.com/api/projects/status/7h4qq2qtrke5a9vj/branch/master?svg=true)](https://ci.appveyor.com/project/philkunz/npmci/branch/master)
## Usage ## Usage
npmci is designed to work in docker CI environments. The following docker images come with npmci presinstalled: npmci is designed to work in docker CI environments. The following docker images come with npmci presinstalled:

View File

@@ -1,2 +1,3 @@
import "typings-global"; import "typings-global";
export declare let bash: (commandArg: any) => void; export declare let bash: (commandArg: string, retryArg?: number, bareArg?: boolean) => string;
export declare let bashBare: (commandArg: any, retryArg?: number) => string;

41
dist/npmci.bash.js vendored
View File

@@ -1,13 +1,44 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
var plugins = require("./npmci.plugins"); var plugins = require("./npmci.plugins");
exports.bash = function (commandArg) { exports.bash = function (commandArg, retryArg, bareArg) {
var exitCode = plugins.shelljs.exec("bash -c \"source /usr/local/nvm/nvm.sh &&" + if (retryArg === void 0) { retryArg = 2; }
if (bareArg === void 0) { bareArg = false; }
var exitCode;
var stdOut;
var execResult;
if (!process.env.NPMTS_TEST) {
for (var i = 0; i <= retryArg; i++) {
if (!bareArg) {
execResult = plugins.shelljs.exec("bash -c \"source /usr/local/nvm/nvm.sh &&" +
commandArg + commandArg +
"\"").code; "\"");
if (exitCode !== 0) { }
else {
execResult = plugins.shelljs.exec(bareArg);
}
exitCode = execResult.code;
stdOut = execResult.stdout;
if (exitCode !== 0 && i == retryArg) {
process.exit(1); process.exit(1);
} }
else if (exitCode == 0) {
i = retryArg + 1; // if everything works out ok retrials are not wanted
}
else {
plugins.beautylog.warn("Something went wrong! Exit Code: " + exitCode.toString());
plugins.beautylog.info("Retry " + (i + 1).toString() + " of " + retryArg.toString());
}
}
}
else {
plugins.beautylog.log("ShellExec would be: " + commandArg.blue);
}
return stdOut;
};
exports.bashBare = function (commandArg, retryArg) {
if (retryArg === void 0) { retryArg = 2; }
return exports.bash(commandArg, retryArg, true);
}; };
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmJhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQ2hDLFlBQUksR0FBRyxVQUFDLFVBQVU7SUFDekIsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQy9CLDJDQUEyQztRQUMzQyxVQUFVO1FBQ1YsSUFBSSxDQUNQLENBQUMsSUFBSSxDQUFDO0lBQ1AsRUFBRSxDQUFBLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDTCxDQUFDLENBQUEiLCJmaWxlIjoibnBtY2kuYmFzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL25wbWNpLnBsdWdpbnNcIjtcbmV4cG9ydCBsZXQgYmFzaCA9IChjb21tYW5kQXJnKSA9PiB7XG4gICAgbGV0IGV4aXRDb2RlID0gcGx1Z2lucy5zaGVsbGpzLmV4ZWMoXG4gICAgICAgIFwiYmFzaCAtYyBcXFwic291cmNlIC91c3IvbG9jYWwvbnZtL252bS5zaCAmJlwiICtcbiAgICAgICAgY29tbWFuZEFyZyArXG4gICAgICAgIFwiXFxcIlwiXG4gICAgKS5jb2RlO1xuICAgIGlmKGV4aXRDb2RlICE9PSAwKXtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbn0iXX0= //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmJhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRWhDLFlBQUksR0FBRyxVQUFDLFVBQWlCLEVBQUMsUUFBWSxFQUFDLE9BQWU7SUFBNUIsd0JBQVksR0FBWixZQUFZO0lBQUMsdUJBQWUsR0FBZixlQUFlO0lBQzdELElBQUksUUFBZSxDQUFDO0lBQ3BCLElBQUksTUFBYSxDQUFDO0lBQ2xCLElBQUksVUFBVSxDQUFDO0lBQ2YsRUFBRSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDeEIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUMsQ0FBQztZQUNoQyxFQUFFLENBQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUM7Z0JBQ1QsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM3QiwyQ0FBMkM7b0JBQzNDLFVBQVU7b0JBQ1YsSUFBSSxDQUNQLENBQUM7WUFDTixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUMzQixNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUMzQixFQUFFLENBQUEsQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFBLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFBLENBQUM7Z0JBQ3JCLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMscURBQXFEO1lBQzNFLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDbEYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sR0FBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMxRixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUE7QUFFVSxnQkFBUSxHQUFHLFVBQUMsVUFBVSxFQUFDLFFBQVk7SUFBWix3QkFBWSxHQUFaLFlBQVk7SUFDMUMsTUFBTSxDQUFDLFlBQUksQ0FBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQSIsImZpbGUiOiJucG1jaS5iYXNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuXG5leHBvcnQgbGV0IGJhc2ggPSAoY29tbWFuZEFyZzpzdHJpbmcscmV0cnlBcmcgPSAyLGJhcmVBcmcgPSBmYWxzZSkgPT4ge1xuICAgIGxldCBleGl0Q29kZTpudW1iZXI7XG4gICAgbGV0IHN0ZE91dDpzdHJpbmc7XG4gICAgbGV0IGV4ZWNSZXN1bHQ7XG4gICAgaWYoIXByb2Nlc3MuZW52Lk5QTVRTX1RFU1Qpe1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSByZXRyeUFyZzsgaSsrKXtcbiAgICAgICAgICAgIGlmKCFiYXJlQXJnKXtcbiAgICAgICAgICAgICAgICBleGVjUmVzdWx0ID0gcGx1Z2lucy5zaGVsbGpzLmV4ZWMoXG4gICAgICAgICAgICAgICAgICAgIFwiYmFzaCAtYyBcXFwic291cmNlIC91c3IvbG9jYWwvbnZtL252bS5zaCAmJlwiICtcbiAgICAgICAgICAgICAgICAgICAgY29tbWFuZEFyZyArXG4gICAgICAgICAgICAgICAgICAgIFwiXFxcIlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhlY1Jlc3VsdCA9IHBsdWdpbnMuc2hlbGxqcy5leGVjKGJhcmVBcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhpdENvZGUgPSBleGVjUmVzdWx0LmNvZGU7XG4gICAgICAgICAgICBzdGRPdXQgPSBleGVjUmVzdWx0LnN0ZG91dDtcbiAgICAgICAgICAgIGlmKGV4aXRDb2RlICE9PSAwICYmIGkgPT0gcmV0cnlBcmcpe1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZihleGl0Q29kZSA9PSAwKXtcbiAgICAgICAgICAgICAgICBpID0gcmV0cnlBcmcgKyAxOyAvLyBpZiBldmVyeXRoaW5nIHdvcmtzIG91dCBvayByZXRyaWFscyBhcmUgbm90IHdhbnRlZFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy53YXJuKFwiU29tZXRoaW5nIHdlbnQgd3JvbmchIEV4aXQgQ29kZTogXCIgKyBleGl0Q29kZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5pbmZvKFwiUmV0cnkgXCIgKyAoaSArIDEpLnRvU3RyaW5nKCkgKyBcIiBvZiBcIiArICByZXRyeUFyZy50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLmxvZyhcIlNoZWxsRXhlYyB3b3VsZCBiZTogXCIgKyBjb21tYW5kQXJnLmJsdWUpXG4gICAgfVxuICAgIHJldHVybiBzdGRPdXQ7XG59XG5cbmV4cG9ydCBsZXQgYmFzaEJhcmUgPSAoY29tbWFuZEFyZyxyZXRyeUFyZyA9IDIpID0+IHtcbiAgICByZXR1cm4gYmFzaChjb21tYW5kQXJnLHJldHJ5QXJnLHRydWUpO1xufSJdfQ==

View File

@@ -1,18 +1,40 @@
export declare let build: () => any; export declare let build: () => any;
export declare let readDockerfiles: () => any;
export declare let sortDockerfiles: (sortableArrayArg: Dockerfile[]) => any;
export declare let mapDockerfiles: (sortedArray: Dockerfile[]) => any;
export declare let buildDockerfiles: (sortedArrayArg: Dockerfile[]) => any;
export declare let pushDockerfiles: (sortedArrayArg: Dockerfile[]) => any;
export declare let pullDockerfileImages: (sortableArrayArg: Dockerfile[]) => any;
export declare let testDockerfiles: (sortedArrayArg: Dockerfile[]) => any;
export declare let releaseDockerfiles: (sortedArrayArg: Dockerfile[]) => any;
export declare class Dockerfile { export declare class Dockerfile {
filePath: string; filePath: string;
repo: string; repo: string;
version: string; version: string;
cleanTag: string; cleanTag: string;
buildTag: string; buildTag: string;
releaseTag: string;
containerName: string;
content: string; content: string;
patchedContent: string;
baseImage: string; baseImage: string;
localBaseImageDependent: boolean;
localBaseDockerfile: Dockerfile;
constructor(options: { constructor(options: {
filePath?: string; filePath?: string;
fileContents?: string | Buffer; fileContents?: string | Buffer;
read?: boolean; read?: boolean;
}); });
build(): void; build(): any;
push(): void; push(): any;
pull(): void;
test(): void;
release(): void;
getId(): string;
patchContents(): any;
restoreContents(): any;
} }
export declare let dockerTag: (repoArg: string, versionArg: string) => string; export declare let dockerFileVersion: (dockerfileNameArg: string) => string;
export declare let dockerBaseImage: (dockerfileContentArg: string) => string;
export declare let dockerTag: (repoArg: string, versionArg: string, stageArg: string) => string;
export declare let cleanTagsArrayFunction: (dockerfileArrayArg: Dockerfile[], trackingArrayArg: Dockerfile[]) => string[];

File diff suppressed because one or more lines are too long

6
dist/npmci.env.d.ts vendored
View File

@@ -2,8 +2,10 @@ import "typings-global";
import { GitRepo } from "smartstring"; import { GitRepo } from "smartstring";
import { Dockerfile } from "./npmci.build.docker"; import { Dockerfile } from "./npmci.build.docker";
export declare let repo: GitRepo; export declare let repo: GitRepo;
export declare let dockerTestTag: string; export declare let buildStage: string;
export declare let dockerReleaseTag: string;
export declare let dockerRegistry: any; export declare let dockerRegistry: any;
export declare let dockerFilesBuilt: Dockerfile[]; export declare let dockerFilesBuilt: Dockerfile[];
export declare let dockerFiles: Dockerfile[]; export declare let dockerFiles: Dockerfile[];
export declare let config: any;
export declare let configStore: () => void;
export declare let configLoad: () => void;

24
dist/npmci.env.js vendored
View File

@@ -1,8 +1,30 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
var plugins = require("./npmci.plugins");
var paths = require("./npmci.paths");
var smartstring_1 = require("smartstring"); var smartstring_1 = require("smartstring");
exports.repo = new smartstring_1.GitRepo(process.env.CI_BUILD_REPO); exports.repo = new smartstring_1.GitRepo(process.env.CI_BUILD_REPO);
exports.buildStage = process.env.CI_BUILD_STAGE;
exports.dockerFilesBuilt = []; exports.dockerFilesBuilt = [];
exports.dockerFiles = []; exports.dockerFiles = [];
exports.configStore = function () {
plugins.smartfile.memory.toFsSync(JSON.stringify(exports.config), {
fileName: "config.json",
filePath: paths.NpmciPackageRoot
});
};
exports.configLoad = function () {
try {
exports.config = plugins.smartfile.local.toObjectSync(paths.NpmciPackageConfig, "json");
}
catch (err) {
exports.config = {};
exports.configStore();
plugins.beautylog.log("config inititialized!");
}
exports.config.dockerRegistry ? exports.dockerRegistry = exports.config.dockerRegistry : void (0);
exports.config.dockerFilesBuilt ? exports.dockerFilesBuilt = exports.config.dockerFilesBuilt : void (0);
};
exports.configLoad();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmVudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBRXhCLDRCQUFzQixhQUFhLENBQUMsQ0FBQTtBQUd6QixZQUFJLEdBQUcsSUFBSSxxQkFBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFLOUMsd0JBQWdCLEdBQWdCLEVBQUUsQ0FBQztBQUNuQyxtQkFBVyxHQUFnQixFQUFFLENBQUMiLCJmaWxlIjoibnBtY2kuZW52LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuaW1wb3J0IHtHaXRSZXBvfSBmcm9tIFwic21hcnRzdHJpbmdcIjtcbmltcG9ydCB7RG9ja2VyZmlsZX0gZnJvbSBcIi4vbnBtY2kuYnVpbGQuZG9ja2VyXCJcblxuZXhwb3J0IGxldCByZXBvID0gbmV3IEdpdFJlcG8ocHJvY2Vzcy5lbnYuQ0lfQlVJTERfUkVQTyk7XG5leHBvcnQgbGV0IGRvY2tlclRlc3RUYWc6c3RyaW5nO1xuZXhwb3J0IGxldCBkb2NrZXJSZWxlYXNlVGFnOnN0cmluZztcblxuZXhwb3J0IGxldCBkb2NrZXJSZWdpc3RyeTsgLy8gd2lsbCBiZSBzZXQgYnkgbnBtY2kucHJlcGFyZVxuZXhwb3J0IGxldCBkb2NrZXJGaWxlc0J1aWx0OkRvY2tlcmZpbGVbXSA9IFtdO1xuZXhwb3J0IGxldCBkb2NrZXJGaWxlczpEb2NrZXJmaWxlW10gPSBbXTtcblxuIl19 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLmVudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLElBQVksT0FBTyxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFDM0MsSUFBWSxLQUFLLFdBQU0sZUFBZSxDQUFDLENBQUE7QUFDdkMsNEJBQXNCLGFBQWEsQ0FBQyxDQUFBO0FBR3pCLFlBQUksR0FBVyxJQUFJLHFCQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUV0RCxrQkFBVSxHQUFVLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO0FBSS9DLHdCQUFnQixHQUFnQixFQUFFLENBQUM7QUFDbkMsbUJBQVcsR0FBZ0IsRUFBRSxDQUFDO0FBSTlCLG1CQUFXLEdBQUc7SUFDckIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQU0sQ0FBQyxFQUN0QjtRQUNJLFFBQVEsRUFBQyxhQUFhO1FBQ3RCLFFBQVEsRUFBQyxLQUFLLENBQUMsZ0JBQWdCO0tBQ2xDLENBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQTtBQUVVLGtCQUFVLEdBQUc7SUFDcEIsSUFBSSxDQUFDO1FBQ0QsY0FBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkYsQ0FDQTtJQUFBLEtBQUssQ0FBQSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUM7UUFDUCxjQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osbUJBQVcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsY0FBTSxDQUFDLGNBQWMsR0FBRyxzQkFBYyxHQUFHLGNBQU0sQ0FBQyxjQUFjLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLGNBQU0sQ0FBQyxnQkFBZ0IsR0FBRyx3QkFBZ0IsR0FBRyxjQUFNLENBQUMsZ0JBQWdCLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQTtBQUNELGtCQUFVLEVBQUUsQ0FBQyIsImZpbGUiOiJucG1jaS5lbnYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0eXBpbmdzLWdsb2JhbFwiO1xuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi9ucG1jaS5wbHVnaW5zXCI7XG5pbXBvcnQgKiBhcyBwYXRocyBmcm9tIFwiLi9ucG1jaS5wYXRoc1wiO1xuaW1wb3J0IHtHaXRSZXBvfSBmcm9tIFwic21hcnRzdHJpbmdcIjtcbmltcG9ydCB7RG9ja2VyZmlsZX0gZnJvbSBcIi4vbnBtY2kuYnVpbGQuZG9ja2VyXCJcblxuZXhwb3J0IGxldCByZXBvOkdpdFJlcG8gPSBuZXcgR2l0UmVwbyhwcm9jZXNzLmVudi5DSV9CVUlMRF9SRVBPKTtcblxuZXhwb3J0IGxldCBidWlsZFN0YWdlOnN0cmluZyA9IHByb2Nlc3MuZW52LkNJX0JVSUxEX1NUQUdFO1xuXG4vLyBoYW5kbGluZyBjb25maWcgYmV0d2VlbiBjb21tYW5kc1xuZXhwb3J0IGxldCBkb2NrZXJSZWdpc3RyeTsgLy8gd2lsbCBiZSBzZXQgYnkgbnBtY2kucHJlcGFyZVxuZXhwb3J0IGxldCBkb2NrZXJGaWxlc0J1aWx0OkRvY2tlcmZpbGVbXSA9IFtdO1xuZXhwb3J0IGxldCBkb2NrZXJGaWxlczpEb2NrZXJmaWxlW10gPSBbXTtcblxuZXhwb3J0IGxldCBjb25maWc7XG5cbmV4cG9ydCBsZXQgY29uZmlnU3RvcmUgPSAoKSA9PiB7XG4gICAgcGx1Z2lucy5zbWFydGZpbGUubWVtb3J5LnRvRnNTeW5jKFxuICAgICAgICBKU09OLnN0cmluZ2lmeShjb25maWcpLFxuICAgICAgICB7XG4gICAgICAgICAgICBmaWxlTmFtZTpcImNvbmZpZy5qc29uXCIsXG4gICAgICAgICAgICBmaWxlUGF0aDpwYXRocy5OcG1jaVBhY2thZ2VSb290XG4gICAgICAgIH1cbiAgICApO1xufVxuXG5leHBvcnQgbGV0IGNvbmZpZ0xvYWQgPSAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uZmlnID0gcGx1Z2lucy5zbWFydGZpbGUubG9jYWwudG9PYmplY3RTeW5jKHBhdGhzLk5wbWNpUGFja2FnZUNvbmZpZyxcImpzb25cIik7XG4gICAgfVxuICAgIGNhdGNoKGVycil7XG4gICAgICAgIGNvbmZpZyA9IHt9O1xuICAgICAgICBjb25maWdTdG9yZSgpO1xuICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5sb2coXCJjb25maWcgaW5pdGl0aWFsaXplZCFcIik7XG4gICAgfVxuICAgIFxuICAgIGNvbmZpZy5kb2NrZXJSZWdpc3RyeSA/IGRvY2tlclJlZ2lzdHJ5ID0gY29uZmlnLmRvY2tlclJlZ2lzdHJ5IDogdm9pZCgwKTtcbiAgICBjb25maWcuZG9ja2VyRmlsZXNCdWlsdCA/IGRvY2tlckZpbGVzQnVpbHQgPSBjb25maWcuZG9ja2VyRmlsZXNCdWlsdCA6IHZvaWQoMCk7XG59XG5jb25maWdMb2FkKCk7Il19

3
dist/npmci.get.js vendored
View File

@@ -1,3 +0,0 @@
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJucG1jaS5nZXQuanMiLCJzb3VyY2VzQ29udGVudCI6W119

5
dist/npmci.paths.d.ts vendored Normal file
View File

@@ -0,0 +1,5 @@
import "typings-global";
export declare let cwd: string;
export declare let NpmciPackageRoot: string;
export declare let NpmciPackageConfig: string;
export declare let NpmciProjectDir: string;

9
dist/npmci.paths.js vendored Normal file
View File

@@ -0,0 +1,9 @@
"use strict";
require("typings-global");
var plugins = require("./npmci.plugins");
exports.cwd = process.cwd();
exports.NpmciPackageRoot = plugins.path.join(__dirname, "../");
exports.NpmciPackageConfig = plugins.path.join(exports.NpmciPackageRoot, "./config.json");
exports.NpmciProjectDir = process.cwd();
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnBhdGhzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsSUFBWSxPQUFPLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUVoQyxXQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBRXBCLHdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztBQUN0RCwwQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBZ0IsRUFBQyxlQUFlLENBQUMsQ0FBQztBQUN6RSx1QkFBZSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyIsImZpbGUiOiJucG1jaS5wYXRocy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL25wbWNpLnBsdWdpbnNcIjtcblxuZXhwb3J0IGxldCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuXG5leHBvcnQgbGV0IE5wbWNpUGFja2FnZVJvb3QgPSBwbHVnaW5zLnBhdGguam9pbihfX2Rpcm5hbWUsXCIuLi9cIik7XG5leHBvcnQgbGV0IE5wbWNpUGFja2FnZUNvbmZpZyA9IHBsdWdpbnMucGF0aC5qb2luKE5wbWNpUGFja2FnZVJvb3QsXCIuL2NvbmZpZy5qc29uXCIpO1xuZXhwb3J0IGxldCBOcG1jaVByb2plY3REaXIgPSBwcm9jZXNzLmN3ZCgpOyJdfQ==

View File

@@ -10,3 +10,4 @@ export declare let shelljs: any;
export import smartssh = require("smartssh"); export import smartssh = require("smartssh");
export import smartstring = require("smartstring"); export import smartstring = require("smartstring");
export import smartfile = require("smartfile"); export import smartfile = require("smartfile");
export declare let through2: any;

View File

@@ -11,5 +11,6 @@ exports.shelljs = require("shelljs");
exports.smartssh = require("smartssh"); exports.smartssh = require("smartssh");
exports.smartstring = require("smartstring"); exports.smartstring = require("smartstring");
exports.smartfile = require("smartfile"); exports.smartfile = require("smartfile");
exports.through2 = require("through2");
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUNWLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsaUJBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakMsWUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixvQkFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNyQyxZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDMUIsU0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixlQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLGVBQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUIsZ0JBQVEsV0FBVyxVQUFVLENBQUMsQ0FBQztBQUMvQixtQkFBVyxXQUFXLGFBQWEsQ0FBQyxDQUFDO0FBQ3JDLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUMiLCJmaWxlIjoibnBtY2kucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5leHBvcnQgaW1wb3J0IGJlYXV0eWxvZyA9IHJlcXVpcmUoXCJiZWF1dHlsb2dcIik7XG5leHBvcnQgbGV0IGNvbW1hbmRlciA9IHJlcXVpcmUoXCJjb21tYW5kZXJcIik7XG5leHBvcnQgbGV0IGd1bHAgPSByZXF1aXJlKFwiZ3VscFwiKTtcbmV4cG9ydCBsZXQgZ3VscEZ1bmN0aW9uID0gcmVxdWlyZShcImd1bHAtZnVuY3Rpb25cIik7XG5leHBvcnQgaW1wb3J0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmV4cG9ydCBsZXQgcSA9IHJlcXVpcmUoXCJxXCIpO1xuZXhwb3J0IGxldCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XG5leHBvcnQgbGV0IHNoZWxsanMgPSByZXF1aXJlKFwic2hlbGxqc1wiKTtcbmV4cG9ydCBpbXBvcnQgc21hcnRzc2ggPSByZXF1aXJlKFwic21hcnRzc2hcIik7XG5leHBvcnQgaW1wb3J0IHNtYXJ0c3RyaW5nID0gcmVxdWlyZShcInNtYXJ0c3RyaW5nXCIpO1xuZXhwb3J0IGltcG9ydCBzbWFydGZpbGUgPSByZXF1aXJlKFwic21hcnRmaWxlXCIpOyJdfQ== //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUNWLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsaUJBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakMsWUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixvQkFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNyQyxZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDMUIsU0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixlQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLGVBQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUIsZ0JBQVEsV0FBVyxVQUFVLENBQUMsQ0FBQztBQUMvQixtQkFBVyxXQUFXLGFBQWEsQ0FBQyxDQUFDO0FBQ3JDLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsZ0JBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMiLCJmaWxlIjoibnBtY2kucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5leHBvcnQgaW1wb3J0IGJlYXV0eWxvZyA9IHJlcXVpcmUoXCJiZWF1dHlsb2dcIik7XG5leHBvcnQgbGV0IGNvbW1hbmRlciA9IHJlcXVpcmUoXCJjb21tYW5kZXJcIik7XG5leHBvcnQgbGV0IGd1bHAgPSByZXF1aXJlKFwiZ3VscFwiKTtcbmV4cG9ydCBsZXQgZ3VscEZ1bmN0aW9uID0gcmVxdWlyZShcImd1bHAtZnVuY3Rpb25cIik7XG5leHBvcnQgaW1wb3J0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmV4cG9ydCBsZXQgcSA9IHJlcXVpcmUoXCJxXCIpO1xuZXhwb3J0IGxldCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XG5leHBvcnQgbGV0IHNoZWxsanMgPSByZXF1aXJlKFwic2hlbGxqc1wiKTtcbmV4cG9ydCBpbXBvcnQgc21hcnRzc2ggPSByZXF1aXJlKFwic21hcnRzc2hcIik7XG5leHBvcnQgaW1wb3J0IHNtYXJ0c3RyaW5nID0gcmVxdWlyZShcInNtYXJ0c3RyaW5nXCIpO1xuZXhwb3J0IGltcG9ydCBzbWFydGZpbGUgPSByZXF1aXJlKFwic21hcnRmaWxlXCIpO1xuZXhwb3J0IGxldCB0aHJvdWdoMiA9IHJlcXVpcmUoXCJ0aHJvdWdoMlwiKTsiXX0=

File diff suppressed because one or more lines are too long

19
dist/npmci.publish.js vendored
View File

@@ -3,7 +3,7 @@ require("typings-global");
var plugins = require("./npmci.plugins"); var plugins = require("./npmci.plugins");
var npmci_prepare_1 = require("./npmci.prepare"); var npmci_prepare_1 = require("./npmci.prepare");
var npmci_bash_1 = require("./npmci.bash"); var npmci_bash_1 = require("./npmci.bash");
var NpmciEnv = require("./npmci.env"); var NpmciBuildDocker = require("./npmci.build.docker");
exports.publish = function (serviceArg) { exports.publish = function (serviceArg) {
if (serviceArg === void 0) { serviceArg = "npm"; } if (serviceArg === void 0) { serviceArg = "npm"; }
switch (serviceArg) { switch (serviceArg) {
@@ -25,18 +25,11 @@ var publishNpm = function () {
}; };
var publishDocker = function () { var publishDocker = function () {
var done = plugins.q.defer(); var done = plugins.q.defer();
NpmciEnv.dockerFilesBuilt.forEach(function (dockerfileArg) { NpmciBuildDocker.readDockerfiles()
dockerfileArg.push(); .then(NpmciBuildDocker.pullDockerfileImages)
}); .then(NpmciBuildDocker.releaseDockerfiles)
return done.promise; .then(done.resolve);
};
var publishDockerTest = function () {
var done = plugins.q.defer();
NpmciEnv.dockerFilesBuilt.forEach(function (dockerfileArg) {
dockerfileArg.push();
});
done.resolve();
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDhCQUFzQixpQkFBaUIsQ0FBQyxDQUFBO0FBQ3hDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUNsQyxJQUFZLFFBQVEsV0FBTSxhQUFhLENBQUMsQ0FBQTtBQUU3QixlQUFPLEdBQUcsVUFBQyxVQUF5QjtJQUF6QiwwQkFBeUIsR0FBekIsa0JBQXlCO0lBQzNDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDaEIsS0FBSyxLQUFLO1lBQ04sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssUUFBUTtZQUNULE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMvQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsSUFBSSxVQUFVLEdBQUk7SUFDZCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLHVCQUFPLENBQUMsS0FBSyxDQUFDO1NBQ1QsSUFBSSxDQUFDO1FBQ0YsaUJBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBRTtRQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN2QixDQUFDLENBQUE7QUFFRCxJQUFJLGFBQWEsR0FBRztJQUNoQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBUyxhQUFhO1FBQ3BELGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLElBQUksaUJBQWlCLEdBQUc7SUFDcEIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVMsYUFBYTtRQUNwRCxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUEiLCJmaWxlIjoibnBtY2kucHVibGlzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL25wbWNpLnBsdWdpbnNcIjtcbmltcG9ydCB7cHJlcGFyZX0gZnJvbSBcIi4vbnBtY2kucHJlcGFyZVwiO1xuaW1wb3J0IHtiYXNofSBmcm9tIFwiLi9ucG1jaS5iYXNoXCI7XG5pbXBvcnQgKiBhcyBOcG1jaUVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcblxuZXhwb3J0IGxldCBwdWJsaXNoID0gKHNlcnZpY2VBcmc6c3RyaW5nID0gXCJucG1cIikgPT4ge1xuICAgIHN3aXRjaCAoc2VydmljZUFyZyl7XG4gICAgICAgIGNhc2UgXCJucG1cIjogXG4gICAgICAgICAgICByZXR1cm4gcHVibGlzaE5wbSgpO1xuICAgICAgICBjYXNlIFwiZG9ja2VyXCI6XG4gICAgICAgICAgICByZXR1cm4gcHVibGlzaERvY2tlcigpO1xuICAgIH1cbn07XG5cbmxldCBwdWJsaXNoTnBtICA9IGZ1bmN0aW9uKCl7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBwcmVwYXJlKFwibnBtXCIpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBiYXNoKFwibnBtIHB1Ymxpc2hcIik7XG4gICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5vayhcIkRvbmUhXCIpIDtcbiAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgIHJldHVybiBkb25lLnByb21pc2U7XG59XG5cbmxldCBwdWJsaXNoRG9ja2VyID0gZnVuY3Rpb24oKXtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIE5wbWNpRW52LmRvY2tlckZpbGVzQnVpbHQuZm9yRWFjaChmdW5jdGlvbihkb2NrZXJmaWxlQXJnKXtcbiAgICAgICAgZG9ja2VyZmlsZUFyZy5wdXNoKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcbn07XG5cbmxldCBwdWJsaXNoRG9ja2VyVGVzdCA9IGZ1bmN0aW9uKCl7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBOcG1jaUVudi5kb2NrZXJGaWxlc0J1aWx0LmZvckVhY2goZnVuY3Rpb24oZG9ja2VyZmlsZUFyZyl7XG4gICAgICAgIGRvY2tlcmZpbGVBcmcucHVzaCgpO1xuICAgIH0pO1xuICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59Il19 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDhCQUFzQixpQkFBaUIsQ0FBQyxDQUFBO0FBQ3hDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUVsQyxJQUFZLGdCQUFnQixXQUFNLHNCQUVsQyxDQUFDLENBRnVEO0FBRTdDLGVBQU8sR0FBRyxVQUFDLFVBQXlCO0lBQXpCLDBCQUF5QixHQUF6QixrQkFBeUI7SUFDM0MsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQztRQUNoQixLQUFLLEtBQUs7WUFDTixNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEIsS0FBSyxRQUFRO1lBQ1QsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixJQUFJLFVBQVUsR0FBSTtJQUNkLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsdUJBQU8sQ0FBQyxLQUFLLENBQUM7U0FDVCxJQUFJLENBQUM7UUFDRixpQkFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFFO1FBQy9CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDLENBQUMsQ0FBQztJQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQTtBQUVELElBQUksYUFBYSxHQUFHO0lBQ2hCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsZ0JBQWdCLENBQUMsZUFBZSxFQUFFO1NBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztTQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7U0FDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUMiLCJmaWxlIjoibnBtY2kucHVibGlzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL25wbWNpLnBsdWdpbnNcIjtcbmltcG9ydCB7cHJlcGFyZX0gZnJvbSBcIi4vbnBtY2kucHJlcGFyZVwiO1xuaW1wb3J0IHtiYXNofSBmcm9tIFwiLi9ucG1jaS5iYXNoXCI7XG5pbXBvcnQgKiBhcyBOcG1jaUVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcbmltcG9ydCAqIGFzIE5wbWNpQnVpbGREb2NrZXIgZnJvbSBcIi4vbnBtY2kuYnVpbGQuZG9ja2VyXCJcblxuZXhwb3J0IGxldCBwdWJsaXNoID0gKHNlcnZpY2VBcmc6c3RyaW5nID0gXCJucG1cIikgPT4ge1xuICAgIHN3aXRjaCAoc2VydmljZUFyZyl7XG4gICAgICAgIGNhc2UgXCJucG1cIjogXG4gICAgICAgICAgICByZXR1cm4gcHVibGlzaE5wbSgpO1xuICAgICAgICBjYXNlIFwiZG9ja2VyXCI6XG4gICAgICAgICAgICByZXR1cm4gcHVibGlzaERvY2tlcigpO1xuICAgIH1cbn07XG5cbmxldCBwdWJsaXNoTnBtICA9IGZ1bmN0aW9uKCl7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBwcmVwYXJlKFwibnBtXCIpXG4gICAgICAgIC50aGVuKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBiYXNoKFwibnBtIHB1Ymxpc2hcIik7XG4gICAgICAgICAgICBwbHVnaW5zLmJlYXV0eWxvZy5vayhcIkRvbmUhXCIpIDtcbiAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgIHJldHVybiBkb25lLnByb21pc2U7XG59XG5cbmxldCBwdWJsaXNoRG9ja2VyID0gZnVuY3Rpb24oKXtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgICAgICBOcG1jaUJ1aWxkRG9ja2VyLnJlYWREb2NrZXJmaWxlcygpXG4gICAgICAgIC50aGVuKE5wbWNpQnVpbGREb2NrZXIucHVsbERvY2tlcmZpbGVJbWFnZXMpXG4gICAgICAgIC50aGVuKE5wbWNpQnVpbGREb2NrZXIucmVsZWFzZURvY2tlcmZpbGVzKVxuICAgICAgICAudGhlbihkb25lLnJlc29sdmUpO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59OyJdfQ==

1
dist/npmci.test.docker.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
export declare let testDocker: () => void;

5
dist/npmci.test.docker.js vendored Normal file
View File

@@ -0,0 +1,5 @@
"use strict";
exports.testDocker = function () {
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnRlc3QuZG9ja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFLVyxrQkFBVSxHQUFHO0FBRXhCLENBQUMsQ0FBQyIsImZpbGUiOiJucG1jaS50ZXN0LmRvY2tlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiXG5pbXBvcnQgKiBhcyBOcG1jaUVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcbmltcG9ydCB7YmFzaEJhcmV9IGZyb20gXCIuL25wbWNpLmJhc2hcIjtcbmltcG9ydCAqIGFzIE5wbWNpQnVpbGREb2NrZXIgZnJvbSBcIi4vbnBtY2kuYnVpbGQuZG9ja2VyXCI7XG5cbmV4cG9ydCBsZXQgdGVzdERvY2tlciA9ICgpID0+IHtcblxufTsiXX0=

19
dist/npmci.test.js vendored
View File

@@ -3,6 +3,7 @@ require("typings-global");
var plugins = require("./npmci.plugins"); var plugins = require("./npmci.plugins");
var npmci_bash_1 = require("./npmci.bash"); var npmci_bash_1 = require("./npmci.bash");
var npmci_install_1 = require("./npmci.install"); var npmci_install_1 = require("./npmci.install");
var NpmciBuildDocker = require("./npmci.build.docker");
exports.test = function (versionArg) { exports.test = function (versionArg) {
var done = plugins.q.defer(); var done = plugins.q.defer();
if (versionArg == "docker") { if (versionArg == "docker") {
@@ -14,10 +15,8 @@ exports.test = function (versionArg) {
else { else {
npmci_install_1.install(versionArg) npmci_install_1.install(versionArg)
.then(npmDependencies) .then(npmDependencies)
.then(npmTest)
.then(function () { .then(function () {
plugins.beautylog.info("now starting tests:");
npmci_bash_1.bash("npm test");
plugins.beautylog.success("test finished");
done.resolve(); done.resolve();
}); });
} }
@@ -30,10 +29,20 @@ var npmDependencies = function () {
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
var testDocker = function () { var npmTest = function () {
var done = plugins.q.defer(); var done = plugins.q.defer();
plugins.beautylog.info("now starting tests:");
npmci_bash_1.bash("npm test");
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
var testDocker = function () {
var done = plugins.q.defer();
NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.testDockerfiles)
.then(done.resolve);
return done.promise;
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUNsQyw4QkFBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUc3QixZQUFJLEdBQUcsVUFBQyxVQUFVO0lBQ3pCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsRUFBRSxDQUFBLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxDQUFBLENBQUM7UUFDdkIsVUFBVSxFQUFFO2FBQ1AsSUFBSSxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osdUJBQU8sQ0FBQyxVQUFVLENBQUM7YUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDO2FBQ3JCLElBQUksQ0FBQztZQUNGLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDOUMsaUJBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqQixPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxlQUFlLEdBQUc7SUFDbEIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELGlCQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxVQUFVLEdBQUc7SUFDYixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBRTdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQSIsImZpbGUiOiJucG1jaS50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuaW1wb3J0IHtiYXNofSBmcm9tIFwiLi9ucG1jaS5iYXNoXCI7XG5pbXBvcnQge2luc3RhbGx9IGZyb20gXCIuL25wbWNpLmluc3RhbGxcIjtcbmltcG9ydCAqIGFzIGVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcblxuZXhwb3J0IGxldCB0ZXN0ID0gKHZlcnNpb25BcmcpID0+IHtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIGlmKHZlcnNpb25BcmcgPT0gXCJkb2NrZXJcIil7XG4gICAgICAgIHRlc3REb2NrZXIoKVxuICAgICAgICAgICAgLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3RhbGwodmVyc2lvbkFyZylcbiAgICAgICAgICAgIC50aGVuKG5wbURlcGVuZGVuY2llcylcbiAgICAgICAgICAgIC50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cuaW5mbyhcIm5vdyBzdGFydGluZyB0ZXN0czpcIik7XG4gICAgICAgICAgICAgICAgYmFzaChcIm5wbSB0ZXN0XCIpO1xuICAgICAgICAgICAgICAgIHBsdWdpbnMuYmVhdXR5bG9nLnN1Y2Nlc3MoXCJ0ZXN0IGZpbmlzaGVkXCIpO1xuICAgICAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59XG5cbmxldCBucG1EZXBlbmRlbmNpZXMgPSBmdW5jdGlvbigpe1xuICAgIGxldCBkb25lID0gcGx1Z2lucy5xLmRlZmVyKCk7XG4gICAgcGx1Z2lucy5iZWF1dHlsb2cuaW5mbyhcIm5vdyBpbnN0YWxsaW5nIGRlcGVuZGVuY2llczpcIik7XG4gICAgYmFzaChcIm5wbSBpbnN0YWxsXCIpO1xuICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59XG5cbmxldCB0ZXN0RG9ja2VyID0gZnVuY3Rpb24oKXtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIFxuICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59XG5cbiJdfQ== //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5wbWNpLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixJQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDJCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUNsQyw4QkFBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxJQUFZLGdCQUFnQixXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFFOUMsWUFBSSxHQUFHLFVBQUMsVUFBVTtJQUN6QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLEVBQUUsQ0FBQSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQSxDQUFDO1FBQ3ZCLFVBQVUsRUFBRTthQUNQLElBQUksQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLHVCQUFPLENBQUMsVUFBVSxDQUFDO2FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2IsSUFBSSxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVELElBQUksZUFBZSxHQUFHO0lBQ2xCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxpQkFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVELElBQUksT0FBTyxHQUFHO0lBQ1YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlDLGlCQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxVQUFVLEdBQUc7SUFDYixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLGdCQUFnQixDQUFDLGVBQWUsRUFBRTtTQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7U0FDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztTQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQSIsImZpbGUiOiJucG1jaS50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vbnBtY2kucGx1Z2luc1wiO1xuaW1wb3J0IHtiYXNofSBmcm9tIFwiLi9ucG1jaS5iYXNoXCI7XG5pbXBvcnQge2luc3RhbGx9IGZyb20gXCIuL25wbWNpLmluc3RhbGxcIjtcbmltcG9ydCAqIGFzIGVudiBmcm9tIFwiLi9ucG1jaS5lbnZcIjtcbmltcG9ydCAqIGFzIE5wbWNpQnVpbGREb2NrZXIgZnJvbSBcIi4vbnBtY2kuYnVpbGQuZG9ja2VyXCI7XG5cbmV4cG9ydCBsZXQgdGVzdCA9ICh2ZXJzaW9uQXJnKSA9PiB7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBpZih2ZXJzaW9uQXJnID09IFwiZG9ja2VyXCIpe1xuICAgICAgICB0ZXN0RG9ja2VyKClcbiAgICAgICAgICAgIC50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgZG9uZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0YWxsKHZlcnNpb25BcmcpXG4gICAgICAgICAgICAudGhlbihucG1EZXBlbmRlbmNpZXMpXG4gICAgICAgICAgICAudGhlbihucG1UZXN0KVxuICAgICAgICAgICAgLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufVxuXG5sZXQgbnBtRGVwZW5kZW5jaWVzID0gZnVuY3Rpb24oKXtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIHBsdWdpbnMuYmVhdXR5bG9nLmluZm8oXCJub3cgaW5zdGFsbGluZyBkZXBlbmRlbmNpZXM6XCIpO1xuICAgIGJhc2goXCJucG0gaW5zdGFsbFwiKTtcbiAgICBkb25lLnJlc29sdmUoKTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufVxuXG5sZXQgbnBtVGVzdCA9ICgpID0+IHtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIHBsdWdpbnMuYmVhdXR5bG9nLmluZm8oXCJub3cgc3RhcnRpbmcgdGVzdHM6XCIpO1xuICAgIGJhc2goXCJucG0gdGVzdFwiKTtcbiAgICBkb25lLnJlc29sdmUoKTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufVxuXG5sZXQgdGVzdERvY2tlciA9IGZ1bmN0aW9uKCl7XG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBOcG1jaUJ1aWxkRG9ja2VyLnJlYWREb2NrZXJmaWxlcygpXG4gICAgICAgIC50aGVuKE5wbWNpQnVpbGREb2NrZXIucHVsbERvY2tlcmZpbGVJbWFnZXMpXG4gICAgICAgIC50aGVuKE5wbWNpQnVpbGREb2NrZXIudGVzdERvY2tlcmZpbGVzKVxuICAgICAgICAudGhlbihkb25lLnJlc29sdmUpXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcbn1cblxuIl19

View File

@@ -1,6 +1,6 @@
{ {
"name": "npmci", "name": "npmci",
"version": "2.1.13", "version": "2.1.35",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {
@@ -20,7 +20,9 @@
}, },
"homepage": "https://gitlab.com/pushrocks/npmci#README", "homepage": "https://gitlab.com/pushrocks/npmci#README",
"devDependencies": { "devDependencies": {
"npmts": "^5.2.1" "npmts": "^5.2.1",
"should": "^9.0.0",
"typings-test": "^1.0.1"
}, },
"dependencies": { "dependencies": {
"beautylog": "^5.0.8", "beautylog": "^5.0.8",
@@ -32,7 +34,7 @@
"shelljs": "^0.7.0", "shelljs": "^0.7.0",
"smartfile": "^3.0.10", "smartfile": "^3.0.10",
"smartssh": "^1.0.5", "smartssh": "^1.0.5",
"smartstring": "^2.0.4", "smartstring": "^2.0.6",
"through2": "^2.0.1", "through2": "^2.0.1",
"typings-global": "^1.0.3" "typings-global": "^1.0.3"
} }

2
test/assets/Dockerfile Normal file
View File

@@ -0,0 +1,2 @@
FROM ubuntu
RUN apt-get update

View File

@@ -0,0 +1,2 @@
FROM mygroup/myrepo:sometag2
RUN apt-get update

View File

@@ -0,0 +1 @@
FROM mygroup/myrepo:latest

2
test/test.d.ts vendored Normal file
View File

@@ -0,0 +1,2 @@
import "typings-test";
import "should";

83
test/test.js Normal file

File diff suppressed because one or more lines are too long

83
test/test.ts Normal file
View File

@@ -0,0 +1,83 @@
import "typings-test";
import "should";
import path = require("path");
import * as beautylog from "beautylog"
//set up environment
process.env.CI_BUILD_REPO = "https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git";
process.env.NPMTS_TEST = "true";
process.cwd = () => {
return path.join(__dirname,"assets/");
};
//require NPMCI files
import NpmciBuildDocker = require("../dist/npmci.build.docker");
import NpmciPublish = require("../dist/npmci.publish");
import NpmciTest = require("../dist/npmci.test");
let dockerfile1:NpmciBuildDocker.Dockerfile;
let dockerfile2:NpmciBuildDocker.Dockerfile;
let sortableArray:NpmciBuildDocker.Dockerfile[];
describe("NPMCI",function(){
describe("build.docker",function(){
it("should return valid Dockerfiles",function(){
dockerfile1 = new NpmciBuildDocker.Dockerfile({filePath:"./Dockerfile",read:true});
dockerfile2 = new NpmciBuildDocker.Dockerfile({filePath:"./Dockerfile_sometag1",read:true});
dockerfile1.version.should.equal("latest");
dockerfile2.version.should.equal("sometag1");
});
it("should read a directory of Dockerfiles",function(done){
NpmciBuildDocker.readDockerfiles()
.then(function(readDockerfilesArrayArg:NpmciBuildDocker.Dockerfile[]){
readDockerfilesArrayArg[1].version.should.equal("sometag1");
sortableArray = readDockerfilesArrayArg
done();
});
})
it("should sort an array of Dockerfiles",function(done){
NpmciBuildDocker.sortDockerfiles(sortableArray)
.then(function(sortedArrayArg:NpmciBuildDocker.Dockerfile[]){
beautylog.success("final result");
console.log(sortedArrayArg);
done();
})
});
it("should correctly chain Dockerfile handling",function(done){
NpmciBuildDocker.build()
.then(()=>{
done();
});
})
});
describe(".publish.docker",function(){
it("should publish all built Dockerfiles",function(done){
NpmciPublish.publish("docker")
.then(() => {
done();
});;
});
});
describe(".test.npm",function(){
it("should source nvm using bash and install a specific node version, then test it",function(done){
NpmciTest.test("legacy")
.then(() => {
return NpmciTest.test("lts");
})
.then(() => {
return NpmciTest.test("stable");
})
.then(() => {
done();
});
})
});
describe("test.docker",function(){
it("should test dockerfiles",function(done){
NpmciTest.test("docker")
.then(() => {
done();
});
})
});
})

View File

@@ -1,12 +1,38 @@
import "typings-global"; import "typings-global";
import * as plugins from "./npmci.plugins"; import * as plugins from "./npmci.plugins";
export let bash = (commandArg) => {
let exitCode = plugins.shelljs.exec( export let bash = (commandArg:string,retryArg = 2,bareArg = false) => {
let exitCode:number;
let stdOut:string;
let execResult;
if(!process.env.NPMTS_TEST){
for (let i = 0; i <= retryArg; i++){
if(!bareArg){
execResult = plugins.shelljs.exec(
"bash -c \"source /usr/local/nvm/nvm.sh &&" + "bash -c \"source /usr/local/nvm/nvm.sh &&" +
commandArg + commandArg +
"\"" "\""
).code; );
if(exitCode !== 0){ } else {
execResult = plugins.shelljs.exec(bareArg);
}
exitCode = execResult.code;
stdOut = execResult.stdout;
if(exitCode !== 0 && i == retryArg){
process.exit(1); process.exit(1);
} else if(exitCode == 0){
i = retryArg + 1; // if everything works out ok retrials are not wanted
} else {
plugins.beautylog.warn("Something went wrong! Exit Code: " + exitCode.toString());
plugins.beautylog.info("Retry " + (i + 1).toString() + " of " + retryArg.toString());
} }
} }
} else {
plugins.beautylog.log("ShellExec would be: " + commandArg.blue)
}
return stdOut;
}
export let bashBare = (commandArg,retryArg = 2) => {
return bash(commandArg,retryArg,true);
}

View File

@@ -1,68 +1,121 @@
import * as plugins from "./npmci.plugins" import * as plugins from "./npmci.plugins";
import * as paths from "./npmci.paths";
import * as NpmciEnv from "./npmci.env"; import * as NpmciEnv from "./npmci.env";
import {bashBare} from "./npmci.bash";
export let build = function(){ export let build = function(){
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.gulp.dest("./Dockerfile*") readDockerfiles()
.pipe(readDockerfiles()) .then(sortDockerfiles)
.pipe(plugins.gulpFunction(function(){ .then(mapDockerfiles)
sortDockerfiles()
.then(buildDockerfiles) .then(buildDockerfiles)
.then(done.resolve); .then(pushDockerfiles)
},"atEnd")); .then(() => {
done.resolve();
});
return done.promise; return done.promise;
} }
let readDockerfiles = function(){ export let readDockerfiles = function(){
return plugins.trhough2(function(file,enc,cb){ let done = plugins.q.defer();
let readDockerfilesArray:Dockerfile[] = []
plugins.gulp.src("./Dockerfile*")
.pipe(plugins.through2.obj(function(file,enc,cb){
let myDockerfile = new Dockerfile({ let myDockerfile = new Dockerfile({
filePath:file.path, filePath:file.path,
read:true read:true
}); });
NpmciEnv.dockerFiles.push( readDockerfilesArray.push(myDockerfile);
myDockerfile
);
cb(null,file); cb(null,file);
}); },function(){
} done.resolve(readDockerfilesArray);
}));
let sortDockerfiles = function(){
let done = plugins.q.defer();
let redoSort:boolean;
let sortFunction = function(){
redoSort = false;
let notYetBuiltImages:string[] = [];
NpmciEnv.dockerFiles.forEach((dockerFileArg)=>{
notYetBuiltImages.push(dockerFileArg.cleanTag);
});
NpmciEnv.dockerFiles.sort(function(a,b){
plugins.beautylog.log("sort build order for Dockerimages");
let aIndex = notYetBuiltImages.indexOf(a.cleanTag);
if(aIndex != -1){notYetBuiltImages.splice(aIndex,1)}
if(notYetBuiltImages.indexOf(b.cleanTag) != -1){
redoSort = true;
return -1;
} else {
return 0
}
});
if(redoSort){
sortFunction();
} else {
done.resolve();
}
};
sortFunction();
return done.promise; return done.promise;
} }
let buildDockerfiles = function(){ export let sortDockerfiles = function(sortableArrayArg:Dockerfile[]){
let done = plugins.q.defer(); let done = plugins.q.defer();
NpmciEnv.dockerFiles.forEach(function(dockerfileArg){ let sortedArray:Dockerfile[] = [];
let trackingArray:Dockerfile[] = [];
let sorterFunctionCounter:number = 0;
let sorterFunction = function(){
sortableArrayArg.forEach((dockerfileArg)=>{
let cleanTags = cleanTagsArrayFunction(sortableArrayArg,trackingArray);
if(cleanTags.indexOf(dockerfileArg.baseImage) == -1 && trackingArray.indexOf(dockerfileArg) == -1){
sortedArray.push(dockerfileArg);
trackingArray.push(dockerfileArg);
} else if(cleanTags.indexOf(dockerfileArg.baseImage) != -1){
dockerfileArg.localBaseImageDependent = true;
};
});
if(sortableArrayArg.length == sortedArray.length){
done.resolve(sortedArray);
} else if (sorterFunctionCounter < 10) {
sorterFunctionCounter++;
sorterFunction();
};
}
sorterFunction();
return done.promise;
};
export let mapDockerfiles = function(sortedArray:Dockerfile[]){
let done = plugins.q.defer();
sortedArray.forEach((dockerfileArg) => {
if(dockerfileArg.localBaseImageDependent){
sortedArray.forEach((dockfile2:Dockerfile) => {
if(dockfile2.cleanTag == dockerfileArg.baseImage){
dockerfileArg.localBaseDockerfile = dockfile2;
}
})
};
});
done.resolve(sortedArray);
return done.promise;
}
export let buildDockerfiles = (sortedArrayArg:Dockerfile[]) => {
let done = plugins.q.defer();
sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.build(); dockerfileArg.build();
}) })
done.resolve(); done.resolve(sortedArrayArg);
return done.promise;
}
export let pushDockerfiles = function(sortedArrayArg:Dockerfile[]){
let done = plugins.q.defer();
sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.push();
});
done.resolve(sortedArrayArg);
return done.promise;
}
export let pullDockerfileImages = (sortableArrayArg:Dockerfile[]) => {
let done = plugins.q.defer();
sortableArrayArg.forEach((dockerfileArg) => {
dockerfileArg.pull();
});
done.resolve(sortableArrayArg);
return done.promise;
}
export let testDockerfiles = (sortedArrayArg:Dockerfile[]) => {
let done = plugins.q.defer();
sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.test();
});
done.resolve(sortedArrayArg);
return done.promise;
};
export let releaseDockerfiles = (sortedArrayArg:Dockerfile[]) => {
let done = plugins.q.defer();
sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.release();
});
done.resolve(sortedArrayArg);
return done.promise; return done.promise;
} }
@@ -72,43 +125,105 @@ export class Dockerfile {
version:string; version:string;
cleanTag:string; cleanTag:string;
buildTag:string; buildTag:string;
releaseTag:string;
containerName:string
content:string; content:string;
patchedContent:string;
baseImage:string; baseImage:string;
localBaseImageDependent:boolean;
localBaseDockerfile:Dockerfile;
constructor(options:{filePath?:string,fileContents?:string|Buffer,read?:boolean}){ constructor(options:{filePath?:string,fileContents?:string|Buffer,read?:boolean}){
this.filePath = options.filePath; this.filePath = options.filePath;
this.repo = NpmciEnv.repo.user + "/" + NpmciEnv.repo.repo; this.repo = NpmciEnv.repo.user + "/" + NpmciEnv.repo.repo;
this.version = dockerFileVersion(plugins.path.parse(options.filePath).base); this.version = dockerFileVersion(plugins.path.parse(options.filePath).base);
this.cleanTag = this.repo + ":" + this.version; this.cleanTag = this.repo + ":" + this.version;
this.buildTag = dockerTag(this.repo,this.version,"build");
this.releaseTag = dockerTag(this.repo,this.version,"release");
this.containerName = "dockerfile-" + this.version;
if(options.filePath && options.read){ if(options.filePath && options.read){
this.content = plugins.smartfile.local.toStringSync(plugins.path.resolve(options.filePath)); this.content = plugins.smartfile.local.toStringSync(plugins.path.resolve(options.filePath));
}; };
this.baseImage = dockerBaseImage(this.content); this.baseImage = dockerBaseImage(this.content);
this.localBaseImageDependent = false;
}; };
build(){ build(){
if(!this.buildTag){ let done = plugins.q.defer();
let tag = dockerTag(this.repo,this.version); this.patchContents();
plugins.shelljs.exec("docker build -t " + tag + " -f " + this.filePath + " ."); bashBare("docker build -t " + this.buildTag + " -f " + this.filePath + " .");
this.buildTag = tag;
NpmciEnv.dockerFilesBuilt.push(this); NpmciEnv.dockerFilesBuilt.push(this);
} else { this.restoreContents();
plugins.beautylog.error("This Dockerfile already has been built!"); done.resolve();
} return done.promise;
}; };
push(){ push(){
let done = plugins.q.defer();
if(this.buildTag){ if(this.buildTag){
plugins.shelljs.exec("docker push " + this.buildTag); bashBare("docker push " + this.buildTag);
} else { } else {
plugins.beautylog.error("Dockerfile hasn't been built yet!"); plugins.beautylog.error("Dockerfile hasn't been built yet!");
} }
done.resolve();
return done.promise;
} }
pull(){
bashBare("docker pull " + this.buildTag);
};
test(){
let testExists = plugins.smartfile.checks.fileExistsSync(
plugins.path.join(paths.NpmciProjectDir,("./test/test_" + this.version + ".sh"))
);
if(testExists){
bashBare("docker run -v " +
plugins.path.join(paths.NpmciProjectDir,"./test") + ":/test/ " +
"--name " + this.containerName + " /test/" + "test_" + this.version + ".sh");
} else {
plugins.beautylog.warn("skipping tests for " + this.cleanTag + " because no testfile was found!");
}
};
release(){
bashBare("docker tag " + this.getId() + " " + this.releaseTag);
bashBare("docker push " + this.releaseTag);
}
getId(){
let containerId = bashBare("docker inspect --format=\"{{.Id}}\" " + this.buildTag);
return containerId;
};
patchContents(){
let done = plugins.q.defer();
if(this.localBaseImageDependent == true){
this.patchedContent = this.content.replace(/FROM\s[a-zA-Z0-9\/\-\:]*/, 'FROM ' + this.localBaseDockerfile.buildTag);
plugins.smartfile.memory.toFsSync(
this.patchedContent,
{
fileName:plugins.path.parse(this.filePath).name,
filePath:plugins.path.parse(this.filePath).dir
}
);
}
done.resolve();
return done.promise;
};
restoreContents(){
let done = plugins.q.defer();
if(this.localBaseImageDependent == true){
plugins.smartfile.memory.toFsSync(
this.content,
{
fileName:plugins.path.parse(this.filePath).name,
filePath:plugins.path.parse(this.filePath).dir
}
);
}
done.resolve();
return done.promise;
};
} }
let dockerFileVersion = function(dockerfileNameArg:string):string{ export let dockerFileVersion = function(dockerfileNameArg:string):string{
let versionString:string; let versionString:string;
let versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/; let versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/;
let regexResultArray = versionRegex.exec(dockerfileNameArg); let regexResultArray = versionRegex.exec(dockerfileNameArg);
if(regexResultArray.length = 2){ if(regexResultArray && regexResultArray.length == 2){
versionString = regexResultArray[1]; versionString = regexResultArray[1];
} else { } else {
versionString = "latest"; versionString = "latest";
@@ -116,23 +231,33 @@ let dockerFileVersion = function(dockerfileNameArg:string):string{
return versionString; return versionString;
} }
let dockerBaseImage = function(dockerfileContentArg:string){ export let dockerBaseImage = function(dockerfileContentArg:string){
let baseImageRegex = /FROM\s([a-zA-z0-9\/\-\:]*)\n/ let baseImageRegex = /FROM\s([a-zA-z0-9\/\-\:]*)\n?/
let regexResultArray = baseImageRegex.exec(dockerfileContentArg) let regexResultArray = baseImageRegex.exec(dockerfileContentArg)
return regexResultArray[1]; return regexResultArray[1];
} }
export let dockerTag = function(repoArg:string,versionArg:string):string{ export let dockerTag = function(repoArg:string,versionArg:string,stageArg:string):string{
let tagString:string; let tagString:string;
let registry = NpmciEnv.dockerRegistry; let registry = NpmciEnv.dockerRegistry;
if(process.env.CI_BUILD_STAGE == "test"){ if(stageArg == "build" || stageArg == "test"){
registry = "registry.gitlab.com"; registry = "registry.gitlab.com";
} }
let repo = repoArg; let repo = repoArg;
let version = versionArg; let version = versionArg;
if(process.env.CI_BUILD_STAGE == "test" || process.env.CI_BUILD_STAGE == "build"){ if(NpmciEnv.buildStage == "build" || NpmciEnv.buildStage == "test"){
version = version + "_test"; version = version + "_test";
} }
tagString = registry + "/" + repo + ":" + version; tagString = registry + "/" + repo + ":" + version;
return tagString; return tagString;
}; };
export let cleanTagsArrayFunction = function(dockerfileArrayArg:Dockerfile[],trackingArrayArg:Dockerfile[]):string[]{
let cleanTagsArray:string[] = [];
dockerfileArrayArg.forEach(function(dockerfileArg){
if(trackingArrayArg.indexOf(dockerfileArg) == -1){
cleanTagsArray.push(dockerfileArg.cleanTag);
}
});
return cleanTagsArray;
}

View File

@@ -1,13 +1,41 @@
import "typings-global"; import "typings-global";
import * as plugins from "./npmci.plugins"; import * as plugins from "./npmci.plugins";
import * as paths from "./npmci.paths";
import {GitRepo} from "smartstring"; import {GitRepo} from "smartstring";
import {Dockerfile} from "./npmci.build.docker" import {Dockerfile} from "./npmci.build.docker"
export let repo = new GitRepo(process.env.CI_BUILD_REPO); export let repo:GitRepo = new GitRepo(process.env.CI_BUILD_REPO);
export let dockerTestTag:string;
export let dockerReleaseTag:string;
export let buildStage:string = process.env.CI_BUILD_STAGE;
// handling config between commands
export let dockerRegistry; // will be set by npmci.prepare export let dockerRegistry; // will be set by npmci.prepare
export let dockerFilesBuilt:Dockerfile[] = []; export let dockerFilesBuilt:Dockerfile[] = [];
export let dockerFiles:Dockerfile[] = []; export let dockerFiles:Dockerfile[] = [];
export let config;
export let configStore = () => {
plugins.smartfile.memory.toFsSync(
JSON.stringify(config),
{
fileName:"config.json",
filePath:paths.NpmciPackageRoot
}
);
}
export let configLoad = () => {
try {
config = plugins.smartfile.local.toObjectSync(paths.NpmciPackageConfig,"json");
}
catch(err){
config = {};
configStore();
plugins.beautylog.log("config inititialized!");
}
config.dockerRegistry ? dockerRegistry = config.dockerRegistry : void(0);
config.dockerFilesBuilt ? dockerFilesBuilt = config.dockerFilesBuilt : void(0);
}
configLoad();

View File

8
ts/npmci.paths.ts Normal file
View File

@@ -0,0 +1,8 @@
import "typings-global";
import * as plugins from "./npmci.plugins";
export let cwd = process.cwd();
export let NpmciPackageRoot = plugins.path.join(__dirname,"../");
export let NpmciPackageConfig = plugins.path.join(NpmciPackageRoot,"./config.json");
export let NpmciProjectDir = process.cwd();

View File

@@ -10,3 +10,4 @@ export let shelljs = require("shelljs");
export import smartssh = require("smartssh"); export import smartssh = require("smartssh");
export import smartstring = require("smartstring"); export import smartstring = require("smartstring");
export import smartfile = require("smartfile"); export import smartfile = require("smartfile");
export let through2 = require("through2");

View File

@@ -29,6 +29,7 @@ let docker = function(){
plugins.beautylog.error("You have to specify Login Data to the Docker Registry"); plugins.beautylog.error("You have to specify Login Data to the Docker Registry");
process.exit(1); process.exit(1);
} }
plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com"); // Always also login to GitLab Registry
let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER); let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER);
let username = dockerRegexResultArray[1]; let username = dockerRegexResultArray[1];
let password = dockerRegexResultArray[2]; let password = dockerRegexResultArray[2];
@@ -40,8 +41,7 @@ let docker = function(){
let dockerGitlab = function(){ let dockerGitlab = function(){
let done = plugins.q.defer(); let done = plugins.q.defer();
env.dockerRegistry = "registry.gitlab.com"; env.dockerRegistry = "registry.gitlab.com";
let ciBuildToken = process.env.CI_BUILD_TOKEN plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com");
plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + ciBuildToken + " " + env.dockerRegistry);
done.resolve(); done.resolve();
return done.promise; return done.promise;
} }
@@ -51,8 +51,7 @@ export let prepare = function(serviceArg:string){
case "npm": case "npm":
return npm(); return npm();
case "docker": case "docker":
return docker() return docker();
.then(dockerGitlab); // always also login to gitlab registry for tests
case "docker-gitlab": case "docker-gitlab":
return dockerGitlab() return dockerGitlab()
default: default:

View File

@@ -3,6 +3,7 @@ import * as plugins from "./npmci.plugins";
import {prepare} from "./npmci.prepare"; import {prepare} from "./npmci.prepare";
import {bash} from "./npmci.bash"; import {bash} from "./npmci.bash";
import * as NpmciEnv from "./npmci.env"; import * as NpmciEnv from "./npmci.env";
import * as NpmciBuildDocker from "./npmci.build.docker"
export let publish = (serviceArg:string = "npm") => { export let publish = (serviceArg:string = "npm") => {
switch (serviceArg){ switch (serviceArg){
@@ -26,17 +27,9 @@ let publishNpm = function(){
let publishDocker = function(){ let publishDocker = function(){
let done = plugins.q.defer(); let done = plugins.q.defer();
NpmciEnv.dockerFilesBuilt.forEach(function(dockerfileArg){ NpmciBuildDocker.readDockerfiles()
dockerfileArg.push(); .then(NpmciBuildDocker.pullDockerfileImages)
}); .then(NpmciBuildDocker.releaseDockerfiles)
.then(done.resolve);
return done.promise; return done.promise;
}; };
let publishDockerTest = function(){
let done = plugins.q.defer();
NpmciEnv.dockerFilesBuilt.forEach(function(dockerfileArg){
dockerfileArg.push();
});
done.resolve();
return done.promise;
}

8
ts/npmci.test.docker.ts Normal file
View File

@@ -0,0 +1,8 @@
import * as plugins from "./npmci.plugins"
import * as NpmciEnv from "./npmci.env";
import {bashBare} from "./npmci.bash";
import * as NpmciBuildDocker from "./npmci.build.docker";
export let testDocker = () => {
};

View File

@@ -3,6 +3,7 @@ import * as plugins from "./npmci.plugins";
import {bash} from "./npmci.bash"; import {bash} from "./npmci.bash";
import {install} from "./npmci.install"; import {install} from "./npmci.install";
import * as env from "./npmci.env"; import * as env from "./npmci.env";
import * as NpmciBuildDocker from "./npmci.build.docker";
export let test = (versionArg) => { export let test = (versionArg) => {
let done = plugins.q.defer(); let done = plugins.q.defer();
@@ -14,10 +15,8 @@ export let test = (versionArg) => {
} else { } else {
install(versionArg) install(versionArg)
.then(npmDependencies) .then(npmDependencies)
.then(npmTest)
.then(()=>{ .then(()=>{
plugins.beautylog.info("now starting tests:");
bash("npm test");
plugins.beautylog.success("test finished");
done.resolve(); done.resolve();
}); });
} }
@@ -32,10 +31,20 @@ let npmDependencies = function(){
return done.promise; return done.promise;
} }
let testDocker = function(){ let npmTest = () => {
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.info("now starting tests:");
bash("npm test");
done.resolve(); done.resolve();
return done.promise; return done.promise;
} }
let testDocker = function(){
let done = plugins.q.defer();
NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.testDockerfiles)
.then(done.resolve)
return done.promise;
}