Compare commits

...

80 Commits

Author SHA1 Message Date
e835a17fe4 2.3.41 2017-02-19 14:46:14 +01:00
b86b090c07 update dependencies and add yarn 2017-02-19 14:46:05 +01:00
97d2a8d1b7 improve gitlab.yml 2017-02-08 23:44:47 +01:00
38e54f13ff 2.3.40 2017-02-08 21:32:49 +01:00
a11233ddb6 update package.json 2017-02-08 21:32:45 +01:00
7cfd5e4358 update links 2017-02-08 21:32:22 +01:00
431371db5a 2.3.39 2016-12-15 01:09:00 +01:00
e784c02a40 now correctly evaluating which output 2016-12-15 01:08:54 +01:00
f156b58b95 2.3.38 2016-12-15 00:06:15 +01:00
40a00cb1b0 readd logging 2016-12-15 00:06:11 +01:00
0f384a799a 2.3.37 2016-12-14 23:10:57 +01:00
d2f4512ca4 compile 2016-12-14 23:10:54 +01:00
Phil Kunz
ee7e7e2551 Merge branch 'master' into 'master'
fix tool Installation and bash without error.

See merge request !1
2016-12-14 22:03:00 +00:00
Philipp Kunz
4c3d284186 Update npmci.bash.ts 2016-12-14 16:45:48 +00:00
Philipp Kunz
5a472326ad Update npmci.install.ts 2016-12-14 16:38:57 +00:00
5021ee099d 2.3.36 2016-12-13 23:16:22 +01:00
cd7363625d now logging path 2016-12-13 23:16:19 +01:00
399168f5d0 2.3.35 2016-12-11 16:34:16 +01:00
a272556ccd improve README 2016-12-11 16:33:56 +01:00
172b9f9b3f 2.3.34 2016-12-11 16:20:33 +01:00
9eb3d1d06a fix README 2016-12-11 16:20:29 +01:00
4093675a9d 2.3.33 2016-12-11 16:19:46 +01:00
53a2fb4c78 update README 2016-12-11 16:19:25 +01:00
59ed6829e4 2.3.32 2016-12-10 23:27:37 +01:00
4e01b0c9b6 improve logs 2016-12-10 23:27:34 +01:00
85a6099d56 2.3.31 2016-12-10 22:43:16 +01:00
787145816a fix npm global Tool installation 2016-12-10 22:43:14 +01:00
b194bf2a0e 2.3.30 2016-12-10 22:28:30 +01:00
407d9f8237 fixup globalNpmTools 2016-12-10 22:28:27 +01:00
ec196e1d53 add base picture to README 2016-11-25 22:46:14 +01:00
305fc6e68e 2.3.29 2016-11-25 22:44:51 +01:00
35a7a83ee6 fix global install of needed tools 2016-11-25 22:44:49 +01:00
165000144c 2.3.28 2016-11-25 22:34:32 +01:00
77a4cd7a12 now checking if tool already installed 2016-11-25 22:34:28 +01:00
9822a9c867 2.3.27 2016-11-25 14:29:11 +01:00
a1209c74dd 2.3.26 2016-11-25 14:15:48 +01:00
d9f517cf46 fix cli usage 2016-11-25 14:15:44 +01:00
1e976372fa 2.3.25 2016-11-25 13:43:38 +01:00
733a35b789 improve install handling of needed global tools 2016-11-25 13:43:35 +01:00
07deb7497a 2.3.24 2016-11-25 13:26:02 +01:00
2096e27fc5 fixed 16 file Buffer overflow 2016-11-25 13:25:45 +01:00
301a317fa0 update 2016-11-25 00:07:20 +01:00
299d2567f8 test 2016-11-24 23:21:40 +01:00
09c7dae079 2.3.23 2016-11-17 23:02:45 +01:00
19c118e166 fix gitlab-ci 2016-11-17 23:02:37 +01:00
c0a5057a0d 2.3.22 2016-11-15 22:47:23 +01:00
cfdce55c9b fixed node versions 2016-11-15 22:47:21 +01:00
a364fcb961 2.3.21 2016-11-15 21:57:42 +01:00
dfb8b43559 update node versions 2016-11-15 21:57:18 +01:00
3da8e60149 change to loglevel warn 2016-11-15 13:02:56 +01:00
509b97548c 2.3.20 2016-11-15 13:00:07 +01:00
6dda67bf37 add silent install 2016-11-15 12:59:36 +01:00
1e4dd1554c update script 2016-11-15 12:55:45 +01:00
4db221ea2d update tests 2016-11-15 00:18:32 +01:00
0e63c17fc2 2.3.19 2016-11-15 00:07:58 +01:00
0427368cfa update deps and node version 2016-11-15 00:07:55 +01:00
da180b090c 2.3.18 2016-09-20 12:43:42 +02:00
22d7e83b8d update node versions 2016-09-20 12:43:37 +02:00
bb910f9fab 2.3.17 2016-09-04 19:49:48 +02:00
420c39dd5f fix ci 2016-09-04 19:49:38 +02:00
7d4c80ed04 2.3.16 2016-09-04 17:57:00 +02:00
5858682946 improve typings 2016-09-04 17:56:56 +02:00
c4aa3a8926 update commnts 2016-09-04 16:05:47 +02:00
f0e62c06e8 2.3.15 2016-09-04 13:42:34 +02:00
61ee70ea8d update docs and comments, add servezone compatibility 2016-09-04 13:42:22 +02:00
66bef3cd60 2.3.14 2016-08-02 23:11:57 +02:00
28054b17fc update nvm detection 2016-08-02 23:11:42 +02:00
8736530920 2.3.13 2016-08-02 16:20:35 +02:00
2d9c225d28 start shift to making bare bash obsolete 2016-08-02 16:20:32 +02:00
236df3388f test 2016-07-18 19:18:19 +02:00
0406998e92 test 2016-07-18 18:55:34 +02:00
4e865e7bef test 2016-07-18 18:53:17 +02:00
62e4dd23d2 2.3.12 2016-07-18 18:51:34 +02:00
2962c5f8f9 now using global npmts 2016-07-18 18:50:58 +02:00
7e506b8e69 2.3.11 2016-07-18 18:43:07 +02:00
26400b8153 update base image for CI 2016-07-18 18:43:01 +02:00
a94e1771a4 2.3.10 2016-07-18 18:39:07 +02:00
0213afa46e updated setter for environment module to comply with JS standards 2016-07-18 18:39:04 +02:00
6f4138e536 2.3.9 2016-07-18 17:20:27 +02:00
5c5ca3ebf0 recompile 2016-07-18 17:20:24 +02:00
65 changed files with 4223 additions and 909 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,5 @@
node_modules/ node_modules/
coverage/ coverage/
docs/ pages/
public/
config.json config.json

View File

@@ -1,24 +1,29 @@
image: hosttoday/ht-docker-node:lts image: node:latest
stages: stages:
- test - test
- release - release
- trigger - trigger
- page
before_script: before_script:
- npm install -g npmci - npm install npmci -q -g
testLTS: testLTS:
stage: test stage: test
script: script:
- npmci test stable - npmci install lts
- npmci command npm install -g -q npmts
- npmci test lts
tags: tags:
- docker - docker
testSTABLE: testSTABLE:
stage: test stage: test
script: script:
- npmci install stable
- npmci command npm install -g -q npmts
- npmci test stable - npmci test stable
tags: tags:
- docker - docker
@@ -26,7 +31,9 @@ testSTABLE:
testLEGACY: testLEGACY:
stage: test stage: test
script: script:
- npmci test stable - npmci install legacy
- npmci command npm install -g -q npmts
- npmci test legacy
tags: tags:
- docker - docker
allow_failure: true allow_failure: true
@@ -48,3 +55,16 @@ trigger:
- tags - tags
tags: tags:
- docker - docker
pages:
stage: page
script:
- npmci test stable
- npmci command npm install -g -q npmpage
- npmci command npmpage --host gitlab
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public

View File

@@ -1,4 +1,4 @@
docs/ pages/
coverage/ coverage/
test/ test/
node_modules/ node_modules/

View File

