2016-06-01 03:42:37 +00:00
|
|
|
import "typings-global";
|
|
|
|
import * as plugins from "./npmci.plugins";
|
2016-06-02 11:39:03 +00:00
|
|
|
import {bash} from "./npmci.bash";
|
2016-06-03 01:44:24 +00:00
|
|
|
import * as env from "./npmci.env"
|
2016-06-25 14:29:06 +00:00
|
|
|
import * as sshModule from "./npmci.ssh"
|
2016-06-01 03:42:37 +00:00
|
|
|
|
2016-06-02 23:58:37 +00:00
|
|
|
let npm = function(){
|
|
|
|
let done = plugins.q.defer();
|
|
|
|
|
|
|
|
let npmrcPrefix:string = "//registry.npmjs.org/:_authToken=";
|
|
|
|
let npmToken:string = process.env.NPMCI_TOKEN_NPM;
|
|
|
|
let npmrcFileString = npmrcPrefix + npmToken;
|
|
|
|
|
|
|
|
if(npmToken){
|
|
|
|
plugins.beautylog.info("found access token");
|
|
|
|
} else {
|
|
|
|
plugins.beautylog.error("no access token found! Exiting!");
|
|
|
|
process.exit(1);
|
|
|
|
}
|
2016-06-25 01:19:29 +00:00
|
|
|
plugins.smartfile.memory.toFsSync(npmrcFileString,"/root/.npmrc");
|
2016-06-02 23:58:37 +00:00
|
|
|
done.resolve();
|
|
|
|
return done.promise;
|
|
|
|
};
|
|
|
|
|
2016-06-01 03:42:37 +00:00
|
|
|
let docker = function(){
|
2016-06-02 11:08:15 +00:00
|
|
|
let done = plugins.q.defer();
|
2016-07-18 15:20:24 +00:00
|
|
|
env.dockerRegistry = "docker.io";
|
2016-06-02 11:08:15 +00:00
|
|
|
let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/
|
2016-06-02 15:57:01 +00:00
|
|
|
if(!process.env.NPMCI_LOGIN_DOCKER){
|
|
|
|
plugins.beautylog.error("You have to specify Login Data to the Docker Registry");
|
|
|
|
process.exit(1);
|
|
|
|
}
|
2016-06-05 22:00:50 +00:00
|
|
|
plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com"); // Always also login to GitLab Registry
|
2016-06-02 15:57:01 +00:00
|
|
|
let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER);
|
2016-06-02 11:08:15 +00:00
|
|
|
let username = dockerRegexResultArray[1];
|
|
|
|
let password = dockerRegexResultArray[2];
|
2016-06-02 17:47:57 +00:00
|
|
|
plugins.shelljs.exec("docker login -u " + username + " -p " + password);
|
2016-06-02 11:08:15 +00:00
|
|
|
done.resolve();
|
|
|
|
return done.promise;
|
2016-06-01 03:42:37 +00:00
|
|
|
}
|
|
|
|
|
2016-06-02 23:58:37 +00:00
|
|
|
let dockerGitlab = function(){
|
2016-06-01 03:42:37 +00:00
|
|
|
let done = plugins.q.defer();
|
2016-06-03 17:44:53 +00:00
|
|
|
env.dockerRegistry = "registry.gitlab.com";
|
2016-06-05 22:00:50 +00:00
|
|
|
plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com");
|
2016-06-01 03:42:37 +00:00
|
|
|
done.resolve();
|
|
|
|
return done.promise;
|
2016-06-02 23:58:37 +00:00
|
|
|
}
|
2016-06-01 03:42:37 +00:00
|
|
|
|
2016-06-25 14:29:06 +00:00
|
|
|
let ssh = function(){
|
|
|
|
let done = plugins.q.defer();
|
|
|
|
sshModule.ssh()
|
|
|
|
.then(done.resolve);
|
|
|
|
return done.promise;
|
|
|
|
}
|
|
|
|
|
2016-06-01 03:42:37 +00:00
|
|
|
export let prepare = function(serviceArg:string){
|
|
|
|
switch (serviceArg) {
|
|
|
|
case "npm":
|
|
|
|
return npm();
|
|
|
|
case "docker":
|
2016-06-05 21:59:10 +00:00
|
|
|
return docker();
|
2016-06-02 23:58:37 +00:00
|
|
|
case "docker-gitlab":
|
2016-06-25 17:18:42 +00:00
|
|
|
return dockerGitlab();
|
|
|
|
case "ssh":
|
|
|
|
return ssh();
|
2016-06-02 23:58:37 +00:00
|
|
|
default:
|
|
|
|
break;
|
2016-06-01 03:42:37 +00:00
|
|
|
}
|
|
|
|
}
|