70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import "typings-global";
 | |
| import * as plugins from "./npmci.plugins";
 | |
| import {bash} from "./npmci.bash";
 | |
| import * as env from "./npmci.env"
 | |
| import * as sshModule from "./npmci.ssh"
 | |
| 
 | |
| 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);
 | |
|     }
 | |
|     plugins.smartfile.memory.toFsSync(npmrcFileString,"/root/.npmrc");
 | |
|     done.resolve();
 | |
|     return done.promise;
 | |
| };
 | |
| 
 | |
| let docker = function(){
 | |
|     let done = plugins.q.defer();
 | |
|     env.dockerRegistry = "docker.io"
 | |
|     let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/
 | |
|     if(!process.env.NPMCI_LOGIN_DOCKER){
 | |
|         plugins.beautylog.error("You have to specify Login Data to the Docker Registry");
 | |
|         process.exit(1);
 | |
|     }
 | |
|     plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com"); // Always also login to GitLab Registry
 | |
|     let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER);
 | |
|     let username = dockerRegexResultArray[1];
 | |
|     let password = dockerRegexResultArray[2];
 | |
|     plugins.shelljs.exec("docker login -u " + username + " -p " + password);
 | |
|     done.resolve();
 | |
|     return done.promise;
 | |
| }
 | |
| 
 | |
| let dockerGitlab = function(){
 | |
|     let done = plugins.q.defer();
 | |
|     env.dockerRegistry = "registry.gitlab.com";
 | |
|     plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com");
 | |
|     done.resolve();
 | |
|     return done.promise;
 | |
| }
 | |
| 
 | |
| let ssh = function(){
 | |
|     let done = plugins.q.defer();
 | |
|     sshModule.ssh()
 | |
|         .then(done.resolve);
 | |
|     return done.promise;
 | |
| }
 | |
| 
 | |
| export let prepare = function(serviceArg:string){
 | |
|     switch (serviceArg) {
 | |
|         case "npm":
 | |
|             return npm();
 | |
|         case "docker":
 | |
|             return docker();
 | |
|         case "docker-gitlab":
 | |
|             return dockerGitlab();
 | |
|         case "ssh":
 | |
|             return ssh();
 | |
|         default:
 | |
|             break;
 | |
|     }
 | |
| } |