@@ -1,8 +1,20 @@
# NPMCI # NPMCI
npmci is your friend when it comes to handling npm packages during CI builds. It is optimized for GitLab CI npmci is your friend when it comes to handling npm packages during CI builds. It is optimized for GitLab CI
## Status ## Availabililty
[![build status](https://gitlab.com/pushrocks/npmci/badges/master/build.svg)](https://gitlab.com/pushrocks/npmci/commits/master) [![npm](https://gitzone.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/npmci)
[![git](https://gitzone.gitlab.io/assets/repo-button-git.svg)](https://gitlab.com/gitzone/npmci)
[![git](https://gitzone.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/gitzone/npmci)
[![docs](https://gitzone.gitlab.io/assets/repo-button-docs.svg)](https://gitzone.gitlab.io/npmci/docs)
## Status for master
[![build status](https://gitlab.com/gitzone/npmci/badges/master/build.svg)](https://gitlab.com/gitzone/npmci/commits/master)
[![coverage report](https://gitlab.com/gitzone/npmci/badges/master/coverage.svg)](https://gitlab.com/gitzone/npmci/commits/master)
[![Dependency Status](https://david-dm.org/gitzonetools/npmci.svg)](https://david-dm.org/gitzonetools/npmci)
[![bitHound Dependencies](https://www.bithound.io/github/gitzonetools/npmci/badges/dependencies.svg)](https://www.bithound.io/github/gitzonetools/npmci/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/gitzonetools/npmci/badges/code.svg)](https://www.bithound.io/github/gitzonetools/npmci)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
## 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:
@@ -38,8 +50,8 @@ npmci prepare docker-gitlab # will authenticate docker for gitlab container regi
# build containers # build containers
npmci build docker # will build containers npmci build docker # will build containers
## all Dockerfiles named DOckerfile* are picked up. ## all Dockerfiles named Dockerfile* are picked up.
## specify tags lake this Dockerfile_[tag] ## specify tags like this Dockerfile_[tag]
## uploads all built images as [username]/[reponame]:[tag]_test to GitLab ## uploads all built images as [username]/[reponame]:[tag]_test to GitLab
## then test in next step with "npmci test docker" ## then test in next step with "npmci test docker"
@@ -51,3 +63,28 @@ npmci publish docker
npmci trigger # will look for NPMCI_TRIGGER_1 to NPMCI_TRIGGER_100 in form domain|id|token|ref|name npmci trigger # will look for NPMCI_TRIGGER_1 to NPMCI_TRIGGER_100 in form domain|id|token|ref|name
``` ```
## Configuration
npmci supports the use of npmextra.
To configure npmci create a `npmextra.json` file at the root of your project
```json
{
"npmci": {
"globalNpmTools": [
"npm-check-updates",
"protractor",
"npmts",
"gitzone"
]
}
}
```
**Available options**
setting | example | description
--- | --- | ---
globalNpmTools | "globalNpmTools": ["gitbook"] | Will look for the specified package names locally and (if not yet present) install them from npm.
[![npm](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

View File

@@ -1,10 +0,0 @@
environment:
nodejs_version: "4"
install:
- ps: Install-Product node $env:nodejs_version
- npm install
test_script:
- node --version
- npm --version
- npm test
build: off

2
dist/cli.js vendored Normal file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env node
var index = require("../dist/index.js");

7
dist/index.d.ts vendored
View File

@@ -1,4 +1,3 @@
import "typings-global"; export { build } from './npmci.build';
export { build } from "./npmci.build"; export { install } from './npmci.install';
export { install } from "./npmci.install"; export { publish } from './npmci.publish';
export { publish } from "./npmci.publish";

46
dist/index.js vendored
View File

@@ -1,10 +1,8 @@
#!/usr/bin/env node
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const paths = require("./npmci.paths"); const paths = require("./npmci.paths");
let npmciInfo = new plugins.projectinfo.ProjectinfoNpm(paths.NpmciPackageRoot); let npmciInfo = new plugins.projectinfo.ProjectinfoNpm(paths.NpmciPackageRoot);
plugins.beautylog.log("npmci version: " + npmciInfo.version); plugins.beautylog.log('npmci version: ' + npmciInfo.version);
const npmci_build_1 = require("./npmci.build"); const npmci_build_1 = require("./npmci.build");
const npmci_clean_1 = require("./npmci.clean"); const npmci_clean_1 = require("./npmci.clean");
const npmci_command_1 = require("./npmci.command"); const npmci_command_1 = require("./npmci.command");
@@ -23,59 +21,51 @@ exports.publish = npmci_publish_2.publish;
let smartcli = new plugins.smartcli.Smartcli(); let smartcli = new plugins.smartcli.Smartcli();
smartcli.addVersion(npmciInfo.version); smartcli.addVersion(npmciInfo.version);
// build // build
smartcli.addCommand({ smartcli.addCommand('build')
commandName: "build" .then((argv) => {
}).then((argv) => {
npmci_build_1.build(argv._[1]) npmci_build_1.build(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore);
}); });
// clean // clean
smartcli.addCommand({ smartcli.addCommand('clean')
commandName: "clean" .then((argv) => {
}).then((argv) => {
npmci_clean_1.clean() npmci_clean_1.clean()
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore);
}); });
// command // command
smartcli.addCommand({ smartcli.addCommand('command')
commandName: "command" .then((argv) => {
}).then((argv) => {
npmci_command_1.command() npmci_command_1.command()
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore);
}); });
// install // install
smartcli.addCommand({ smartcli.addCommand('install')
commandName: "install" .then((argv) => {
}).then((argv) => {
npmci_install_1.install(argv._[1]) npmci_install_1.install(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore);
}); });
// prepare // prepare
smartcli.addCommand({ smartcli.addCommand('prepare')
commandName: "prepare" .then((argv) => {
}).then((argv) => {
npmci_prepare_1.prepare(argv._[1]) npmci_prepare_1.prepare(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore);
}); });
// publish // publish
smartcli.addCommand({ smartcli.addCommand('publish')
commandName: "publish" .then((argv) => {
}).then((argv) => {
npmci_publish_1.publish(argv._[1]) npmci_publish_1.publish(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore);
}); });
// test // test
smartcli.addCommand({ smartcli.addCommand('test')
commandName: "test" .then((argv) => {
}).then((argv) => {
npmci_test_1.test(argv._[1]) npmci_test_1.test(argv._[1])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore);
}); });
// trigger // trigger
smartcli.addCommand({ smartcli.addCommand('trigger')
commandName: "trigger" .then((argv) => {
}).then((argv) => {
npmci_trigger_1.trigger(); npmci_trigger_1.trigger();
}); });
smartcli.startParse(); smartcli.startParse();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLE1BQVksS0FBSyxXQUFNLGVBQWUsQ0FBQyxDQUFBO0FBQ3ZDLElBQUksU0FBUyxHQUFHLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDL0UsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRTdELDhCQUFvQixlQUNwQixDQUFDLENBRGtDO0FBQ25DLDhCQUFvQixlQUFlLENBQUMsQ0FBQTtBQUNwQyxnQ0FBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUN4QyxnQ0FBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUN4QyxnQ0FBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUN4QyxnQ0FBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUN4Qyw2QkFBbUIsY0FBYyxDQUFDLENBQUE7QUFDbEMsZ0NBQXNCLGlCQUFpQixDQUFDLENBQUE7QUFDeEMsTUFBWSxRQUFRLFdBQU0sYUFBYSxDQUFDLENBQUE7QUFFeEMsNEJBQW9CLGVBQ3BCLENBQUM7QUFETyxvQ0FBMkI7QUFDbkMsOEJBQXNCLGlCQUFpQixDQUFDO0FBQWhDLDBDQUFnQztBQUN4Qyw4QkFBc0IsaUJBQWlCLENBQUM7QUFBaEMsMENBQWdDO0FBR3hDLElBQUksUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMvQyxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUV2QyxRQUFRO0FBQ1IsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNoQixXQUFXLEVBQUMsT0FBTztDQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtJQUNULG1CQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRO0FBQ1IsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNoQixXQUFXLEVBQUMsT0FBTztDQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtJQUNULG1CQUFLLEVBQUU7U0FDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxDQUFDO0FBRUgsVUFBVTtBQUNWLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDaEIsV0FBVyxFQUFDLFNBQVM7Q0FDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUk7SUFDVCx1QkFBTyxFQUFFO1NBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQztBQUVILFVBQVU7QUFDVixRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2hCLFdBQVcsRUFBQyxTQUFTO0NBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsdUJBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQztBQUVILFVBQVU7QUFDVixRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2hCLFdBQVcsRUFBQyxTQUFTO0NBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsdUJBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQztBQUVILFVBQVU7QUFDVixRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2hCLFdBQVcsRUFBQyxTQUFTO0NBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsdUJBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQztBQUVILE9BQU87QUFDUCxRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2hCLFdBQVcsRUFBQyxNQUFNO0NBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsaUJBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQztBQUVILFVBQVU7QUFDVixRQUFRLENBQUMsVUFBVSxDQUFDO0lBQ2hCLFdBQVcsRUFBQyxTQUFTO0NBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsdUJBQU8sRUFBRSxDQUFDO0FBQ2QsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTBDO0FBQzFDLHVDQUFzQztBQUN0QyxJQUFJLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQzlFLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUU1RCwrQ0FBcUM7QUFDckMsK0NBQXFDO0FBQ3JDLG1EQUF5QztBQUN6QyxtREFBeUM7QUFDekMsbURBQXlDO0FBQ3pDLG1EQUF5QztBQUN6Qyw2Q0FBbUM7QUFDbkMsbURBQXlDO0FBQ3pDLHdDQUF1QztBQUV2Qyw2Q0FBcUM7QUFBNUIsOEJBQUEsS0FBSyxDQUFBO0FBQ2QsaURBQTBDO0FBQWpDLGtDQUFBLE9BQU8sQ0FBQTtBQUNoQixpREFBMEM7QUFBakMsa0NBQUEsT0FBTyxDQUFBO0FBRWhCLElBQUksUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtBQUM5QyxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUV0QyxRQUFRO0FBQ1IsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7S0FDekIsSUFBSSxDQUFDLENBQUMsSUFBSTtJQUNULG1CQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUUsQ0FBQztTQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDL0IsQ0FBQyxDQUFDLENBQUE7QUFFSixRQUFRO0FBQ1IsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7S0FDekIsSUFBSSxDQUFDLENBQUMsSUFBSTtJQUNULG1CQUFLLEVBQUU7U0FDSixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQy9CLENBQUMsQ0FBQyxDQUFBO0FBRUosVUFBVTtBQUNWLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0tBQzNCLElBQUksQ0FBQyxDQUFDLElBQUk7SUFDVCx1QkFBTyxFQUFFO1NBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUMvQixDQUFDLENBQUMsQ0FBQTtBQUVKLFVBQVU7QUFDVixRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztLQUMzQixJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsdUJBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBRSxDQUFDO1NBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDL0IsQ0FBQyxDQUFDLENBQUE7QUFFSixVQUFVO0FBQ1YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7S0FDM0IsSUFBSSxDQUFDLENBQUMsSUFBSTtJQUNULHVCQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUUsQ0FBQztTQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBQy9CLENBQUMsQ0FBQyxDQUFBO0FBRUosVUFBVTtBQUNWLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0tBQzNCLElBQUksQ0FBQyxDQUFDLElBQUk7SUFDVCx1QkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFFLENBQUM7U0FDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUMvQixDQUFDLENBQUMsQ0FBQTtBQUVKLE9BQU87QUFDUCxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztLQUN4QixJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsaUJBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBRSxDQUFDO1NBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUMvQixDQUFDLENBQUMsQ0FBQTtBQUVKLFVBQVU7QUFDVixRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztLQUMzQixJQUFJLENBQUMsQ0FBQyxJQUFJO0lBQ1QsdUJBQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQyxDQUFDLENBQUE7QUFFSixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUEifQ==

16
dist/npmci.bash.d.ts vendored
View File

@@ -1,3 +1,15 @@
import "typings-global"; export declare let nvmAvailable: boolean;
/**
* bash() allows using bash with nvm in path
* @param commandArg - The command to execute
* @param retryArg - The retryArg: 0 to any positive number will retry, -1 will always succeed, -2 will return undefined
*/
export declare let bash: (commandArg: string, retryArg?: number, bareArg?: boolean) => string; export declare let bash: (commandArg: string, retryArg?: number, bareArg?: boolean) => string;
export declare let bashBare: (commandArg: any, retryArg?: number) => string; /**
* bashBare allows usage of bash without sourcing any files like nvm
*/
export declare let bashBare: (commandArg: string, retryArg?: number) => string;
/**
* bashNoError allows executing stuff without throwing an error
*/
export declare let bashNoError: (commandArg: string) => string;

56
dist/npmci.bash.js vendored
View File

@@ -1,40 +1,74 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
let nvmSourceString = '';
exports.nvmAvailable = false;
let checkNvm = () => {
let localExec = plugins.shelljs.exec;
if (localExec(`bash -c "source /usr/local/nvm/nvm.sh"`, { silent: true }).code === 0) {
nvmSourceString = `source /usr/local/nvm/nvm.sh && `;
exports.nvmAvailable = true;
}
else if (localExec(`bash -c "source ~/.nvm/nvm.sh"`, { silent: true }).code === 0) {
nvmSourceString = `source ~/.nvm/nvm.sh && `;
exports.nvmAvailable = true;
}
;
};
checkNvm();
/**
* bash() allows using bash with nvm in path
* @param commandArg - The command to execute
* @param retryArg - The retryArg: 0 to any positive number will retry, -1 will always succeed, -2 will return undefined
*/
exports.bash = (commandArg, retryArg = 2, bareArg = false) => { exports.bash = (commandArg, retryArg = 2, bareArg = false) => {
let exitCode; let exitCode;
let stdOut; let stdOut;
let execResult; let execResult;
let failOnError = true;
if (retryArg === -1) {
failOnError = false;
retryArg = 0;
}
if (!process.env.NPMTS_TEST) { if (!process.env.NPMTS_TEST) {
for (let i = 0; i <= retryArg; i++) { for (let i = 0; i <= retryArg; i++) {
if (!bareArg) { if (!bareArg) {
execResult = plugins.shelljs.exec("bash -c \"source /usr/local/nvm/nvm.sh &&" + execResult = plugins.shelljs.exec(`bash -c "${nvmSourceString} ${commandArg}"`);
commandArg +
"\"");
} }
else { else {
execResult = plugins.shelljs.exec(commandArg); execResult = plugins.shelljs.exec(commandArg);
} }
exitCode = execResult.code; exitCode = execResult.code;
stdOut = execResult.stdout; stdOut = execResult.stdout;
if (exitCode !== 0 && i == retryArg) { // determine how bash reacts to error and success
if (exitCode !== 0 && i === retryArg) {
if (failOnError) {
process.exit(1); process.exit(1);
} }
else if (exitCode == 0) { }
i = retryArg + 1; // if everything works out ok retrials are not wanted else if (exitCode === 0) {
i = retryArg + 1; // retry +1 breaks for loop, if everything works out ok retrials are not wanted
} }
else { else {
plugins.beautylog.warn("Something went wrong! Exit Code: " + exitCode.toString()); plugins.beautylog.warn('Something went wrong! Exit Code: ' + exitCode.toString());
plugins.beautylog.info("Retry " + (i + 1).toString() + " of " + retryArg.toString()); plugins.beautylog.info('Retry ' + (i + 1).toString() + ' of ' + retryArg.toString());
} }
} }
} }
else { else {
plugins.beautylog.log("ShellExec would be: " + commandArg.blue); plugins.beautylog.log('ShellExec would be: ' + commandArg);
} }
return stdOut; return stdOut;
}; };
/**
* bashBare allows usage of bash without sourcing any files like nvm
*/
exports.bashBare = (commandArg, retryArg = 2) => { exports.bashBare = (commandArg, retryArg = 2) => {
return exports.bash(commandArg, retryArg, true); return exports.bash(commandArg, retryArg, true);
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuYmFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmJhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRWhDLFlBQUksR0FBRyxDQUFDLFVBQWlCLEVBQUMsUUFBUSxHQUFHLENBQUMsRUFBQyxPQUFPLEdBQUcsS0FBSztJQUM3RCxJQUFJLFFBQWUsQ0FBQztJQUNwQixJQUFJLE1BQWEsQ0FBQztJQUNsQixJQUFJLFVBQVUsQ0FBQztJQUNmLEVBQUUsQ0FBQSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFDLENBQUM7WUFDaEMsRUFBRSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDO2dCQUNULFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDN0IsMkNBQTJDO29CQUMzQyxVQUFVO29CQUNWLElBQUksQ0FDUCxDQUFDO1lBQ04sQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsRCxDQUFDO1lBQ0QsUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDM0IsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDM0IsRUFBRSxDQUFBLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUEsQ0FBQztnQkFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQSxDQUFDO2dCQUNyQixDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLHFEQUFxRDtZQUMzRSxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQ2xGLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLEdBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDMUYsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkUsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFBO0FBRVUsZ0JBQVEsR0FBRyxDQUFDLFVBQVUsRUFBQyxRQUFRLEdBQUcsQ0FBQztJQUMxQyxNQUFNLENBQUMsWUFBSSxDQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFBIn0= /**
* bashNoError allows executing stuff without throwing an error
*/
exports.bashNoError = (commandArg) => {
return exports.bash(commandArg, -1);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuYmFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmJhc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUUxQyxJQUFJLGVBQWUsR0FBVyxFQUFFLENBQUE7QUFDckIsUUFBQSxZQUFZLEdBQVksS0FBSyxDQUFBO0FBQ3hDLElBQUksUUFBUSxHQUFHO0lBQ2IsSUFBSSxTQUFTLEdBQVEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUE7SUFDekMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLHdDQUF3QyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckYsZUFBZSxHQUFHLGtDQUFrQyxDQUFBO1FBQ3BELG9CQUFZLEdBQUcsSUFBSSxDQUFBO0lBQ3JCLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsZUFBZSxHQUFHLDBCQUEwQixDQUFBO1FBQzVDLG9CQUFZLEdBQUcsSUFBSSxDQUFBO0lBQ3JCLENBQUM7SUFBQSxDQUFDO0FBQ0osQ0FBQyxDQUFBO0FBQ0QsUUFBUSxFQUFFLENBQUE7QUFFVjs7OztHQUlHO0FBQ1EsUUFBQSxJQUFJLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFdBQW1CLENBQUMsRUFBRSxVQUFtQixLQUFLO0lBQ25GLElBQUksUUFBZ0IsQ0FBQTtJQUNwQixJQUFJLE1BQWMsQ0FBQTtJQUNsQixJQUFJLFVBQVUsQ0FBQTtJQUNkLElBQUksV0FBVyxHQUFZLElBQUksQ0FBQTtJQUMvQixFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLFdBQVcsR0FBRyxLQUFLLENBQUE7UUFDbkIsUUFBUSxHQUFHLENBQUMsQ0FBQTtJQUNkLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDYixVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQy9CLFlBQVksZUFBZSxJQUFJLFVBQVUsR0FBRyxDQUM3QyxDQUFBO1lBQ0gsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUMvQyxDQUFDO1lBQ0QsUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUE7WUFDMUIsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUE7WUFFMUIsaURBQWlEO1lBQ2pELEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQSxDQUFDLCtFQUErRTtZQUNsRyxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7Z0JBQ2pGLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFDdEYsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ1EsUUFBQSxRQUFRLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFdBQW1CLENBQUM7SUFDN0QsTUFBTSxDQUFDLFlBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQ3pDLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ1EsUUFBQSxXQUFXLEdBQUcsQ0FBQyxVQUFrQjtJQUMxQyxNQUFNLENBQUMsWUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzdCLENBQUMsQ0FBQSJ9

12
dist/npmci.build.d.ts vendored
View File

@@ -1,2 +1,10 @@
import "typings-global"; /// <reference types="q" />
export declare let build: (commandArg: any) => any; import * as plugins from './npmci.plugins';
/**
* defines possible build services
*/
export declare type TBuildService = 'docker';
/**
* builds for a specific service
*/
export declare let build: (commandArg: any) => plugins.q.Promise<any>;

View File

@@ -1,12 +1,46 @@
/// <reference types="q" />
/// <reference types="node" /> /// <reference types="node" />
export declare let build: () => any; import * as plugins from './npmci.plugins';
export declare let readDockerfiles: () => any; /**
export declare let sortDockerfiles: (sortableArrayArg: Dockerfile[]) => any; * builds a cwd of Dockerfiles by triggering a promisechain
export declare let mapDockerfiles: (sortedArray: Dockerfile[]) => any; */
export declare let buildDockerfiles: (sortedArrayArg: Dockerfile[]) => any; export declare let build: () => plugins.q.Promise<{}>;
export declare let pushDockerfiles: (sortedArrayArg: Dockerfile[]) => any; /**
export declare let pullDockerfileImages: (sortableArrayArg: Dockerfile[], registryArg?: string) => any; * creates instance of class Dockerfile for all Dockerfiles in cwd
export declare let testDockerfiles: (sortedArrayArg: Dockerfile[]) => any; * @returns Promise<Dockerfile[]>
*/
export declare let readDockerfiles: () => plugins.q.Promise<Dockerfile[]>;
/**
* sorts Dockerfiles into a dependency chain
* @param sortableArrayArg an array of instances of class Dockerfile
* @returns Promise<Dockerfile[]>
*/
export declare let sortDockerfiles: (sortableArrayArg: Dockerfile[]) => plugins.q.Promise<Dockerfile[]>;
/**
* maps local Dockerfiles dependencies to the correspoding Dockerfile class instances
*/
export declare let mapDockerfiles: (sortedArray: Dockerfile[]) => plugins.q.Promise<Dockerfile[]>;
/**
* builds the correspoding real docker image for each Dockerfile class instance
*/
export declare let buildDockerfiles: (sortedArrayArg: Dockerfile[]) => plugins.q.Promise<{}>;
/**
* pushes the real Dockerfile images to a Docker registry
*/
export declare let pushDockerfiles: (sortedArrayArg: Dockerfile[]) => plugins.q.Promise<{}>;
/**
* pulls corresponding real Docker images for instances of Dockerfile from a registry.
* This is needed if building, testing, and publishing of Docker images is carried out in seperate CI stages.
*/
export declare let pullDockerfileImages: (sortableArrayArg: Dockerfile[], registryArg?: string) => plugins.q.Promise<{}>;
/**
* tests all Dockerfiles in by calling class Dockerfile.test();
* @param sortedArrayArg Dockerfile[] that contains all Dockerfiles in cwd
*/
export declare let testDockerfiles: (sortedArrayArg: Dockerfile[]) => plugins.q.Promise<{}>;
/**
* class Dockerfile represents a Dockerfile on disk in npmci
*/
export declare class Dockerfile { export declare class Dockerfile {
filePath: string; filePath: string;
repo: string; repo: string;
@@ -25,13 +59,40 @@ export declare class Dockerfile {
fileContents?: string | Buffer; fileContents?: string | Buffer;
read?: boolean; read?: boolean;
}); });
build(): any; /**
push(stageArg: any): any; * builds the Dockerfile
*/
build(): plugins.q.Promise<{}>;
/**
* pushes the Dockerfile to a registry
*/
push(stageArg: any): plugins.q.Promise<{}>;
/**
* pulls the Dockerfile from a registry
*/
pull(registryArg: string): void; pull(registryArg: string): void;
/**
* tests the Dockerfile;
*/
test(): void; test(): void;
/**
* gets the id of a Dockerfile
*/
getId(): string; getId(): string;
} }
/**
*
*/
export declare let dockerFileVersion: (dockerfileNameArg: string) => string; export declare let dockerFileVersion: (dockerfileNameArg: string) => string;
/**
*
*/
export declare let dockerBaseImage: (dockerfileContentArg: string) => string; export declare let dockerBaseImage: (dockerfileContentArg: string) => string;
/**
*
*/
export declare let dockerTag: (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string) => string; export declare let dockerTag: (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string) => string;
/**
*
*/
export declare let cleanTagsArrayFunction: (dockerfileArrayArg: Dockerfile[], trackingArrayArg: Dockerfile[]) => string[]; export declare let cleanTagsArrayFunction: (dockerfileArrayArg: Dockerfile[], trackingArrayArg: Dockerfile[]) => string[];

File diff suppressed because one or more lines are too long

12
dist/npmci.build.js vendored
View File

@@ -1,13 +1,17 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const buildDocker = require("./npmci.build.docker"); const buildDocker = require("./npmci.build.docker");
/**
* builds for a specific service
*/
exports.build = function (commandArg) { exports.build = function (commandArg) {
switch (commandArg) { switch (commandArg) {
case "docker": case 'docker':
return buildDocker.build(); return buildDocker.build();
default: default:
plugins.beautylog.log("build target " + commandArg + " not recognised!"); plugins.beautylog.log('build target ' + commandArg + ' not recognised!');
} }
;
return;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLE1BQVksT0FBTyxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFHM0MsTUFBWSxXQUFXLFdBQU0sc0JBRTdCLENBQUMsQ0FGa0Q7QUFFeEMsYUFBSyxHQUFHLFVBQVMsVUFBVTtJQUNsQyxNQUFNLENBQUEsQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFDO1FBQ2YsS0FBSyxRQUFRO1lBQ1QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQjtZQUNJLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztJQUNqRixDQUFDO0FBQ0wsQ0FBQyxDQUFBIn0= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTBDO0FBRzFDLG9EQUFtRDtBQU9uRDs7R0FFRztBQUNRLFFBQUEsS0FBSyxHQUFHLFVBQVMsVUFBVTtJQUNsQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLEtBQUssUUFBUTtZQUNULE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDOUI7WUFDSSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsVUFBVSxHQUFHLGtCQUFrQixDQUFDLENBQUE7SUFDaEYsQ0FBQztJQUFBLENBQUM7SUFDRixNQUFNLENBQUE7QUFDVixDQUFDLENBQUEifQ==

View File

@@ -1,5 +1,6 @@
import "typings-global"; /// <reference types="q" />
import * as plugins from './npmci.plugins';
/** /**
* cleans npmci config files * cleans npmci config files
*/ */
export declare let clean: () => any; export declare let clean: () => plugins.q.Promise<{}>;

3
dist/npmci.clean.js vendored
View File

@@ -1,5 +1,4 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const paths = require("./npmci.paths"); const paths = require("./npmci.paths");
/** /**
@@ -11,4 +10,4 @@ exports.clean = () => {
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY2xlYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5jbGVhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLE1BQVksT0FBTyxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFDM0MsTUFBWSxLQUFLLFdBQU0sZUFLdkIsQ0FBQyxDQUxxQztBQUV0Qzs7R0FFRztBQUNRLGFBQUssR0FBRztJQUNmLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzFELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY2xlYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5jbGVhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTBDO0FBQzFDLHVDQUFzQztBQUV0Qzs7R0FFRztBQUNRLFFBQUEsS0FBSyxHQUFHO0lBQ2YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDekQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBIn0=

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let command: () => any; import * as plugins from './npmci.plugins';
export declare let command: () => plugins.q.Promise<{}>;

10
dist/npmci.command.js vendored
View File

@@ -1,18 +1,18 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const npmci_bash_1 = require("./npmci.bash"); const npmci_bash_1 = require("./npmci.bash");
exports.command = () => { exports.command = () => {
let done = plugins.q.defer(); let done = plugins.q.defer();
let wrappedCommand = ""; let wrappedCommand = '';
let argvArray = process.argv; let argvArray = process.argv;
for (let i = 3; i < argvArray.length; i++) { for (let i = 3; i < argvArray.length; i++) {
wrappedCommand = wrappedCommand + argvArray[i]; wrappedCommand = wrappedCommand + argvArray[i];
if (i + 1 != argvArray.length) if (i + 1 !== argvArray.length) {
wrappedCommand = wrappedCommand + " "; wrappedCommand = wrappedCommand + ' ';
}
} }
npmci_bash_1.bash(wrappedCommand); npmci_bash_1.bash(wrappedCommand);
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDZCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUV2QixlQUFPLEdBQUc7SUFDakIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixJQUFJLGNBQWMsR0FBVSxFQUFFLENBQUM7SUFDL0IsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUM3QixHQUFHLENBQUEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUMsQ0FBQztRQUN0QyxjQUFjLEdBQUcsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxFQUFFLENBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFBQyxjQUFjLEdBQUcsY0FBYyxHQUFHLEdBQUcsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsaUJBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUEifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQyw2Q0FBaUM7QUFFdEIsUUFBQSxPQUFPLEdBQUc7SUFDakIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixJQUFJLGNBQWMsR0FBVyxFQUFFLENBQUE7SUFDL0IsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtJQUM1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QyxjQUFjLEdBQUcsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQUMsY0FBYyxHQUFHLGNBQWMsR0FBRyxHQUFHLENBQUE7UUFBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxpQkFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQSJ9

6
dist/npmci.config.d.ts vendored Normal file
View File

@@ -0,0 +1,6 @@
/// <reference types="q" />
import * as q from 'q';
export interface INpmciOptions {
globalNpmTools: string[];
}
export declare let getConfig: () => q.Promise<INpmciOptions>;

15
dist/npmci.config.js vendored Normal file
View File

@@ -0,0 +1,15 @@
"use strict";
const q = require("q");
const plugins = require("./npmci.plugins");
const paths = require("./npmci.paths");
exports.getConfig = () => {
let done = q.defer();
let npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd);
let defaultConfig = {
globalNpmTools: []
};
let npmciConfig = npmciNpmextra.dataFor('npmci', defaultConfig);
done.resolve(npmciConfig);
return done.promise;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1QkFBc0I7QUFFdEIsMkNBQTBDO0FBQzFDLHVDQUFzQztBQU0zQixRQUFBLFNBQVMsR0FBRztJQUNuQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFpQixDQUFBO0lBQ25DLElBQUksYUFBYSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVELElBQUksYUFBYSxHQUFrQjtRQUMvQixjQUFjLEVBQUUsRUFBRTtLQUNyQixDQUFBO0lBQ0QsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBZ0IsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQzlFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBIn0=

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

@@ -1,9 +1,9 @@
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 buildStage: string; export declare let buildStage: string;
export declare let dockerRegistry: string; export declare let dockerRegistry: string;
export declare let setDockerRegistry: (dockerRegistryArg: string) => void;
export declare let dockerFilesBuilt: Dockerfile[]; export declare let dockerFilesBuilt: Dockerfile[];
export declare let dockerFiles: Dockerfile[]; export declare let dockerFiles: Dockerfile[];
export declare let config: { export declare let config: {

16
dist/npmci.env.js vendored
View File

@@ -1,11 +1,13 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const paths = require("./npmci.paths"); const paths = require("./npmci.paths");
const smartstring_1 = require("smartstring"); const smartstring_1 = require("smartstring");
if (process.env.CI_BUILD_REPO) if (process.env.CI_BUILD_REPO)
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.buildStage = process.env.CI_BUILD_STAGE;
exports.setDockerRegistry = (dockerRegistryArg) => {
exports.dockerRegistry = dockerRegistryArg;
};
exports.dockerFilesBuilt = []; exports.dockerFilesBuilt = [];
exports.dockerFiles = []; exports.dockerFiles = [];
exports.config = { exports.config = {
@@ -21,26 +23,26 @@ exports.configStore = () => {
let configLoad = () => { let configLoad = () => {
// internal config to transfer information in between npmci shell calls // internal config to transfer information in between npmci shell calls
try { try {
plugins.lodash.assign(exports.config, plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig, "json")); plugins.lodash.assign(exports.config, plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig, 'json'));
} }
catch (err) { catch (err) {
exports.configStore(); exports.configStore();
plugins.beautylog.log("config initialized!"); plugins.beautylog.log('config initialized!');
} }
// project config // project config
try { try {
if (!exports.config.project) { if (!exports.config.project) {
exports.config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir, "npmci.json"); exports.config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir, 'npmci.json');
plugins.beautylog.ok("project config found!"); plugins.beautylog.ok('project config found!');
} }
; ;
} }
catch (err) { catch (err) {
exports.config.project = {}; exports.config.project = {};
plugins.beautylog.log("no project config found, so proceeding with default behaviour!"); plugins.beautylog.log('no project config found, so proceeding with default behaviour!');
} }
exports.config.dockerRegistry ? exports.dockerRegistry = exports.config.dockerRegistry : void (0); exports.config.dockerRegistry ? exports.dockerRegistry = exports.config.dockerRegistry : void (0);
exports.config.dockerFilesBuilt ? exports.dockerFilesBuilt = exports.config.dockerFilesBuilt : void (0); exports.config.dockerFilesBuilt ? exports.dockerFilesBuilt = exports.config.dockerFilesBuilt : void (0);
}; };
configLoad(); configLoad();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsTUFBWSxPQUFPLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUMzQyxNQUFZLEtBQUssV0FBTSxlQUFlLENBQUMsQ0FBQTtBQUN2Qyw4QkFBc0IsYUFBYSxDQUFDLENBQUE7QUFJcEMsRUFBRSxDQUFBLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFBQyxZQUFJLEdBQUcsSUFBSSxxQkFBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFakUsa0JBQVUsR0FBVSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztBQUkvQyx3QkFBZ0IsR0FBZ0IsRUFBRSxDQUFDO0FBQ25DLG1CQUFXLEdBQWdCLEVBQUUsQ0FBQztBQUM5QixjQUFNLEdBQUc7SUFDaEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsZ0JBQWdCLEVBQUUsd0JBQWdCO0lBQ2xDLFdBQVcsRUFBRSxtQkFBVztJQUN4QixPQUFPLEVBQUUsU0FBUztDQUNyQixDQUFDO0FBRVMsbUJBQVcsR0FBRztJQUNyQixjQUFNLENBQUMsY0FBYyxHQUFHLHNCQUFjLENBQUM7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQU0sQ0FBQyxFQUN0QixLQUFLLENBQUMsa0JBQWtCLENBQzNCLENBQUM7QUFDTixDQUFDLENBQUE7QUFFRCxJQUFJLFVBQVUsR0FBRztJQUNiLHVFQUF1RTtJQUN2RSxJQUFJLENBQUM7UUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFNLEVBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQ0E7SUFBQSxLQUFLLENBQUEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDO1FBQ1AsbUJBQVcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLElBQUksQ0FBQztRQUNELEVBQUUsQ0FBQSxDQUFDLENBQUMsY0FBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUM7WUFDaEIsY0FBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBQyxZQUFZLENBQUMsQ0FBQztZQUN2RixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFBQSxDQUFDO0lBQ04sQ0FDQTtJQUFBLEtBQUssQ0FBQSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUM7UUFDUCxjQUFNLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxjQUFNLENBQUMsY0FBYyxHQUFHLHNCQUFjLEdBQUcsY0FBTSxDQUFDLGNBQWMsR0FBRyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsY0FBTSxDQUFDLGdCQUFnQixHQUFHLHdCQUFnQixHQUFHLGNBQU0sQ0FBQyxnQkFBZ0IsR0FBRyxLQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQyxDQUFBO0FBQ0QsVUFBVSxFQUFFLENBQUMifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuZW52LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQ0FBMEM7QUFDMUMsdUNBQXNDO0FBQ3RDLDZDQUFtQztBQUluQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUFDLFlBQUksR0FBRyxJQUFJLHFCQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUVqRSxRQUFBLFVBQVUsR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQTtBQUkvQyxRQUFBLGlCQUFpQixHQUFHLENBQUMsaUJBQXlCO0lBQ3JELHNCQUFjLEdBQUcsaUJBQWlCLENBQUE7QUFDdEMsQ0FBQyxDQUFBO0FBQ1UsUUFBQSxnQkFBZ0IsR0FBaUIsRUFBRSxDQUFBO0FBQ25DLFFBQUEsV0FBVyxHQUFpQixFQUFFLENBQUE7QUFDOUIsUUFBQSxNQUFNLEdBQUc7SUFDaEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsZ0JBQWdCLEVBQUUsd0JBQWdCO0lBQ2xDLFdBQVcsRUFBRSxtQkFBVztJQUN4QixPQUFPLEVBQUUsU0FBUztDQUNyQixDQUFBO0FBRVUsUUFBQSxXQUFXLEdBQUc7SUFDckIsY0FBTSxDQUFDLGNBQWMsR0FBRyxzQkFBYyxDQUFBO0lBQ3RDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFNLENBQUMsRUFDdEIsS0FBSyxDQUFDLGtCQUFrQixDQUMzQixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsSUFBSSxVQUFVLEdBQUc7SUFDYix1RUFBdUU7SUFDdkUsSUFBSSxDQUFDO1FBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBTSxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNwRyxDQUFDO0lBQ0QsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNULG1CQUFXLEVBQUUsQ0FBQTtRQUNiLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixJQUFJLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLGNBQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUMsWUFBWSxDQUFDLENBQUE7WUFDdEYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUNqRCxDQUFDO1FBQUEsQ0FBQztJQUNOLENBQUM7SUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ1QsY0FBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0VBQWdFLENBQUMsQ0FBQTtJQUMzRixDQUFDO0lBRUQsY0FBTSxDQUFDLGNBQWMsR0FBRyxzQkFBYyxHQUFHLGNBQU0sQ0FBQyxjQUFjLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLGNBQU0sQ0FBQyxnQkFBZ0IsR0FBRyx3QkFBZ0IsR0FBRyxjQUFNLENBQUMsZ0JBQWdCLEdBQUcsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2xGLENBQUMsQ0FBQTtBQUNELFVBQVUsRUFBRSxDQUFBIn0=

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let install: (versionArg: any) => any; import * as plugins from './npmci.plugins';
export declare let install: (versionArg: any) => plugins.q.Promise<{}>;

52
dist/npmci.install.js vendored
View File

@@ -1,30 +1,54 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const configModule = require("./npmci.config");
const npmci_bash_1 = require("./npmci.bash"); const npmci_bash_1 = require("./npmci.bash");
const npmci_bash_2 = require("./npmci.bash");
exports.install = (versionArg) => { exports.install = (versionArg) => {
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.log("now installing " + "node ".green + ("version " + versionArg).yellow); plugins.beautylog.log(`now installing node version ${versionArg}`);
let version; let version;
if (versionArg == "stable") { if (versionArg === 'stable') {
version = "6.3.0"; version = 'stable';
} }
else if (versionArg == "lts") { else if (versionArg === 'lts') {
version = "6.3.0"; version = '6';
} }
else if (versionArg == "legacy") { else if (versionArg === 'legacy') {
version = "6.3.0"; version = '6';
} }
else { else {
version = versionArg; version = versionArg;
} }
; ;
npmci_bash_1.bash("nvm install " + version + if (npmci_bash_2.nvmAvailable) {
" && nvm alias default " + version); npmci_bash_1.bash(`nvm install ${version} && nvm alias default ${version}`);
plugins.beautylog.success("Node version " + version + " successfully installed!"); plugins.beautylog.success(`Node version ${version} successfully installed!`);
npmci_bash_1.bash("node -v"); }
npmci_bash_1.bash("npm -v"); else {
plugins.beautylog.warn('Nvm not in path so staying at installed node version!');
}
;
npmci_bash_1.bash('node -v');
npmci_bash_1.bash('npm -v');
// lets look for further config
configModule.getConfig()
.then(configArg => {
plugins.beautylog.log('Now checking for needed global npm tools...');
for (let npmTool of configArg.globalNpmTools) {
plugins.beautylog.info(`Checking for global "${npmTool}"`);
let whichOutput = npmci_bash_1.bashNoError(`which ${npmTool}`);
let toolAvailable = !((/not\sfound/.test(whichOutput)) || whichOutput === '');
if (toolAvailable) {
plugins.beautylog.log(`Tool ${npmTool} is available`);
}
else {
plugins.beautylog.info(`globally installing ${npmTool} from npm`);
npmci_bash_1.bash(`npm install ${npmTool} -q -g`);
}
}
plugins.beautylog.success('all global npm tools specified in npmextra.json are now available!');
done.resolve(); done.resolve();
});
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmluc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDZCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUV2QixlQUFPLEdBQUcsQ0FBQyxVQUFVO0lBQzVCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RixJQUFJLE9BQWMsQ0FBQztJQUNuQixFQUFFLENBQUEsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLENBQUEsQ0FBQztRQUN2QixPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFBLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFBLENBQUM7UUFDM0IsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQSxDQUFDO1FBQzlCLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUFDLElBQUksQ0FBRSxDQUFDO1FBQ0wsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQUEsQ0FBQztJQUNGLGlCQUFJLENBQ0EsY0FBYyxHQUFHLE9BQU87UUFDeEIsd0JBQXdCLEdBQUcsT0FBTyxDQUNyQyxDQUFDO0lBQ0YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xGLGlCQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEIsaUJBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuaW5zdGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLmluc3RhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQywrQ0FBOEM7QUFDOUMsNkNBQWdEO0FBQ2hELDZDQUEyQztBQUNoQyxRQUFBLE9BQU8sR0FBRyxDQUFDLFVBQVU7SUFDOUIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUNsRSxJQUFJLE9BQWUsQ0FBQTtJQUNuQixFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1QixPQUFPLEdBQUcsUUFBUSxDQUFBO0lBQ3BCLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxHQUFHLEdBQUcsQ0FBQTtJQUNmLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyxHQUFHLEdBQUcsQ0FBQTtJQUNmLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE9BQU8sR0FBRyxVQUFVLENBQUE7SUFDdEIsQ0FBQztJQUFBLENBQUM7SUFDRixFQUFFLENBQUMsQ0FBQyx5QkFBWSxDQUFDLENBQUMsQ0FBQztRQUNqQixpQkFBSSxDQUFDLGVBQWUsT0FBTyx5QkFBeUIsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUM5RCxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsT0FBTywwQkFBMEIsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUE7SUFDakYsQ0FBQztJQUFBLENBQUM7SUFDRixpQkFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2YsaUJBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNkLCtCQUErQjtJQUMvQixZQUFZLENBQUMsU0FBUyxFQUFFO1NBQ3JCLElBQUksQ0FBQyxTQUFTO1FBQ2IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtRQUNwRSxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUM3QyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsT0FBTyxHQUFHLENBQUMsQ0FBQTtZQUMxRCxJQUFJLFdBQVcsR0FBRyx3QkFBVyxDQUFDLFNBQVMsT0FBTyxFQUFFLENBQUMsQ0FBQTtZQUNqRCxJQUFJLGFBQWEsR0FBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksV0FBVyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQ3RGLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsT0FBTyxlQUFlLENBQUMsQ0FBQTtZQUN2RCxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLE9BQU8sV0FBVyxDQUFDLENBQUE7Z0JBQ2pFLGlCQUFJLENBQUMsZUFBZSxPQUFPLFFBQVEsQ0FBQyxDQUFBO1lBQ3RDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0VBQW9FLENBQUMsQ0FBQTtRQUMvRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDaEIsQ0FBQyxDQUFDLENBQUE7SUFDSixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUNyQixDQUFDLENBQUEifQ==

View File

@@ -1,4 +1,3 @@
import "typings-global";
export declare let cwd: string; export declare let cwd: string;
export declare let NpmciPackageRoot: string; export declare let NpmciPackageRoot: string;
export declare let NpmciPackageConfig: string; export declare let NpmciPackageConfig: string;

9
dist/npmci.paths.js vendored
View File

@@ -1,9 +1,8 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
exports.cwd = process.cwd(); exports.cwd = process.cwd();
exports.NpmciPackageRoot = plugins.path.join(__dirname, "../"); exports.NpmciPackageRoot = plugins.path.join(__dirname, '../');
exports.NpmciPackageConfig = plugins.path.join(exports.NpmciPackageRoot, "./config.json"); exports.NpmciPackageConfig = plugins.path.join(exports.NpmciPackageRoot, './config.json');
exports.NpmciProjectDir = exports.cwd; exports.NpmciProjectDir = exports.cwd;
exports.NpmciTestDir = plugins.path.join(exports.cwd, "./test"); exports.NpmciTestDir = plugins.path.join(exports.cwd, './test');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3hCLE1BQVksT0FBTyxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFaEMsV0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUVwQix3QkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEQsMEJBQWtCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQWdCLEVBQUMsZUFBZSxDQUFDLENBQUM7QUFDekUsdUJBQWUsR0FBRyxXQUFHLENBQUM7QUFDdEIsb0JBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFHLEVBQUMsUUFBUSxDQUFDLENBQUMifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9ucG1jaS5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMkNBQTBDO0FBRS9CLFFBQUEsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtBQUVuQixRQUFBLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQTtBQUNyRCxRQUFBLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUFnQixFQUFDLGVBQWUsQ0FBQyxDQUFBO0FBQ3hFLFFBQUEsZUFBZSxHQUFHLFdBQUcsQ0FBQTtBQUNyQixRQUFBLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFHLEVBQUMsUUFBUSxDQUFDLENBQUEifQ==

View File

@@ -1,16 +1,17 @@
import "typings-global"; export import beautylog = require('beautylog');
export import beautylog = require("beautylog");
export declare let gulp: any; export declare let gulp: any;
export declare let gulpFunction: any; export import gulpFunction = require('gulp-function');
export declare let lodash: any; export import lodash = require('lodash');
export import path = require("path"); export import npmextra = require('npmextra');
export import projectinfo = require("projectinfo"); export import path = require('path');
export declare let q: any; export import projectinfo = require('projectinfo');
export import q = require('q');
export declare let request: any; export declare let request: any;
export declare let shelljs: any; export import shelljs = require('shelljs');
export import smartcli = require("smartcli"); export import smartcli = require('smartcli');
export import smartfile = require("smartfile"); export import smartfile = require('smartfile');
export import smartparam = require("smartparam"); export import smartparam = require('smartparam');
export import smartssh = require("smartssh"); export import smartsocket = require('smartsocket');
export import smartstring = require("smartstring"); export import smartssh = require('smartssh');
export declare let through2: any; export import smartstring = require('smartstring');
export import through2 = require('through2');

View File

@@ -1,18 +1,19 @@
"use strict"; "use strict";
require("typings-global");
exports.beautylog = require("beautylog"); exports.beautylog = require("beautylog");
exports.gulp = require("gulp"); exports.gulp = require('gulp');
exports.gulpFunction = require("gulp-function"); exports.gulpFunction = require("gulp-function");
exports.lodash = require("lodash"); exports.lodash = require("lodash");
exports.npmextra = require("npmextra");
exports.path = require("path"); exports.path = require("path");
exports.projectinfo = require("projectinfo"); exports.projectinfo = require("projectinfo");
exports.q = require("q"); exports.q = require("q");
exports.request = require("request"); exports.request = require('request');
exports.shelljs = require("shelljs"); exports.shelljs = require("shelljs");
exports.smartcli = require("smartcli"); exports.smartcli = require("smartcli");
exports.smartfile = require("smartfile"); exports.smartfile = require("smartfile");
exports.smartparam = require("smartparam"); exports.smartparam = require("smartparam");
exports.smartsocket = require("smartsocket");
exports.smartssh = require("smartssh"); exports.smartssh = require("smartssh");
exports.smartstring = require("smartstring"); exports.smartstring = require("smartstring");
exports.through2 = require("through2"); exports.through2 = require("through2");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUNWLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsWUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixvQkFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN4QyxjQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hCLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUN2QixtQkFBVyxXQUFXLGFBQWEsQ0FBQyxDQUFDO0FBQ3hDLFNBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakIsZUFBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixlQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFCLGdCQUFRLFdBQVcsVUFBVSxDQUFDLENBQUM7QUFDL0IsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNqQyxrQkFBVSxXQUFXLFlBQVksQ0FBQyxDQUFDO0FBQ25DLGdCQUFRLFdBQVcsVUFBVSxDQUFDLENBQUM7QUFDL0IsbUJBQVcsV0FBVyxhQUFhLENBQUMsQ0FBQztBQUN4QyxnQkFBUSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlDQUE4QztBQUNuQyxRQUFBLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDakMsZ0RBQXFEO0FBQ3JELG1DQUF3QztBQUN4Qyx1Q0FBNEM7QUFDNUMsK0JBQW9DO0FBQ3BDLDZDQUFrRDtBQUNsRCx5QkFBOEI7QUFDbkIsUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQ3ZDLHFDQUEwQztBQUMxQyx1Q0FBNEM7QUFDNUMseUNBQThDO0FBQzlDLDJDQUFnRDtBQUNoRCw2Q0FBa0Q7QUFDbEQsdUNBQTRDO0FBQzVDLDZDQUFrRDtBQUNsRCx1Q0FBNEMifQ==

View File

@@ -1,2 +1,11 @@
import "typings-global"; /// <reference types="q" />
export declare let prepare: (serviceArg: string) => any; import * as plugins from './npmci.plugins';
/**
* defines possible prepare services
*/
export declare type TPrepService = 'npm' | 'docker' | 'docker-gitlab' | 'ssh';
/**
* the main exported prepare function
* @param servieArg describes the service to prepare
*/
export declare let prepare: (serviceArg: TPrepService) => plugins.q.Promise<{}>;

47
dist/npmci.prepare.js vendored
View File

@@ -1,65 +1,80 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const env = require("./npmci.env"); const env = require("./npmci.env");
const sshModule = require("./npmci.ssh"); const sshModule = require("./npmci.ssh");
/**
* authenticates npm with token from env var
*/
let npm = function () { let npm = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
let npmrcPrefix = "//registry.npmjs.org/:_authToken="; let npmrcPrefix = '//registry.npmjs.org/:_authToken=';
let npmToken = process.env.NPMCI_TOKEN_NPM; let npmToken = process.env.NPMCI_TOKEN_NPM;
let npmrcFileString = npmrcPrefix + npmToken; let npmrcFileString = npmrcPrefix + npmToken;
if (npmToken) { if (npmToken) {
plugins.beautylog.info("found access token"); plugins.beautylog.info('found access token');
} }
else { else {
plugins.beautylog.error("no access token found! Exiting!"); plugins.beautylog.error('no access token found! Exiting!');
process.exit(1); process.exit(1);
} }
plugins.smartfile.memory.toFsSync(npmrcFileString, "/root/.npmrc"); plugins.smartfile.memory.toFsSync(npmrcFileString, '/root/.npmrc');
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
/**
* logs in docker
*/
let docker = function () { let docker = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
env.dockerRegistry = "docker.io"; env.setDockerRegistry('docker.io');
let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/; let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/;
if (!process.env.NPMCI_LOGIN_DOCKER) { if (!process.env.NPMCI_LOGIN_DOCKER) {
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 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];
plugins.shelljs.exec("docker login -u " + username + " -p " + password); plugins.shelljs.exec('docker login -u ' + username + ' -p ' + password);
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
/**
* prepare docker for gitlab registry
*/
let dockerGitlab = function () { let dockerGitlab = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
env.dockerRegistry = "registry.gitlab.com"; env.setDockerRegistry('registry.gitlab.com');
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 ' + process.env.CI_BUILD_TOKEN + ' ' + 'registry.gitlab.com');
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
/**
* prepare ssh
*/
let ssh = function () { let ssh = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
sshModule.ssh() sshModule.ssh()
.then(done.resolve); .then(done.resolve);
return done.promise; return done.promise;
}; };
/**
* the main exported prepare function
* @param servieArg describes the service to prepare
*/
exports.prepare = function (serviceArg) { exports.prepare = function (serviceArg) {
switch (serviceArg) { switch (serviceArg) {
case "npm": case 'npm':
return npm(); return npm();
case "docker": case 'docker':
return docker(); return docker();
case "docker-gitlab": case 'docker-gitlab':
return dockerGitlab(); return dockerGitlab();
case "ssh": case 'ssh':
return ssh(); return ssh();
default: default:
break; break;
} }
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucHJlcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnByZXBhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRTNDLE1BQVksR0FBRyxXQUFNLGFBQ3JCLENBQUMsQ0FEaUM7QUFDbEMsTUFBWSxTQUFTLFdBQU0sYUFFM0IsQ0FBQyxDQUZ1QztBQUV4QyxJQUFJLEdBQUcsR0FBRztJQUNOLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFN0IsSUFBSSxXQUFXLEdBQVUsbUNBQW1DLENBQUM7SUFDN0QsSUFBSSxRQUFRLEdBQVUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7SUFDbEQsSUFBSSxlQUFlLEdBQUcsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUU3QyxFQUFFLENBQUEsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFDO1FBQ1QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsSUFBSSxNQUFNLEdBQUc7SUFDVCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtB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 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucHJlcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnByZXBhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUUxQyxtQ0FBa0M7QUFDbEMseUNBQXdDO0FBVXhDOztHQUVHO0FBQ0gsSUFBSSxHQUFHLEdBQUc7SUFDTixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBRTVCLElBQUksV0FBVyxHQUFXLG1DQUFtQyxDQUFBO0lBQzdELElBQUksUUFBUSxHQUFXLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFBO0lBQ2xELElBQUksZUFBZSxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUE7SUFFNUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNYLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtRQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2pFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxNQUFNLEdBQUc7SUFDVCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNsQyxJQUFJLFdBQVcsR0FBRyxxQ0FBcUMsQ0FBQTtJQUN2RCxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUE7UUFDaEYsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuQixDQUFDO0lBQ0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsR0FBRyxHQUFHLHFCQUFxQixDQUFDLENBQUEsQ0FBQyx1Q0FBdUM7SUFDOUosSUFBSSxzQkFBc0IsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUM3RSxJQUFJLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4QyxJQUFJLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4QyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFBO0lBQ3ZFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxZQUFZLEdBQUc7SUFDZixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0lBQzVDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxDQUFBO0lBQ3RILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxHQUFHLEdBQUc7SUFDTixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7U0FDVixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQTtBQUVEOzs7R0FHRztBQUNRLFFBQUEsT0FBTyxHQUFHLFVBQVMsVUFBd0I7SUFDbEQsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNqQixLQUFLLEtBQUs7WUFDTixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDaEIsS0FBSyxRQUFRO1lBQ1QsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ25CLEtBQUssZUFBZTtZQUNoQixNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDekIsS0FBSyxLQUFLO1lBQ04sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ2hCO1lBQ0ksS0FBSyxDQUFBO0lBQ2IsQ0FBQztBQUNMLENBQUMsQ0FBQSJ9

View File

@@ -1,2 +1,11 @@
import "typings-global"; /// <reference types="q" />
export declare let publish: (serviceArg?: string) => any; import * as plugins from './npmci.plugins';
/**
* type of supported services
*/
export declare type TPubService = 'npm' | 'docker';
/**
* the main exported publish function.
* @param pubServiceArg references targeted service to publish to
*/
export declare let publish: (pubServiceArg?: TPubService) => plugins.q.Promise<{}>;

27
dist/npmci.publish.js vendored
View File

@@ -1,27 +1,36 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const npmci_prepare_1 = require("./npmci.prepare"); const npmci_prepare_1 = require("./npmci.prepare");
const npmci_bash_1 = require("./npmci.bash"); const npmci_bash_1 = require("./npmci.bash");
const NpmciBuildDocker = require("./npmci.build.docker"); const NpmciBuildDocker = require("./npmci.build.docker");
exports.publish = (serviceArg = "npm") => { /**
switch (serviceArg) { * the main exported publish function.
case "npm": * @param pubServiceArg references targeted service to publish to
*/
exports.publish = (pubServiceArg = 'npm') => {
switch (pubServiceArg) {
case 'npm':
return publishNpm(); return publishNpm();
case "docker": case 'docker':
return publishDocker(); return publishDocker();
} }
}; };
/**
* tries to publish current cwd to NPM registry
*/
let publishNpm = function () { let publishNpm = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
npmci_prepare_1.prepare("npm") npmci_prepare_1.prepare('npm')
.then(function () { .then(function () {
npmci_bash_1.bash("npm publish"); npmci_bash_1.bash('npm publish');
plugins.beautylog.ok("Done!"); plugins.beautylog.ok('Done!');
done.resolve(); done.resolve();
}); });
return done.promise; return done.promise;
}; };
/**
* tries to pubish current cwd to Docker registry
*/
let publishDocker = function () { let publishDocker = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
@@ -30,4 +39,4 @@ let publishDocker = function () {
.then(done.resolve); .then(done.resolve);
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLGdDQUFzQixpQkFBaUIsQ0FBQyxDQUFBO0FBQ3hDLDZCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUVsQyxNQUFZLGdCQUFnQixXQUFNLHNCQUVsQyxDQUFDLENBRnVEO0FBRTdDLGVBQU8sR0FBRyxDQUFDLFVBQVUsR0FBVSxLQUFLO0lBQzNDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUM7UUFDaEIsS0FBSyxLQUFLO1lBQ04sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssUUFBUTtZQUNULE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMvQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsSUFBSSxVQUFVLEdBQUk7SUFDZCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLHVCQUFPLENBQUMsS0FBSyxDQUFDO1NBQ1QsSUFBSSxDQUFDO1FBQ0YsaUJBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBRTtRQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN2QixDQUFDLENBQUE7QUFFRCxJQUFJLGFBQWEsR0FBRztJQUNoQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLGdCQUFnQixDQUFDLGVBQWUsRUFBRTtTQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7U0FDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztTQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucHVibGlzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnB1Ymxpc2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQyxtREFBdUM7QUFDdkMsNkNBQWlDO0FBRWpDLHlEQUF3RDtBQU94RDs7O0dBR0c7QUFDUSxRQUFBLE9BQU8sR0FBRyxDQUFDLGdCQUE2QixLQUFLO0lBQ3BELE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDcEIsS0FBSyxLQUFLO1lBQ04sTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLEtBQUssUUFBUTtZQUNULE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxJQUFJLFVBQVUsR0FBSTtJQUNkLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsdUJBQU8sQ0FBQyxLQUFLLENBQUM7U0FDVCxJQUFJLENBQUM7UUFDRixpQkFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ25CLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNsQixDQUFDLENBQUMsQ0FBQTtJQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3RCLENBQUMsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxhQUFhLEdBQUc7SUFDaEIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4QixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUU7U0FDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1NBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7U0FDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUEifQ==

4
dist/npmci.servezone.d.ts vendored Normal file
View File

@@ -0,0 +1,4 @@
/**
* the main run function to submit a service to a servezone
*/
export declare let run: (configArg: any) => void;

28
dist/npmci.servezone.js vendored Normal file
View File

@@ -0,0 +1,28 @@
"use strict";
const plugins = require("./npmci.plugins");
/**
* servezoneRegex is the regex that parses the servezone connection data
* parses strings in the form of "servezone.example.com|3000|somepassword"
*/
let servezoneRegex = /^(.*)\|(.*)\|(.*)/;
/**
* holds the results of the parsed servezone env string
*/
let servezoneRegexResultArray = servezoneRegex.exec(process.env.NPMCI_SERVEZONE);
/**
* the data object that is used for the smartsocket client object
*/
let smartsocketClientConstructorOptions = {
alias: 'npmci',
password: servezoneRegexResultArray[3],
port: parseInt(servezoneRegexResultArray[2]),
role: 'ci',
url: servezoneRegexResultArray[1]
};
/**
* the main run function to submit a service to a servezone
*/
exports.run = (configArg) => {
new plugins.smartsocket.SmartsocketClient(smartsocketClientConstructorOptions);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuc2VydmV6b25lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuc2VydmV6b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQ0FBMEM7QUFFMUM7OztHQUdHO0FBQ0gsSUFBSSxjQUFjLEdBQUcsbUJBQW1CLENBQUE7QUFFeEM7O0dBRUc7QUFDSCxJQUFJLHlCQUF5QixHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUVoRjs7R0FFRztBQUNILElBQUksbUNBQW1DLEdBQUc7SUFDdEMsS0FBSyxFQUFFLE9BQU87SUFDZCxRQUFRLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLElBQUksRUFBRSxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsSUFBSSxFQUFFLElBQUk7SUFDVixHQUFHLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDO0NBQ3BDLENBQUE7QUFFRDs7R0FFRztBQUNRLFFBQUEsR0FBRyxHQUFHLENBQUMsU0FBUztJQUN2QixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQ3JDLG1DQUFtQyxDQUN0QyxDQUFBO0FBQ0wsQ0FBQyxDQUFBIn0=

8
dist/npmci.ssh.d.ts vendored
View File

@@ -1,2 +1,6 @@
import "typings-global"; /// <reference types="q" />
export declare let ssh: () => any; import * as plugins from './npmci.plugins';
/**
* checks for ENV vars in form of NPMCI_SSHKEY_* and deploys any found ones
*/
export declare let ssh: () => plugins.q.Promise<{}>;

28
dist/npmci.ssh.js vendored
View File

@@ -1,43 +1,51 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
let sshRegex = /^(.*)\|(.*)\|(.*)/; let sshRegex = /^(.*)\|(.*)\|(.*)/;
let sshInstance; let sshInstance;
/**
* checks for ENV vars in form of NPMCI_SSHKEY_* and deploys any found ones
*/
exports.ssh = () => { exports.ssh = () => {
let done = plugins.q.defer(); let done = plugins.q.defer();
sshInstance = new plugins.smartssh.SshInstance(); sshInstance = new plugins.smartssh.SshInstance(); // init ssh instance
plugins.smartparam.forEachMinimatch(process.env, "NPMCI_SSHKEY_*", evaluateSshEnv); plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_SSHKEY_*', evaluateSshEnv);
if (!process.env.NPMTS_TEST) { if (!process.env.NPMTS_TEST) {
sshInstance.writeToDisk(); sshInstance.writeToDisk();
} }
else { else {
plugins.beautylog.log("In test mode, so not storing SSH keys to disk!"); plugins.beautylog.log('In test mode, so not storing SSH keys to disk!');
} }
; ;
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
/**
* gets called for each found SSH ENV Var and deploys it
*/
let evaluateSshEnv = (sshkeyEnvVarArg) => { let evaluateSshEnv = (sshkeyEnvVarArg) => {
let resultArray = sshRegex.exec(sshkeyEnvVarArg); let resultArray = sshRegex.exec(sshkeyEnvVarArg);
let sshKey = new plugins.smartssh.SshKey(); let sshKey = new plugins.smartssh.SshKey();
plugins.beautylog.info("Found SSH identity for " + resultArray[1]); plugins.beautylog.info('Found SSH identity for ' + resultArray[1]);
if (notUndefined(resultArray[1])) { if (notUndefined(resultArray[1])) {
plugins.beautylog.log("---> host defined!"); plugins.beautylog.log('---> host defined!');
sshKey.host = resultArray[1]; sshKey.host = resultArray[1];
} }
if (notUndefined(resultArray[2])) { if (notUndefined(resultArray[2])) {
plugins.beautylog.log("---> privKey defined!"); plugins.beautylog.log('---> privKey defined!');
sshKey.privKeyBase64 = resultArray[2]; sshKey.privKeyBase64 = resultArray[2];
} }
; ;
if (notUndefined(resultArray[3])) { if (notUndefined(resultArray[3])) {
"---> pubKey defined!"; '---> pubKey defined!';
sshKey.pubKeyBase64 = resultArray[3]; sshKey.pubKeyBase64 = resultArray[3];
} }
; ;
sshInstance.addKey(sshKey); sshInstance.addKey(sshKey);
}; };
/**
* checks if not undefined
*/
let notUndefined = (stringArg) => { let notUndefined = (stringArg) => {
return (stringArg && stringArg != "undefined" && stringArg != "##"); return (stringArg && stringArg !== 'undefined' && stringArg !== '##');
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuc3NoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuc3NoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsTUFBWSxPQUFPLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUUzQyxJQUFJLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQTtBQUNsQyxJQUFJLFdBQXdDLENBQUM7QUFFbEMsV0FBRyxHQUFHO0lBQ2IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pELE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBQyxnQkFBZ0IsRUFBQyxjQUFjLENBQUMsQ0FBQztJQUNqRixFQUFFLENBQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUEsQ0FBQztRQUN4QixXQUFXLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQUEsQ0FBQztJQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLElBQUksY0FBYyxHQUFHLENBQUMsZUFBZTtJQUNqQyxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELElBQUksTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxFQUFFLENBQUEsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDM0MsTUFBTSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELEVBQUUsQ0FBQSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUM5QyxNQUFNLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUEsQ0FBQztJQUNGLEVBQUUsQ0FBQSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUM7UUFDN0Isc0JBQXNCLENBQUE7UUFDdEIsTUFBTSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUFBLENBQUM7SUFFRixXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGLElBQUksWUFBWSxHQUFHLENBQUMsU0FBZ0I7SUFDaEMsTUFBTSxDQUFDLENBQUMsU0FBUyxJQUFJLFNBQVMsSUFBSSxXQUFXLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kuc3NoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbnBtY2kuc3NoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyQ0FBMEM7QUFFMUMsSUFBSSxRQUFRLEdBQUcsbUJBQW1CLENBQUE7QUFDbEMsSUFBSSxXQUF5QyxDQUFBO0FBRTdDOztHQUVHO0FBQ1EsUUFBQSxHQUFHLEdBQUc7SUFDYixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUEsQ0FBQyxvQkFBb0I7SUFDckUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFDLGdCQUFnQixFQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ2hGLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxJQUFJLGNBQWMsR0FBRyxDQUFDLGVBQWU7SUFDakMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFDOUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUFBLENBQUM7SUFDRixFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLHNCQUFzQixDQUFBO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFBQSxDQUFDO0lBRUYsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUM5QixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILElBQUksWUFBWSxHQUFHLENBQUMsU0FBaUI7SUFDakMsTUFBTSxDQUFDLENBQUMsU0FBUyxJQUFJLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFBO0FBQ3pFLENBQUMsQ0FBQSJ9

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let test: (versionArg: any) => any; import * as plugins from './npmci.plugins';
export declare let test: (versionArg: any) => plugins.q.Promise<{}>;

13
dist/npmci.test.js vendored
View File

@@ -1,12 +1,11 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
const npmci_bash_1 = require("./npmci.bash"); const npmci_bash_1 = require("./npmci.bash");
const npmci_install_1 = require("./npmci.install"); const npmci_install_1 = require("./npmci.install");
const NpmciBuildDocker = require("./npmci.build.docker"); const NpmciBuildDocker = require("./npmci.build.docker");
exports.test = (versionArg) => { exports.test = (versionArg) => {
let done = plugins.q.defer(); let done = plugins.q.defer();
if (versionArg == "docker") { if (versionArg === 'docker') {
testDocker() testDocker()
.then(() => { .then(() => {
done.resolve(); done.resolve();
@@ -24,15 +23,15 @@ exports.test = (versionArg) => {
}; };
let npmDependencies = function () { let npmDependencies = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.info("now installing dependencies:"); plugins.beautylog.info('now installing dependencies:');
npmci_bash_1.bash("npm install"); npmci_bash_1.bash('npm install');
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
let npmTest = () => { let npmTest = () => {
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.info("now starting tests:"); plugins.beautylog.info('now starting tests:');
npmci_bash_1.bash("npm test"); npmci_bash_1.bash('npm test');
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
@@ -44,4 +43,4 @@ let testDocker = function () {
.then(done.resolve); .then(done.resolve);
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQzNDLDZCQUFtQixjQUFjLENBQUMsQ0FBQTtBQUNsQyxnQ0FBc0IsaUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxNQUFZLGdCQUFnQixXQUFNLHNCQUFzQixDQUFDLENBQUE7QUFFOUMsWUFBSSxHQUFHLENBQUMsVUFBVTtJQUN6QixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLEVBQUUsQ0FBQSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQSxDQUFDO1FBQ3ZCLFVBQVUsRUFBRTthQUNQLElBQUksQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLHVCQUFPLENBQUMsVUFBVSxDQUFDO2FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2IsSUFBSSxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVELElBQUksZUFBZSxHQUFHO0lBQ2xCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxpQkFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQTtBQUVELElBQUksT0FBTyxHQUFHO0lBQ1YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlDLGlCQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxVQUFVLEdBQUc7SUFDYixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLGdCQUFnQixDQUFDLGVBQWUsRUFBRTtTQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUM7U0FDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztTQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUMxQyw2Q0FBaUM7QUFDakMsbURBQXVDO0FBRXZDLHlEQUF3RDtBQUU3QyxRQUFBLElBQUksR0FBRyxDQUFDLFVBQVU7SUFDekIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxQixVQUFVLEVBQUU7YUFDUCxJQUFJLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDVixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSix1QkFBTyxDQUFDLFVBQVUsQ0FBQzthQUNkLElBQUksQ0FBQyxlQUFlLENBQUM7YUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNiLElBQUksQ0FBQztZQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsQixDQUFDLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFFRCxJQUFJLGVBQWUsR0FBRztJQUNsQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUE7SUFDdEQsaUJBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFFRCxJQUFJLE9BQU8sR0FBRztJQUNWLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtJQUM3QyxpQkFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQTtBQUVELElBQUksVUFBVSxHQUFHO0lBQ2IsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUU7U0FDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO1NBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7U0FDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUEifQ==

View File

@@ -1,2 +1,3 @@
import "typings-global"; /// <reference types="q" />
export declare let trigger: () => any; import * as plugins from './npmci.plugins';
export declare let trigger: () => plugins.q.Promise<{}>;

17
dist/npmci.trigger.js vendored
View File

@@ -1,11 +1,10 @@
"use strict"; "use strict";
require("typings-global");
const plugins = require("./npmci.plugins"); const plugins = require("./npmci.plugins");
let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/; let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/;
exports.trigger = function () { exports.trigger = function () {
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.beautylog.info("now running triggers"); plugins.beautylog.info('now running triggers');
plugins.smartparam.forEachMinimatch(process.env, "NPMCI_TRIGGER_*", evaluateTrigger); plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger);
done.resolve(); done.resolve();
return done.promise; return done.promise;
}; };
@@ -16,14 +15,14 @@ let evaluateTrigger = (triggerEnvVarArg) => {
let regexProjectTriggerToken = triggerRegexResultArray[3]; let regexProjectTriggerToken = triggerRegexResultArray[3];
let regexRefName = triggerRegexResultArray[4]; let regexRefName = triggerRegexResultArray[4];
let regexTriggerName; let regexTriggerName;
if (triggerRegexResultArray.length == 6) { if (triggerRegexResultArray.length === 6) {
regexTriggerName = triggerRegexResultArray[5]; regexTriggerName = triggerRegexResultArray[5];
} }
else { else {
regexTriggerName = "Unnamed Trigger"; regexTriggerName = 'Unnamed Trigger';
} }
plugins.beautylog.info("Found Trigger!"); plugins.beautylog.info('Found Trigger!');
plugins.beautylog.log("triggering build for ref " + regexRefName + " of " + regexTriggerName); plugins.beautylog.log('triggering build for ref ' + regexRefName + ' of ' + regexTriggerName);
plugins.request.post("https://gitlab.com/api/v3/projects/" + regexProjectId + "/trigger/builds", { form: { token: regexProjectTriggerToken, ref: regexRefName } }); plugins.request.post('https://gitlab.com/api/v3/projects/' + regexProjectId + '/trigger/builds', { form: { token: regexProjectTriggerToken, ref: regexRefName } });
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kudHJpZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFZLE9BQU8sV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBSzNDLElBQUksaUJBQWlCLEdBQUcsZ0dBQWdHLENBQUM7QUFFOUcsZUFBTyxHQUFHO0lBQ2pCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMvQyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDckYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxnQkFBZ0I7SUFDbkMsSUFBSSx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RSxJQUFJLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxJQUFJLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELElBQUksWUFBWSxHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksZ0JBQWdCLENBQUM7SUFDckIsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7SUFDekMsQ0FBQztJQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDekMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsWUFBWSxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlGLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxHQUFHLGNBQWMsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZLLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kudHJpZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDJDQUEwQztBQUkxQyxJQUFJLGlCQUFpQixHQUFHLGdHQUFnRyxDQUFBO0FBRTdHLFFBQUEsT0FBTyxHQUFHO0lBQ2pCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUM5QyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDcEYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBO0FBRUQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxnQkFBZ0I7SUFDbkMsSUFBSSx1QkFBdUIsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN0RSxJQUFJLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1QyxJQUFJLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQyxJQUFJLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pELElBQUksWUFBWSxHQUFHLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzdDLElBQUksZ0JBQWdCLENBQUE7SUFDcEIsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQ0osZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUE7SUFDeEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDeEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsWUFBWSxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzdGLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxHQUFHLGNBQWMsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ3RLLENBQUMsQ0FBQSJ9

10
npmextra.json Normal file
View File

@@ -0,0 +1,10 @@
{
"npmts":{
"mode":"default",
"coverageTreshold": "70",
"cli": true
},
"npmdocker":{
"baseImage":"hosttoday/ht-docker-node:npmts"
}
}

View File

@@ -1,45 +1,55 @@
{ {
"name": "npmci", "name": "npmci",
"version": "2.3.8", "version": "2.3.41",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts",
"bin": { "bin": {
"npmci": "dist/index.js" "npmci": "dist/cli.js"
}, },
"scripts": { "scripts": {
"test": "(npmts) && (npm run testVersion)", "test": "(npmts) && (npm run testVersion)",
"testVersion": "node dist/index.js -v" "testVersion": "(cd test/assets/ && node ../../dist/cli.js -v)"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+ssh://git@github.com/pushrocks/npmci.git" "url": "git+ssh://git@gitlab.com/gitzone/npmci.git"
}, },
"author": "Lossless GmbH", "author": "Lossless GmbH",
"license": "MIT", "license": "MIT",
"bugs": { "bugs": {
"url": "https://gitlab.com/pushrocks/npmci/issues" "url": "https://gitlab.com/gitzone/npmci/issues"
}, },
"homepage": "https://gitlab.com/pushrocks/npmci#README", "homepage": "https://gitlab.com/gitzone/npmci#README",
"devDependencies": { "devDependencies": {
"npmts-g": "^5.2.6", "@types/should": "^8.1.30",
"should": "^10.0.0", "npmts-g": "^6.0.0",
"typings-test": "^1.0.1" "should": "^11.2.0",
"typings-test": "^1.0.3"
}, },
"dependencies": { "dependencies": {
"beautylog": "^5.0.14", "@types/lodash": "^4.14.52",
"@types/node": "^7.0.5",
"@types/q": "0.x.x",
"@types/request": "0.x.x",
"@types/shelljs": "^0.7.0",
"@types/through2": "^2.0.32",
"beautylog": "^6.1.1",
"gulp": "^3.9.1", "gulp": "^3.9.1",
"gulp-function": "^1.3.6", "gulp-function": "^2.2.3",
"lodash": "^4.13.1", "lodash": "^4.17.4",
"projectinfo": "^1.0.3", "npmextra": "^2.0.3",
"projectinfo": "^3.0.1",
"q": "^1.4.1", "q": "^1.4.1",
"request": "^2.73.0", "request": "^2.79.0",
"shelljs": "^0.7.0", "shelljs": "^0.7.6",
"smartcli": "^1.0.4", "smartcli": "^2.0.1",
"smartfile": "^4.0.11", "smartfile": "^4.1.6",
"smartparam": "^0.1.1", "smartparam": "^0.1.1",
"smartssh": "^1.1.5", "smartsocket": "^1.1.7",
"smartstring": "^2.0.15", "smartssh": "^1.2.1",
"through2": "^2.0.1", "smartstring": "^2.0.24",
"typings-global": "^1.0.6" "through2": "^2.0.3",
"typings-global": "^1.0.14"
} }
} }

3
test/test.d.ts vendored
View File

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

View File

@@ -1,14 +1,13 @@
"use strict"; "use strict";
require("typings-test"); require("typings-test");
require("should"); const should = require("should");
const path = require("path"); const path = require("path");
const beautylog = require("beautylog");
// set up environment // set up environment
process.env.CI_BUILD_REPO = "https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git"; process.env.CI_BUILD_REPO = 'https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git';
process.env.NPMCI_SSHKEY_1 = "hostString|somePrivKey|##"; process.env.NPMCI_SSHKEY_1 = 'hostString|somePrivKey|##';
process.env.NPMTS_TEST = "true"; process.env.NPMTS_TEST = 'true';
process.cwd = () => { process.cwd = () => {
return path.join(__dirname, "assets/"); return path.join(__dirname, 'assets/');
}; };
const NpmciBuildDocker = require("../dist/npmci.build.docker"); const NpmciBuildDocker = require("../dist/npmci.build.docker");
const NpmciPublish = require("../dist/npmci.publish"); const NpmciPublish = require("../dist/npmci.publish");
@@ -17,70 +16,68 @@ const NpmciSsh = require("../dist/npmci.ssh");
let dockerfile1; let dockerfile1;
let dockerfile2; let dockerfile2;
let sortableArray; let sortableArray;
describe("NPMCI", function () { describe('NPMCI', function () {
describe("build.docker", function () { describe('build.docker', function () {
it("should return valid Dockerfiles", function () { it('should return valid Dockerfiles', function () {
dockerfile1 = new NpmciBuildDocker.Dockerfile({ filePath: "./Dockerfile", read: true }); dockerfile1 = new NpmciBuildDocker.Dockerfile({ filePath: './Dockerfile', read: true });
dockerfile2 = new NpmciBuildDocker.Dockerfile({ filePath: "./Dockerfile_sometag1", read: true }); dockerfile2 = new NpmciBuildDocker.Dockerfile({ filePath: './Dockerfile_sometag1', read: true });
dockerfile1.version.should.equal("latest"); should(dockerfile1.version).equal('latest');
dockerfile2.version.should.equal("sometag1"); should(dockerfile2.version).equal('sometag1');
}); });
it("should read a directory of Dockerfiles", function (done) { it('should read a directory of Dockerfiles', function (done) {
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(function (readDockerfilesArrayArg) { .then(function (readDockerfilesArrayArg) {
readDockerfilesArrayArg[1].version.should.equal("sometag1"); should(readDockerfilesArrayArg[1].version).equal('sometag1');
sortableArray = readDockerfilesArrayArg; sortableArray = readDockerfilesArrayArg;
done(); done();
}); });
}); });
it("should sort an array of Dockerfiles", function (done) { it('should sort an array of Dockerfiles', function (done) {
NpmciBuildDocker.sortDockerfiles(sortableArray) NpmciBuildDocker.sortDockerfiles(sortableArray)
.then(function (sortedArrayArg) { .then(function (sortedArrayArg) {
beautylog.success("final result");
console.log(sortedArrayArg); console.log(sortedArrayArg);
done(); done();
}); });
}); });
it("should correctly chain Dockerfile handling", function (done) { it('should correctly chain Dockerfile handling', function (done) {
NpmciBuildDocker.build() NpmciBuildDocker.build()
.then(() => { .then(() => {
done(); done();
}); });
}); });
}); });
describe(".publish.docker", function () { describe('.publish.docker', function () {
it("should publish all built Dockerfiles", function (done) { it('should publish all built Dockerfiles', function (done) {
NpmciPublish.publish("docker") NpmciPublish.publish('docker')
.then(() => { .then(() => {
done(); done();
}); });
;
}); });
}); });
describe(".test.npm", function () { describe('.test.npm', function () {
it("should source nvm using bash and install a specific node version, then test it", function (done) { it('should source nvm using bash and install a specific node version, then test it', function (done) {
NpmciTest.test("legacy") NpmciTest.test('legacy')
.then(() => { .then(() => {
return NpmciTest.test("lts"); return NpmciTest.test('lts');
}) })
.then(() => { .then(() => {
return NpmciTest.test("stable"); return NpmciTest.test('stable');
}) })
.then(() => { .then(() => {
done(); done();
}); });
}); });
}); });
describe("test.docker", function () { describe('test.docker', function () {
it("should test dockerfiles", function (done) { it('should test dockerfiles', function (done) {
NpmciTest.test("docker") NpmciTest.test('docker')
.then(() => { .then(() => {
done(); done();
}); });
}); });
}); });
describe("npmci prepare ssh", function () { describe('npmci prepare ssh', function () {
it("should pick up SSH keys", function (done) { it('should pick up SSH keys', function (done) {
NpmciSsh.ssh() NpmciSsh.ssh()
.then(() => { .then(() => {
done(); done();
@@ -88,4 +85,4 @@ describe("NPMCI", function () {
}); });
}); });
}); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsUUFBTyxRQUFRLENBQUMsQ0FBQTtBQUNoQixNQUFPLElBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUM5QixNQUFZLFNBQVMsV0FBTSxXQUUzQixDQUFDLENBRnFDO0FBQ3RDLG9CQUFvQjtBQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyx1REFBdUQsQ0FBQztBQUNwRixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRywyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDaEMsT0FBTyxDQUFDLEdBQUcsR0FBRztJQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFJRixNQUFPLGdCQUFnQixXQUFXLDRCQUE0QixDQUFDLENBQUM7QUFDaEUsTUFBTyxZQUFZLFdBQVcsdUJBQXVCLENBQUMsQ0FBQztBQUN2RCxNQUFPLFNBQVMsV0FBVyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ2pELE1BQU8sUUFBUSxXQUFXLG1CQUFtQixDQUFDLENBQUE7QUFHOUMsSUFBSSxXQUF1QyxDQUFDO0FBQzVDLElBQUksV0FBdUMsQ0FBQztBQUM1QyxJQUFJLGFBQTJDLENBQUM7QUFFaEQsUUFBUSxDQUFDLE9BQU8sRUFBQztJQUNiLFFBQVEsQ0FBQyxjQUFjLEVBQUM7UUFDcEIsRUFBRSxDQUFDLGlDQUFpQyxFQUFDO1lBQ2pDLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFDLFFBQVEsRUFBQyxjQUFjLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7WUFDbkYsV0FBVyxHQUFHLElBQUksZ0JBQWdCLENB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 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQixpQ0FBZ0M7QUFDaEMsNkJBQTRCO0FBRTVCLHFCQUFxQjtBQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyx1REFBdUQsQ0FBQTtBQUNuRixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRywyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUE7QUFDL0IsT0FBTyxDQUFDLEdBQUcsR0FBRztJQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQTtBQUN6QyxDQUFDLENBQUE7QUFJRCwrREFBK0Q7QUFDL0Qsc0RBQXNEO0FBQ3RELGdEQUFnRDtBQUNoRCw4Q0FBOEM7QUFHOUMsSUFBSSxXQUF3QyxDQUFBO0FBQzVDLElBQUksV0FBd0MsQ0FBQTtBQUM1QyxJQUFJLGFBQTRDLENBQUE7QUFFaEQsUUFBUSxDQUFDLE9BQU8sRUFBQztJQUNiLFFBQVEsQ0FBQyxjQUFjLEVBQUM7UUFDcEIsRUFBRSxDQUFDLGlDQUFpQyxFQUFDO1lBQ2pDLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7WUFDckYsV0FBVyxHQUFHLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUMsUUFBUSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBQzlGLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQzNDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFVB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

View File

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

View File

@@ -1,89 +1,78 @@
#!/usr/bin/env node import * as plugins from './npmci.plugins'
import "typings-global"; import * as paths from './npmci.paths'
import * as plugins from "./npmci.plugins"; let npmciInfo = new plugins.projectinfo.ProjectinfoNpm(paths.NpmciPackageRoot)
import * as paths from "./npmci.paths"; plugins.beautylog.log('npmci version: ' + npmciInfo.version)
let npmciInfo = new plugins.projectinfo.ProjectinfoNpm(paths.NpmciPackageRoot);
plugins.beautylog.log("npmci version: " + npmciInfo.version);
import {build} from "./npmci.build" import { build } from './npmci.build'
import {clean} from "./npmci.clean"; import { clean } from './npmci.clean'
import {command} from "./npmci.command"; import { command } from './npmci.command'
import {install} from "./npmci.install"; import { install } from './npmci.install'
import {publish} from "./npmci.publish"; import { publish } from './npmci.publish'
import {prepare} from "./npmci.prepare"; import { prepare } from './npmci.prepare'
import {test} from "./npmci.test"; import { test } from './npmci.test'
import {trigger} from "./npmci.trigger"; import { trigger } from './npmci.trigger'
import * as NpmciEnv from "./npmci.env"; import * as NpmciEnv from './npmci.env'
export {build} from "./npmci.build" export { build } from './npmci.build'
export {install} from "./npmci.install"; export { install } from './npmci.install';
export {publish} from "./npmci.publish"; export { publish } from './npmci.publish';
let smartcli = new plugins.smartcli.Smartcli()
let smartcli = new plugins.smartcli.Smartcli(); smartcli.addVersion(npmciInfo.version)
smartcli.addVersion(npmciInfo.version);
// build // build
smartcli.addCommand({ smartcli.addCommand('build')
commandName:"build" .then((argv) => {
}).then((argv) => {
build(argv._[ 1 ]) build(argv._[ 1 ])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// clean // clean
smartcli.addCommand({ smartcli.addCommand('clean')
commandName:"clean" .then((argv) => {
}).then((argv) => {
clean() clean()
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// command // command
smartcli.addCommand({ smartcli.addCommand('command')
commandName:"command" .then((argv) => {
}).then((argv) => {
command() command()
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// install // install
smartcli.addCommand({ smartcli.addCommand('install')
commandName:"install" .then((argv) => {
}).then((argv) => {
install(argv._[ 1 ]) install(argv._[ 1 ])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// prepare // prepare
smartcli.addCommand({ smartcli.addCommand('prepare')
commandName:"prepare" .then((argv) => {
}).then((argv) => {
prepare(argv._[ 1 ]) prepare(argv._[ 1 ])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// publish // publish
smartcli.addCommand({ smartcli.addCommand('publish')
commandName:"publish" .then((argv) => {
}).then((argv) => {
publish(argv._[ 1 ]) publish(argv._[ 1 ])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// test // test
smartcli.addCommand({ smartcli.addCommand('test')
commandName:"test" .then((argv) => {
}).then((argv) => {
test(argv._[ 1 ]) test(argv._[ 1 ])
.then(NpmciEnv.configStore); .then(NpmciEnv.configStore)
}); })
// trigger // trigger
smartcli.addCommand({ smartcli.addCommand('trigger')
commandName:"trigger" .then((argv) => {
}).then((argv) => { trigger()
trigger(); })
});
smartcli.startParse(); smartcli.startParse()

View File

@@ -1,38 +1,73 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins";
export let bash = (commandArg:string,retryArg = 2,bareArg = false) => { let nvmSourceString: string = ''
let exitCode:number; export let nvmAvailable: boolean = false
let stdOut:string; let checkNvm = () => {
let execResult; let localExec: any = plugins.shelljs.exec
if(!process.env.NPMTS_TEST){ if (localExec(`bash -c "source /usr/local/nvm/nvm.sh"`, { silent: true }).code === 0) {
nvmSourceString = `source /usr/local/nvm/nvm.sh && `
nvmAvailable = true
} else if (localExec(`bash -c "source ~/.nvm/nvm.sh"`, { silent: true }).code === 0) {
nvmSourceString = `source ~/.nvm/nvm.sh && `
nvmAvailable = true
};
}
checkNvm()
/**
* bash() allows using bash with nvm in path
* @param commandArg - The command to execute
* @param retryArg - The retryArg: 0 to any positive number will retry, -1 will always succeed, -2 will return undefined
*/
export let bash = (commandArg: string, retryArg: number = 2, bareArg: boolean = false): string => {
let exitCode: number
let stdOut: string
let execResult
let failOnError: boolean = true
if (retryArg === -1) {
failOnError = false
retryArg = 0
}
if (!process.env.NPMTS_TEST) { // NPMTS_TEST is used during testing
for (let i = 0; i <= retryArg; i++) { for (let i = 0; i <= retryArg; i++) {
if (!bareArg) { if (!bareArg) {
execResult = plugins.shelljs.exec( execResult = plugins.shelljs.exec(
"bash -c \"source /usr/local/nvm/nvm.sh &&" + `bash -c "${nvmSourceString} ${commandArg}"`
commandArg + )
"\""
);
} else { } else {
execResult = plugins.shelljs.exec(commandArg); execResult = plugins.shelljs.exec(commandArg)
} }
exitCode = execResult.code; exitCode = execResult.code
stdOut = execResult.stdout; stdOut = execResult.stdout
if(exitCode !== 0 && i == retryArg){
process.exit(1); // determine how bash reacts to error and success
} else if(exitCode == 0){ if (exitCode !== 0 && i === retryArg) { // something went wrong and retries are exhausted
i = retryArg + 1; // if everything works out ok retrials are not wanted if (failOnError) {
process.exit(1)
}
} else if (exitCode === 0) { // everything went fine, or no error wanted
i = retryArg + 1 // retry +1 breaks for loop, if everything works out ok retrials are not wanted
} else { } else {
plugins.beautylog.warn("Something went wrong! Exit Code: " + exitCode.toString()); plugins.beautylog.warn('Something went wrong! Exit Code: ' + exitCode.toString())
plugins.beautylog.info("Retry " + (i + 1).toString() + " of " + retryArg.toString()); plugins.beautylog.info('Retry ' + (i + 1).toString() + ' of ' + retryArg.toString())
} }
} }
} else { } else {
plugins.beautylog.log("ShellExec would be: " + commandArg.blue) plugins.beautylog.log('ShellExec would be: ' + commandArg)
} }
return stdOut; return stdOut
} }
export let bashBare = (commandArg,retryArg = 2) => { /**
return bash(commandArg,retryArg,true); * bashBare allows usage of bash without sourcing any files like nvm
*/
export let bashBare = (commandArg: string, retryArg: number = 2) => {
return bash(commandArg, retryArg, true)
}
/**
* bashNoError allows executing stuff without throwing an error
*/
export let bashNoError = (commandArg: string): string => {
return bash(commandArg, -1)
} }

View File

@@ -1,229 +1,293 @@
import * as plugins from "./npmci.plugins"; import * as plugins from './npmci.plugins'
import * as paths from "./npmci.paths"; import * as paths from './npmci.paths'
import * as NpmciEnv from "./npmci.env"; import * as NpmciEnv from './npmci.env'
import {bashBare} from "./npmci.bash"; import {bashBare} from './npmci.bash'
/**
* builds a cwd of Dockerfiles by triggering a promisechain
*/
export let build = function(){ export let build = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
readDockerfiles() readDockerfiles()
.then(sortDockerfiles) .then(sortDockerfiles)
.then(mapDockerfiles) .then(mapDockerfiles)
.then(buildDockerfiles) .then(buildDockerfiles)
.then(pushDockerfiles) .then(pushDockerfiles)
.then(() => { .then(() => {
done.resolve(); done.resolve()
}); })
return done.promise; return done.promise
} }
export let readDockerfiles = function(){ /**
let done = plugins.q.defer(); * creates instance of class Dockerfile for all Dockerfiles in cwd
* @returns Promise<Dockerfile[]>
*/
export let readDockerfiles = function(): plugins.q.Promise<Dockerfile[]>{
let done = plugins.q.defer<Dockerfile[]>()
let readDockerfilesArray: Dockerfile[] = [] let readDockerfilesArray: Dockerfile[] = []
plugins.gulp.src("./Dockerfile*") plugins.gulp.src('./Dockerfile*')
.pipe(plugins.through2.obj(function(file,enc,cb){ .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
}); })
readDockerfilesArray.push(myDockerfile); readDockerfilesArray.push(myDockerfile)
cb(null,file); cb(null,file)
},function(){ },function(){
done.resolve(readDockerfilesArray); done.resolve(readDockerfilesArray)
})); }))
return done.promise; return done.promise
} }
export let sortDockerfiles = function(sortableArrayArg:Dockerfile[]){ /**
let done = plugins.q.defer(); * sorts Dockerfiles into a dependency chain
let sortedArray:Dockerfile[] = []; * @param sortableArrayArg an array of instances of class Dockerfile
let cleanTagsOriginal = cleanTagsArrayFunction(sortableArrayArg,sortedArray); * @returns Promise<Dockerfile[]>
let sorterFunctionCounter:number = 0; */
export let sortDockerfiles = function(sortableArrayArg: Dockerfile[]): plugins.q.Promise<Dockerfile[]>{
let done = plugins.q.defer<Dockerfile[]>()
let sortedArray: Dockerfile[] = []
let cleanTagsOriginal = cleanTagsArrayFunction(sortableArrayArg,sortedArray)
let sorterFunctionCounter: number = 0
let sorterFunction = function(){ let sorterFunction = function(){
sortableArrayArg.forEach((dockerfileArg) => { sortableArrayArg.forEach((dockerfileArg) => {
let cleanTags = cleanTagsArrayFunction(sortableArrayArg,sortedArray); let cleanTags = cleanTagsArrayFunction(sortableArrayArg,sortedArray)
if(cleanTags.indexOf(dockerfileArg.baseImage) == -1 && sortedArray.indexOf(dockerfileArg) == -1){ if (cleanTags.indexOf(dockerfileArg.baseImage) === -1 && sortedArray.indexOf(dockerfileArg) === -1) {
sortedArray.push(dockerfileArg); sortedArray.push(dockerfileArg)
}; };
if(cleanTagsOriginal.indexOf(dockerfileArg.baseImage) != -1){ if (cleanTagsOriginal.indexOf(dockerfileArg.baseImage) !== -1) {
dockerfileArg.localBaseImageDependent = true; dockerfileArg.localBaseImageDependent = true
}; };
}); })
if(sortableArrayArg.length == sortedArray.length){ if (sortableArrayArg.length === sortedArray.length) {
done.resolve(sortedArray); done.resolve(sortedArray)
} else if (sorterFunctionCounter < 10) { } else if (sorterFunctionCounter < 10) {
sorterFunctionCounter++; sorterFunctionCounter++
sorterFunction(); sorterFunction()
}; };
} }
sorterFunction(); sorterFunction()
return done.promise; return done.promise
}; }
export let mapDockerfiles = function(sortedArray:Dockerfile[]){ /**
let done = plugins.q.defer(); * maps local Dockerfiles dependencies to the correspoding Dockerfile class instances
*/
export let mapDockerfiles = function(sortedArray: Dockerfile[]): plugins.q.Promise<Dockerfile[]>{
let done = plugins.q.defer<Dockerfile[]>()
sortedArray.forEach((dockerfileArg) => { sortedArray.forEach((dockerfileArg) => {
if (dockerfileArg.localBaseImageDependent) { if (dockerfileArg.localBaseImageDependent) {
sortedArray.forEach((dockfile2: Dockerfile) => { sortedArray.forEach((dockfile2: Dockerfile) => {
if(dockfile2.cleanTag == dockerfileArg.baseImage){ if (dockfile2.cleanTag === dockerfileArg.baseImage) {
dockerfileArg.localBaseDockerfile = dockfile2; dockerfileArg.localBaseDockerfile = dockfile2
} }
}) })
}; };
}); })
done.resolve(sortedArray); done.resolve(sortedArray)
return done.promise; return done.promise
} }
/**
* builds the correspoding real docker image for each Dockerfile class instance
*/
export let buildDockerfiles = (sortedArrayArg: Dockerfile[]) => { export let buildDockerfiles = (sortedArrayArg: Dockerfile[]) => {
let done = plugins.q.defer(); let done = plugins.q.defer()
sortedArrayArg.forEach(function(dockerfileArg){ sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.build(); dockerfileArg.build()
}) })
done.resolve(sortedArrayArg); done.resolve(sortedArrayArg)
return done.promise; return done.promise
} }
/**
* pushes the real Dockerfile images to a Docker registry
*/
export let pushDockerfiles = function(sortedArrayArg: Dockerfile[]){ export let pushDockerfiles = function(sortedArrayArg: Dockerfile[]){
let done = plugins.q.defer(); let done = plugins.q.defer()
sortedArrayArg.forEach(function(dockerfileArg){ sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.push(NpmciEnv.buildStage); dockerfileArg.push(NpmciEnv.buildStage)
}); })
done.resolve(sortedArrayArg); done.resolve(sortedArrayArg)
return done.promise; return done.promise
} }
export let pullDockerfileImages = (sortableArrayArg:Dockerfile[],registryArg = "registry.gitlab.com") => { /**
let done = plugins.q.defer(); * pulls corresponding real Docker images for instances of Dockerfile from a registry.
* This is needed if building, testing, and publishing of Docker images is carried out in seperate CI stages.
*/
export let pullDockerfileImages = (sortableArrayArg: Dockerfile[],registryArg = 'registry.gitlab.com') => {
let done = plugins.q.defer()
sortableArrayArg.forEach((dockerfileArg) => { sortableArrayArg.forEach((dockerfileArg) => {
dockerfileArg.pull(registryArg); dockerfileArg.pull(registryArg)
}); })
done.resolve(sortableArrayArg); done.resolve(sortableArrayArg)
return done.promise; return done.promise
} }
/**
* tests all Dockerfiles in by calling class Dockerfile.test();
* @param sortedArrayArg Dockerfile[] that contains all Dockerfiles in cwd
*/
export let testDockerfiles = (sortedArrayArg: Dockerfile[]) => { export let testDockerfiles = (sortedArrayArg: Dockerfile[]) => {
let done = plugins.q.defer(); let done = plugins.q.defer()
sortedArrayArg.forEach(function(dockerfileArg){ sortedArrayArg.forEach(function(dockerfileArg){
dockerfileArg.test(); dockerfileArg.test()
}); })
done.resolve(sortedArrayArg); done.resolve(sortedArrayArg)
return done.promise; return done.promise
}; }
/**
* class Dockerfile represents a Dockerfile on disk in npmci
*/
export class Dockerfile { export class Dockerfile {
filePath:string; filePath: string
repo:string; repo: string
version:string; version: string
cleanTag:string; cleanTag: string
buildTag:string; buildTag: string
testTag:string; testTag: string
releaseTag:string; releaseTag: string
containerName: string containerName: string
content:string; content: string
baseImage:string; baseImage: string
localBaseImageDependent:boolean; localBaseImageDependent: boolean
localBaseDockerfile:Dockerfile; 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 = this.cleanTag; this.buildTag = this.cleanTag
this.testTag = dockerTag("registry.gitlab.com",this.repo,this.version,"test"); this.testTag = dockerTag('registry.gitlab.com',this.repo,this.version,'test')
this.releaseTag = dockerTag(NpmciEnv.dockerRegistry,this.repo,this.version); this.releaseTag = dockerTag(NpmciEnv.dockerRegistry,this.repo,this.version)
this.containerName = "dockerfile-" + this.version; this.containerName = 'dockerfile-' + this.version
if (options.filePath && options.read) { if (options.filePath && options.read) {
this.content = plugins.smartfile.fs.toStringSync(plugins.path.resolve(options.filePath)); this.content = plugins.smartfile.fs.toStringSync(plugins.path.resolve(options.filePath))
}; };
this.baseImage = dockerBaseImage(this.content); this.baseImage = dockerBaseImage(this.content)
this.localBaseImageDependent = false; this.localBaseImageDependent = false
}; };
/**
* builds the Dockerfile
*/
build() { build() {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.info("now building Dockerfile for " + this.cleanTag); plugins.beautylog.info('now building Dockerfile for ' + this.cleanTag)
bashBare("docker build -t " + this.buildTag + " -f " + this.filePath + " ."); bashBare('docker build -t ' + this.buildTag + ' -f ' + this.filePath + ' .')
NpmciEnv.dockerFilesBuilt.push(this); NpmciEnv.dockerFilesBuilt.push(this)
done.resolve(); done.resolve()
return done.promise; return done.promise
}; };
/**
* pushes the Dockerfile to a registry
*/
push(stageArg) { push(stageArg) {
let done = plugins.q.defer(); let done = plugins.q.defer()
let pushTag; let pushTag
switch (stageArg) { switch (stageArg) {
case "release": case 'release':
pushTag = this.releaseTag; pushTag = this.releaseTag
break; break
case "test": case 'test':
default: default:
pushTag = this.testTag; pushTag = this.testTag
break; break
}
bashBare("docker tag " + this.buildTag + " " + pushTag);
bashBare("docker push " + pushTag);
done.resolve();
return done.promise;
} }
bashBare('docker tag ' + this.buildTag + ' ' + pushTag)
bashBare('docker push ' + pushTag)
done.resolve()
return done.promise
};
/**
* pulls the Dockerfile from a registry
*/
pull(registryArg: string) { pull(registryArg: string) {
let pullTag = this.testTag; let pullTag = this.testTag
bashBare("docker pull " + pullTag); bashBare('docker pull ' + pullTag)
bashBare("docker tag " + pullTag + " " + this.buildTag); bashBare('docker tag ' + pullTag + ' ' + this.buildTag)
}; };
/**
* tests the Dockerfile;
*/
test() { test() {
let testFile:string = plugins.path.join(paths.NpmciTestDir,"test_" + this.version + ".sh"); let testFile: string = plugins.path.join(paths.NpmciTestDir,'test_' + this.version + '.sh')
let testFileExists:boolean = plugins.smartfile.fs.fileExistsSync(testFile); let testFileExists: boolean = plugins.smartfile.fs.fileExistsSync(testFile)
if (testFileExists) { if (testFileExists) {
bashBare("docker run --name npmci_test_container " + this.buildTag + " mkdir /npmci_test"); bashBare('docker run --name npmci_test_container ' + this.buildTag + ' mkdir /npmci_test')
bashBare("docker cp " + testFile + " npmci_test_container:/npmci_test/test.sh"); bashBare('docker cp ' + testFile + ' npmci_test_container:/npmci_test/test.sh')
bashBare("docker commit npmci_test_container npmci_test_image"); bashBare('docker commit npmci_test_container npmci_test_image')
bashBare("docker run npmci_test_image sh /npmci_test/test.sh"); bashBare('docker run npmci_test_image sh /npmci_test/test.sh')
bashBare("docker rm npmci_test_container"); bashBare('docker rm npmci_test_container')
bashBare("docker rmi --force npmci_test_image"); bashBare('docker rmi --force npmci_test_image')
} else { } else {
plugins.beautylog.warn("skipping tests for " + this.cleanTag + " because no testfile was found!"); plugins.beautylog.warn('skipping tests for ' + this.cleanTag + ' because no testfile was found!')
} }
}; };
/**
* gets the id of a Dockerfile
*/
getId() { getId() {
let containerId = bashBare("docker inspect --type=image --format=\"{{.Id}}\" " + this.buildTag); let containerId = bashBare('docker inspect --type=image --format=\"{{.Id}}\" ' + this.buildTag)
return containerId; return containerId
}; };
} }
/**
*
*/
export 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 && regexResultArray.length == 2){ if (regexResultArray && regexResultArray.length === 2) {
versionString = regexResultArray[1]; versionString = regexResultArray[1]
} else { } else {
versionString = "latest"; versionString = 'latest'
} }
return versionString; return versionString
} }
/**
*
*/
export 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(registryArg: string,repoArg: string,versionArg: string,suffixArg?: string): string{ export let dockerTag = function(registryArg: string,repoArg: string,versionArg: string,suffixArg?: string): string{
let tagString:string; let tagString: string
let registry = registryArg; let registry = registryArg
let repo = repoArg; let repo = repoArg
let version = versionArg; let version = versionArg
if (suffixArg) { if (suffixArg) {
version = versionArg + "_" + suffixArg; version = versionArg + '_' + suffixArg
};
tagString = registry + "/" + repo + ":" + version;
return tagString;
}; };
tagString = registry + '/' + repo + ':' + version
return tagString
}
/**
*
*/
export let cleanTagsArrayFunction = function(dockerfileArrayArg: Dockerfile[],trackingArrayArg: Dockerfile[]): string[]{ export let cleanTagsArrayFunction = function(dockerfileArrayArg: Dockerfile[],trackingArrayArg: Dockerfile[]): string[]{
let cleanTagsArray:string[] = []; let cleanTagsArray: string[] = []
dockerfileArrayArg.forEach(function(dockerfileArg){ dockerfileArrayArg.forEach(function(dockerfileArg){
if(trackingArrayArg.indexOf(dockerfileArg) == -1){ if (trackingArrayArg.indexOf(dockerfileArg) === -1) {
cleanTagsArray.push(dockerfileArg.cleanTag); cleanTagsArray.push(dockerfileArg.cleanTag)
} }
}); })
return cleanTagsArray; return cleanTagsArray
} }

View File

@@ -1,17 +1,22 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash"; import * as env from './npmci.env'
import * as env from "./npmci.env"; import * as buildDocker from './npmci.build.docker'
import * as buildDocker from "./npmci.build.docker"
export let build = function(commandArg){ /**
* defines possible build services
*/
export type TBuildService = 'docker';
/**
* builds for a specific service
*/
export let build = function(commandArg): plugins.q.Promise<any> {
switch (commandArg) { switch (commandArg) {
case "docker": case 'docker':
return buildDocker.build(); return buildDocker.build()
default: default:
plugins.beautylog.log("build target " + commandArg + " not recognised!"); plugins.beautylog.log('build target ' + commandArg + ' not recognised!')
};
return
} }
}

View File

@@ -1,13 +1,12 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import * as paths from './npmci.paths'
import * as paths from "./npmci.paths"
/** /**
* cleans npmci config files * cleans npmci config files
*/ */
export let clean = () => { export let clean = () => {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.smartfile.fs.removeSync(paths.NpmciPackageConfig); plugins.smartfile.fs.removeSync(paths.NpmciPackageConfig)
done.resolve(); done.resolve()
return done.promise; return done.promise
}; }

View File

@@ -1,16 +1,15 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash";
export let command = () => { export let command = () => {
let done = plugins.q.defer() let done = plugins.q.defer()
let wrappedCommand:string = ""; let wrappedCommand: string = ''
let argvArray = process.argv; let argvArray = process.argv
for (let i = 3; i < argvArray.length; i++) { for (let i = 3; i < argvArray.length; i++) {
wrappedCommand = wrappedCommand + argvArray[i]; wrappedCommand = wrappedCommand + argvArray[i]
if(i + 1 != argvArray.length) wrappedCommand = wrappedCommand + " "; if (i + 1 !== argvArray.length) { wrappedCommand = wrappedCommand + ' ' }
} }
bash(wrappedCommand); bash(wrappedCommand)
done.resolve(); done.resolve()
return done.promise return done.promise
} }

19
ts/npmci.config.ts Normal file
View File

@@ -0,0 +1,19 @@
import * as q from 'q'
import * as plugins from './npmci.plugins'
import * as paths from './npmci.paths'
export interface INpmciOptions {
globalNpmTools: string[]
}
export let getConfig = () => {
let done = q.defer<INpmciOptions>()
let npmciNpmextra = new plugins.npmextra.Npmextra(paths.cwd)
let defaultConfig: INpmciOptions = {
globalNpmTools: []
}
let npmciConfig = npmciNpmextra.dataFor<INpmciOptions>('npmci', defaultConfig)
done.resolve(npmciConfig)
return done.promise
}

View File

@@ -1,56 +1,58 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import * as paths from './npmci.paths'
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:GitRepo; export let repo: GitRepo
if(process.env.CI_BUILD_REPO) repo = new GitRepo(process.env.CI_BUILD_REPO); if (process.env.CI_BUILD_REPO) repo = new GitRepo(process.env.CI_BUILD_REPO)
export let buildStage:string = process.env.CI_BUILD_STAGE; export let buildStage: string = process.env.CI_BUILD_STAGE
// handling config between commands // handling config between commands
export let dockerRegistry:string; // will be set by npmci.prepare export let dockerRegistry: string // will be set by npmci.prepare
export let dockerFilesBuilt:Dockerfile[] = []; export let setDockerRegistry = (dockerRegistryArg: string) => {
export let dockerFiles:Dockerfile[] = []; dockerRegistry = dockerRegistryArg
}
export let dockerFilesBuilt: Dockerfile[] = []
export let dockerFiles: Dockerfile[] = []
export let config = { export let config = {
dockerRegistry: undefined, // this will be set later on store dockerRegistry: undefined, // this will be set later on store
dockerFilesBuilt: dockerFilesBuilt, dockerFilesBuilt: dockerFilesBuilt,
dockerFiles: dockerFiles, dockerFiles: dockerFiles,
project: undefined project: undefined
}; }
export let configStore = () => { export let configStore = () => {
config.dockerRegistry = dockerRegistry; config.dockerRegistry = dockerRegistry
plugins.smartfile.memory.toFsSync( plugins.smartfile.memory.toFsSync(
JSON.stringify(config), JSON.stringify(config),
paths.NpmciPackageConfig paths.NpmciPackageConfig
); )
} }
let configLoad = () => { let configLoad = () => {
// internal config to transfer information in between npmci shell calls // internal config to transfer information in between npmci shell calls
try { try {
plugins.lodash.assign(config,plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig,"json")); plugins.lodash.assign(config,plugins.smartfile.fs.toObjectSync(paths.NpmciPackageConfig,'json'))
} }
catch (err) { catch (err) {
configStore(); configStore()
plugins.beautylog.log("config initialized!"); plugins.beautylog.log('config initialized!')
} }
// project config // project config
try { try {
if (!config.project) { if (!config.project) {
config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir,"npmci.json"); config.project = plugins.smartfile.fs.toObjectSync(paths.NpmciProjectDir,'npmci.json')
plugins.beautylog.ok("project config found!"); plugins.beautylog.ok('project config found!')
}; };
} }
catch (err) { catch (err) {
config.project = {}; config.project = {}
plugins.beautylog.log("no project config found, so proceeding with default behaviour!"); plugins.beautylog.log('no project config found, so proceeding with default behaviour!')
} }
config.dockerRegistry ? dockerRegistry = config.dockerRegistry : void(0); config.dockerRegistry ? dockerRegistry = config.dockerRegistry : void(0)
config.dockerFilesBuilt ? dockerFilesBuilt = config.dockerFilesBuilt : void(0); config.dockerFilesBuilt ? dockerFilesBuilt = config.dockerFilesBuilt : void(0)
} }
configLoad(); configLoad()

View File

@@ -1,27 +1,45 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import * as configModule from './npmci.config'
import {bash} from "./npmci.bash"; import { bash, bashNoError } from './npmci.bash'
import { nvmAvailable } from './npmci.bash'
export let install = (versionArg) => { export let install = (versionArg) => {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.log("now installing " + "node ".green + ("version " + versionArg).yellow); plugins.beautylog.log(`now installing node version ${versionArg}`)
let version:string; let version: string
if(versionArg == "stable"){ if (versionArg === 'stable') {
version = "6.3.0"; version = 'stable'
} else if(versionArg == "lts"){ } else if (versionArg === 'lts') {
version = "6.3.0"; version = '6'
} else if(versionArg == "legacy"){ } else if (versionArg === 'legacy') {
version = "6.3.0" version = '6'
} else { } else {
version = versionArg; version = versionArg
}; };
bash( if (nvmAvailable) {
"nvm install " + version + bash(`nvm install ${version} && nvm alias default ${version}`)
" && nvm alias default " + version plugins.beautylog.success(`Node version ${version} successfully installed!`)
); } else {
plugins.beautylog.success("Node version " + version + " successfully installed!"); plugins.beautylog.warn('Nvm not in path so staying at installed node version!')
bash("node -v"); };
bash("npm -v"); bash('node -v')
done.resolve(); bash('npm -v')
return done.promise; // lets look for further config
configModule.getConfig()
.then(configArg => {
plugins.beautylog.log('Now checking for needed global npm tools...')
for (let npmTool of configArg.globalNpmTools) {
plugins.beautylog.info(`Checking for global "${npmTool}"`)
let whichOutput = bashNoError(`which ${npmTool}`)
let toolAvailable: boolean = !((/not\sfound/.test(whichOutput)) || whichOutput === '')
if (toolAvailable) {
plugins.beautylog.log(`Tool ${npmTool} is available`)
} else {
plugins.beautylog.info(`globally installing ${npmTool} from npm`)
bash(`npm install ${npmTool} -q -g`)
}
}
plugins.beautylog.success('all global npm tools specified in npmextra.json are now available!')
done.resolve()
})
return done.promise
} }

View File

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

View File

@@ -1,16 +1,17 @@
import "typings-global"; export import beautylog = require('beautylog')
export import beautylog = require("beautylog"); export let gulp = require('gulp')
export let gulp = require("gulp"); export import gulpFunction = require('gulp-function')
export let gulpFunction = require("gulp-function"); export import lodash = require('lodash')
export let lodash = require("lodash"); export import npmextra = require('npmextra')
export import path = require("path"); export import path = require('path')
export import projectinfo = require("projectinfo"); export import projectinfo = require('projectinfo')
export let q = require("q"); export import q = require('q')
export let request = require("request"); export let request = require('request')
export let shelljs = require("shelljs"); export import shelljs = require('shelljs')
export import smartcli = require("smartcli"); export import smartcli = require('smartcli')
export import smartfile = require("smartfile"); export import smartfile = require('smartfile')
export import smartparam = require("smartparam"); export import smartparam = require('smartparam')
export import smartssh = require("smartssh"); export import smartsocket = require('smartsocket')
export import smartstring = require("smartstring"); export import smartssh = require('smartssh')
export let through2 = require("through2"); export import smartstring = require('smartstring')
export import through2 = require('through2')

View File

@@ -1,70 +1,93 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins"; import {bash} from './npmci.bash'
import {bash} from "./npmci.bash"; import * as env from './npmci.env'
import * as env from "./npmci.env" import * as sshModule from './npmci.ssh'
import * as sshModule from "./npmci.ssh"
// types
/**
* defines possible prepare services
*/
export type TPrepService = 'npm' | 'docker' | 'docker-gitlab' | 'ssh';
/**
* authenticates npm with token from env var
*/
let npm = function(){ let npm = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
let npmrcPrefix:string = "//registry.npmjs.org/:_authToken="; let npmrcPrefix: string = '//registry.npmjs.org/:_authToken='
let npmToken:string = process.env.NPMCI_TOKEN_NPM; let npmToken: string = process.env.NPMCI_TOKEN_NPM
let npmrcFileString = npmrcPrefix + npmToken; let npmrcFileString = npmrcPrefix + npmToken
if (npmToken) { if (npmToken) {
plugins.beautylog.info("found access token"); plugins.beautylog.info('found access token')
} else { } else {
plugins.beautylog.error("no access token found! Exiting!"); plugins.beautylog.error('no access token found! Exiting!')
process.exit(1); process.exit(1)
}
plugins.smartfile.memory.toFsSync(npmrcFileString,'/root/.npmrc')
done.resolve()
return done.promise
} }
plugins.smartfile.memory.toFsSync(npmrcFileString,"/root/.npmrc");
done.resolve();
return done.promise;
};
/**
* logs in docker
*/
let docker = function(){ let docker = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
env.dockerRegistry = "docker.io" env.setDockerRegistry('docker.io')
let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/ let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/
if (!process.env.NPMCI_LOGIN_DOCKER) { if (!process.env.NPMCI_LOGIN_DOCKER) {
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 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]
plugins.shelljs.exec("docker login -u " + username + " -p " + password); plugins.shelljs.exec('docker login -u ' + username + ' -p ' + password)
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
/**
* prepare docker for gitlab registry
*/
let dockerGitlab = function(){ let dockerGitlab = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
env.dockerRegistry = "registry.gitlab.com"; env.setDockerRegistry('registry.gitlab.com')
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 ' + process.env.CI_BUILD_TOKEN + ' ' + 'registry.gitlab.com')
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
/**
* prepare ssh
*/
let ssh = function(){ let ssh = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
sshModule.ssh() sshModule.ssh()
.then(done.resolve); .then(done.resolve)
return done.promise; return done.promise
} }
export let prepare = function(serviceArg:string){ /**
* the main exported prepare function
* @param servieArg describes the service to prepare
*/
export let prepare = function(serviceArg: TPrepService){
switch (serviceArg) { switch (serviceArg) {
case "npm": case 'npm':
return npm(); return npm()
case "docker": case 'docker':
return docker(); return docker()
case "docker-gitlab": case 'docker-gitlab':
return dockerGitlab(); return dockerGitlab()
case "ssh": case 'ssh':
return ssh(); return ssh()
default: default:
break; break
} }
} }

View File

@@ -1,35 +1,49 @@
import "typings-global"; import * as plugins from './npmci.plugins'
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'
import * as NpmciBuildDocker from "./npmci.build.docker"
export let publish = (serviceArg:string = "npm") => { /**
switch (serviceArg){ * type of supported services
case "npm": */
return publishNpm(); export type TPubService = 'npm' | 'docker';
case "docker":
return publishDocker(); /**
* the main exported publish function.
* @param pubServiceArg references targeted service to publish to
*/
export let publish = (pubServiceArg: TPubService = 'npm') => {
switch (pubServiceArg) {
case 'npm':
return publishNpm()
case 'docker':
return publishDocker()
}
} }
};
/**
* tries to publish current cwd to NPM registry
*/
let publishNpm = function(){ let publishNpm = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
prepare("npm") prepare('npm')
.then(function(){ .then(function(){
bash("npm publish"); bash('npm publish')
plugins.beautylog.ok("Done!") ; plugins.beautylog.ok('Done!')
done.resolve(); done.resolve()
}); })
return done.promise; return done.promise
} }
/**
* tries to pubish current cwd to Docker registry
*/
let publishDocker = function(){ let publishDocker = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages) .then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.pushDockerfiles) .then(NpmciBuildDocker.pushDockerfiles)
.then(done.resolve); .then(done.resolve)
return done.promise; return done.promise
}; }

32
ts/npmci.servezone.ts Normal file
View File

@@ -0,0 +1,32 @@
import * as plugins from './npmci.plugins'
/**
* servezoneRegex is the regex that parses the servezone connection data
* parses strings in the form of "servezone.example.com|3000|somepassword"
*/
let servezoneRegex = /^(.*)\|(.*)\|(.*)/
/**
* holds the results of the parsed servezone env string
*/
let servezoneRegexResultArray = servezoneRegex.exec(process.env.NPMCI_SERVEZONE)
/**
* the data object that is used for the smartsocket client object
*/
let smartsocketClientConstructorOptions = {
alias: 'npmci',
password: servezoneRegexResultArray[3],
port: parseInt(servezoneRegexResultArray[2]),
role: 'ci',
url: servezoneRegexResultArray[1]
}
/**
* the main run function to submit a service to a servezone
*/
export let run = (configArg) => {
new plugins.smartsocket.SmartsocketClient(
smartsocketClientConstructorOptions
)
}

View File

@@ -1,42 +1,50 @@
import "typings-global"; import * as plugins from './npmci.plugins'
import * as plugins from "./npmci.plugins";
let sshRegex = /^(.*)\|(.*)\|(.*)/ let sshRegex = /^(.*)\|(.*)\|(.*)/
let sshInstance:plugins.smartssh.SshInstance; let sshInstance: plugins.smartssh.SshInstance
/**
* checks for ENV vars in form of NPMCI_SSHKEY_* and deploys any found ones
*/
export let ssh = () => { export let ssh = () => {
let done = plugins.q.defer(); let done = plugins.q.defer()
sshInstance = new plugins.smartssh.SshInstance(); sshInstance = new plugins.smartssh.SshInstance() // init ssh instance
plugins.smartparam.forEachMinimatch(process.env,"NPMCI_SSHKEY_*",evaluateSshEnv); plugins.smartparam.forEachMinimatch(process.env,'NPMCI_SSHKEY_*',evaluateSshEnv)
if (!process.env.NPMTS_TEST) { if (!process.env.NPMTS_TEST) {
sshInstance.writeToDisk() sshInstance.writeToDisk()
} else { } else {
plugins.beautylog.log("In test mode, so not storing SSH keys to disk!"); plugins.beautylog.log('In test mode, so not storing SSH keys to disk!')
};
done.resolve();
return done.promise;
}; };
done.resolve()
return done.promise
}
/**
* gets called for each found SSH ENV Var and deploys it
*/
let evaluateSshEnv = (sshkeyEnvVarArg) => { let evaluateSshEnv = (sshkeyEnvVarArg) => {
let resultArray = sshRegex.exec(sshkeyEnvVarArg); let resultArray = sshRegex.exec(sshkeyEnvVarArg)
let sshKey = new plugins.smartssh.SshKey(); let sshKey = new plugins.smartssh.SshKey()
plugins.beautylog.info("Found SSH identity for " + resultArray[1]); plugins.beautylog.info('Found SSH identity for ' + resultArray[1])
if (notUndefined(resultArray[1])) { if (notUndefined(resultArray[1])) {
plugins.beautylog.log("---> host defined!") plugins.beautylog.log('---> host defined!')
sshKey.host = resultArray[1]; sshKey.host = resultArray[1]
} }
if (notUndefined(resultArray[2])) { if (notUndefined(resultArray[2])) {
plugins.beautylog.log("---> privKey defined!") plugins.beautylog.log('---> privKey defined!')
sshKey.privKeyBase64 = resultArray[2]; sshKey.privKeyBase64 = resultArray[2]
}; };
if (notUndefined(resultArray[3])) { if (notUndefined(resultArray[3])) {
"---> pubKey defined!" '---> pubKey defined!'
sshKey.pubKeyBase64 = resultArray[3]; sshKey.pubKeyBase64 = resultArray[3]
}; };
sshInstance.addKey(sshKey); sshInstance.addKey(sshKey)
}; }
let notUndefined = (stringArg:string) => { /**
return (stringArg && stringArg != "undefined" && stringArg != "##"); * checks if not undefined
*/
let notUndefined = (stringArg: string) => {
return (stringArg && stringArg !== 'undefined' && stringArg !== '##')
} }

View File

@@ -1,50 +1,49 @@
import "typings-global"; import * as plugins from './npmci.plugins'
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'
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()
if(versionArg == "docker"){ if (versionArg === 'docker') {
testDocker() testDocker()
.then(() => { .then(() => {
done.resolve(); done.resolve()
}); })
} else { } else {
install(versionArg) install(versionArg)
.then(npmDependencies) .then(npmDependencies)
.then(npmTest) .then(npmTest)
.then(() => { .then(() => {
done.resolve(); done.resolve()
}); })
} }
return done.promise; return done.promise
} }
let npmDependencies = function(){ let npmDependencies = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.info("now installing dependencies:"); plugins.beautylog.info('now installing dependencies:')
bash("npm install"); bash('npm install')
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
let npmTest = () => { let npmTest = () => {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.info("now starting tests:"); plugins.beautylog.info('now starting tests:')
bash("npm test"); bash('npm test')
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
let testDocker = function(){ let testDocker = function(){
let done = plugins.q.defer(); let done = plugins.q.defer()
NpmciBuildDocker.readDockerfiles() NpmciBuildDocker.readDockerfiles()
.then(NpmciBuildDocker.pullDockerfileImages) .then(NpmciBuildDocker.pullDockerfileImages)
.then(NpmciBuildDocker.testDockerfiles) .then(NpmciBuildDocker.testDockerfiles)
.then(done.resolve) .then(done.resolve)
return done.promise; return done.promise
} }

View File

@@ -1,32 +1,30 @@
import "typings-global"; import * as plugins from './npmci.plugins'
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";
let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/
let triggerValueRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)\|?([a-zA-Z0-9\.\-\/]*)/;
export let trigger = function () { export let trigger = function () {
let done = plugins.q.defer(); let done = plugins.q.defer()
plugins.beautylog.info("now running triggers"); plugins.beautylog.info('now running triggers')
plugins.smartparam.forEachMinimatch(process.env, "NPMCI_TRIGGER_*", evaluateTrigger); plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TRIGGER_*', evaluateTrigger)
done.resolve(); done.resolve()
return done.promise; return done.promise
} }
let evaluateTrigger = (triggerEnvVarArg) => { let evaluateTrigger = (triggerEnvVarArg) => {
let triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg); let triggerRegexResultArray = triggerValueRegex.exec(triggerEnvVarArg)
let regexDomain = triggerRegexResultArray[1]; let regexDomain = triggerRegexResultArray[1]
let regexProjectId = triggerRegexResultArray[2]; let regexProjectId = triggerRegexResultArray[2]
let regexProjectTriggerToken = triggerRegexResultArray[3]; let regexProjectTriggerToken = triggerRegexResultArray[3]
let regexRefName = triggerRegexResultArray[4]; let regexRefName = triggerRegexResultArray[4]
let regexTriggerName; let regexTriggerName
if (triggerRegexResultArray.length == 6) { if (triggerRegexResultArray.length === 6) {
regexTriggerName = triggerRegexResultArray[5]; regexTriggerName = triggerRegexResultArray[5]
} else { } else {
regexTriggerName = "Unnamed Trigger"; regexTriggerName = 'Unnamed Trigger'
} }
plugins.beautylog.info("Found Trigger!"); plugins.beautylog.info('Found Trigger!')
plugins.beautylog.log("triggering build for ref " + regexRefName + " of " + regexTriggerName); plugins.beautylog.log('triggering build for ref ' + regexRefName + ' of ' + regexTriggerName)
plugins.request.post("https://gitlab.com/api/v3/projects/" + regexProjectId + "/trigger/builds", { form: { token: regexProjectTriggerToken, ref: regexRefName } }); plugins.request.post('https://gitlab.com/api/v3/projects/' + regexProjectId + '/trigger/builds', { form: { token: regexProjectTriggerToken, ref: regexRefName } })
} }

3
tslint.json Normal file
View File

@@ -0,0 +1,3 @@
{
"extends": "tslint-config-standard"
}

2732
yarn.lock Normal file

File diff suppressed because it is too large Load Diff