| 
									
										
										
										
											2016-06-01 05:44:48 +02:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | require("typings-global"); | 
					
						
							| 
									
										
										
										
											2016-07-18 16:56:53 +02:00
										 |  |  | const plugins = require("./npmci.plugins"); | 
					
						
							|  |  |  | const env = require("./npmci.env"); | 
					
						
							|  |  |  | const sshModule = require("./npmci.ssh"); | 
					
						
							| 
									
										
										
										
											2016-09-04 16:05:47 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * authenticates npm with token from env var | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-07-18 16:56:53 +02:00
										 |  |  | let npm = function () { | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							|  |  |  |     let npmrcPrefix = "//registry.npmjs.org/:_authToken="; | 
					
						
							|  |  |  |     let npmToken = process.env.NPMCI_TOKEN_NPM; | 
					
						
							|  |  |  |     let npmrcFileString = npmrcPrefix + npmToken; | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  |     if (npmToken) { | 
					
						
							|  |  |  |         plugins.beautylog.info("found access token"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         plugins.beautylog.error("no access token found! Exiting!"); | 
					
						
							|  |  |  |         process.exit(1); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-06-25 03:19:29 +02:00
										 |  |  |     plugins.smartfile.memory.toFsSync(npmrcFileString, "/root/.npmrc"); | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  |     done.resolve(); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-09-04 16:05:47 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * logs in docker | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-07-18 16:56:53 +02:00
										 |  |  | let docker = function () { | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-07-18 18:39:04 +02:00
										 |  |  |     env.setDockerRegistry("docker.io"); | 
					
						
							| 
									
										
										
										
											2016-07-18 16:56:53 +02:00
										 |  |  |     let dockerRegex = /^([a-zA-Z0-9\.]*)\|([a-zA-Z0-9\.]*)/; | 
					
						
							| 
									
										
										
										
											2016-06-02 17:57:01 +02: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-06 00:00:50 +02: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-07-18 16:56:53 +02:00
										 |  |  |     let dockerRegexResultArray = dockerRegex.exec(process.env.NPMCI_LOGIN_DOCKER); | 
					
						
							|  |  |  |     let username = dockerRegexResultArray[1]; | 
					
						
							|  |  |  |     let password = dockerRegexResultArray[2]; | 
					
						
							| 
									
										
										
										
											2016-06-02 19:47:57 +02:00
										 |  |  |     plugins.shelljs.exec("docker login -u " + username + " -p " + password); | 
					
						
							| 
									
										
										
										
											2016-06-02 13:08:15 +02:00
										 |  |  |     done.resolve(); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							| 
									
										
										
										
											2016-06-01 05:44:48 +02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-09-04 16:05:47 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * prepare docker for gitlab registry | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-07-18 16:56:53 +02:00
										 |  |  | let dockerGitlab = function () { | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-07-18 18:39:04 +02:00
										 |  |  |     env.setDockerRegistry("registry.gitlab.com"); | 
					
						
							| 
									
										
										
										
											2016-06-06 00:00:50 +02:00
										 |  |  |     plugins.shelljs.exec("docker login -u gitlab-ci-token -p " + process.env.CI_BUILD_TOKEN + " " + "registry.gitlab.com"); | 
					
						
							| 
									
										
										
										
											2016-06-01 05:44:48 +02:00
										 |  |  |     done.resolve(); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-09-04 16:05:47 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * prepare ssh | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-07-18 16:56:53 +02:00
										 |  |  | let ssh = function () { | 
					
						
							|  |  |  |     let done = plugins.q.defer(); | 
					
						
							| 
									
										
										
										
											2016-06-25 16:29:06 +02:00
										 |  |  |     sshModule.ssh() | 
					
						
							|  |  |  |         .then(done.resolve); | 
					
						
							|  |  |  |     return done.promise; | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-09-04 16:05:47 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * the main exported prepare function | 
					
						
							|  |  |  |  * @param servieArg describes the service to prepare | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-06-01 05:44:48 +02:00
										 |  |  | exports.prepare = function (serviceArg) { | 
					
						
							|  |  |  |     switch (serviceArg) { | 
					
						
							|  |  |  |         case "npm": | 
					
						
							|  |  |  |             return npm(); | 
					
						
							|  |  |  |         case "docker": | 
					
						
							| 
									
										
										
										
											2016-06-06 00:00:50 +02:00
										 |  |  |             return docker(); | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  |         case "docker-gitlab": | 
					
						
							|  |  |  |             return dockerGitlab(); | 
					
						
							| 
									
										
										
										
											2016-06-25 19:18:42 +02:00
										 |  |  |         case "ssh": | 
					
						
							|  |  |  |             return ssh(); | 
					
						
							| 
									
										
										
										
											2016-06-03 01:58:37 +02:00
										 |  |  |         default: | 
					
						
							|  |  |  |             break; | 
					
						
							| 
									
										
										
										
											2016-06-01 05:44:48 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2016-09-20 12:43:37 +02:00
										 |  |  | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtY2kucHJlcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL25wbWNpLnByZXBhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUF3QjtBQUN4QiwyQ0FBMkM7QUFFM0MsbUNBQWtDO0FBQ2xDLHlDQUF3QztBQVV4Qzs7R0FFRztBQUNILElBQUksR0FBRyxHQUFHO0lBQ04sSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUU3QixJQUFJLFdBQVcsR0FBVSxtQ0FBbUMsQ0FBQztJQUM3RCxJQUFJLFFBQVEsR0FBVSxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztJQUNsRCxJQUFJLGVBQWUsR0FBRyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBRTdDLEVBQUUsQ0FBQSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUM7UUFDVCxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNKLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBQyxjQUFjLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILElBQUksTUFBTSxHQUFHO0lBQ1QsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixHQUFHLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsSUFBSSxXQUFXLEdBQUcscUNBQXFDLENBQUE7SUFDdkQsRUFBRSxDQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUEsQ0FBQztRQUNoQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsdUNBQXVDO0lBQy9KLElBQUksc0JBQXNCLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDOUUsSUFBSSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsSUFBSSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILElBQUksWUFBWSxHQUFHO0lBQ2YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixHQUFHLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM3QyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcscUJBQXFCLENBQUMsQ0FBQztJQUN2SCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNILElBQUksR0FBRyxHQUFHO0lBQ04sSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQUMsR0FBRyxFQUFFO1NBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDUSxRQUFBLE9BQU8sR0FBRyxVQUFTLFVBQXVCO0lBQ2pELE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDakIsS0FBSyxLQUFLO1lBQ04sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLEtBQUssUUFBUTtZQUNULE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixLQUFLLGVBQWU7WUFDaEIsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFCLEtBQUssS0FBSztZQUNOLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNqQjtZQUNJLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDTCxDQUFDLENBQUEifQ==
 |