Commit e40c57ac authored by zhouzihao's avatar zhouzihao

dev

parent 8d0c9f65
...@@ -488,6 +488,11 @@ ...@@ -488,6 +488,11 @@
"sqlstring": "2.3.1" "sqlstring": "2.3.1"
} }
}, },
"nan": {
"version": "2.14.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
},
"negotiator": { "negotiator": {
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
...@@ -725,6 +730,14 @@ ...@@ -725,6 +730,14 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
}, },
"sleep": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/sleep/-/sleep-6.1.0.tgz",
"integrity": "sha512-Z1x4JjJxsru75Tqn8F4tnOFeEu3HjtITTsumYUiuz54sGKdISgLCek9AUlXlVVrkhltRFhNUsJDJE76SFHTDIQ==",
"requires": {
"nan": "^2.13.2"
}
},
"sqlstring": { "sqlstring": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
......
...@@ -10,11 +10,12 @@ ...@@ -10,11 +10,12 @@
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"body-parser": "^1.16.1", "body-parser": "^1.16.1",
"execa": "^4.0.0",
"express": "^4.14.1", "express": "^4.14.1",
"json-sql-builder2": "^1.0.24", "json-sql-builder2": "^1.0.24",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"mysql": "^2.13.0", "mysql": "^2.13.0",
"execa": "^4.0.0", "replace-in-file": "^5.0.2",
"replace-in-file": "^5.0.2" "sleep": "^6.1.0"
} }
} }
...@@ -3,6 +3,7 @@ var _ = require('lodash'); ...@@ -3,6 +3,7 @@ var _ = require('lodash');
const execa = require('execa'); const execa = require('execa');
const replace = require('replace-in-file'); const replace = require('replace-in-file');
const fs = require('fs'); const fs = require('fs');
var sleep = require('sleep');
/** /**
* 构建Java项目 * 构建Java项目
...@@ -44,25 +45,35 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio ...@@ -44,25 +45,35 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio
// 删除.git 等文件 // 删除.git 等文件
let { stdout3 } = await execa('rm', ['-rf', project_dir + '/.git']); let { stdout3 } = await execa('rm', ['-rf', project_dir + '/.git']);
console.log("删除,git"); console.log("删除.git");
//gitlab 创建项目 //gitlab 创建项目
let { stdout4 } = await execa('curl', [ let stdout4 = await execa('curl', [
'--header', '--header',
`"PRIVATE-TOKEN: ${token}"`, `PRIVATE-TOKEN:${token}`,
'-X', '-X',
'DELETE', 'DELETE',
`${target_git_url}/api/v4/projects/{${target_git_name}}%2f${project_name}` `${target_git_url}/api/v4/projects/{${target_git_name}}%2f${project_name}`
]); ]);
console.log(stdout4); // console.log(stdout4);
let { stdout5 } = await execa('curl', [
// sleep
sleep.sleep(3);
let stdout5 = await execa('curl', [
'--header', '--header',
`"PRIVATE-TOKEN: ${token}"`, `PRIVATE-TOKEN:${token}`,
'-X', '-X',
'POST', 'POST',
`${target_git_url}/api/v4/projects?name=${project_name}` `${target_git_url}/api/v4/projects?name=${project_name}`
]); ]);
console.log(stdout5);
// console.log(stdout5);
var git_info = JSON.parse(stdout5.stdout);
//获取项目远程地址
var git_remote = git_info.http_url_to_repo;
console.log("git项目的远程地址为:");
console.log(git_remote);
//配置文件替换 //配置文件替换
if (!_.isEmpty(configList)) { if (!_.isEmpty(configList)) {
...@@ -73,28 +84,7 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio ...@@ -73,28 +84,7 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio
case 1: case 1:
// 替换模式 // 替换模式
var key_value = JSON.parse(config.content); var key_value = JSON.parse(config.content);
if (!_.isEmpty(key_value)) { await replaceFileByMap(key_value, `${project_dir}/${config.path}`, config.content)
const quote = function (str) {
return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
};
var from = [];
var to = [];
_.forEach(key_value, function (value, key) {
(async () => {
let quoteKey = quote(key);
console.log(quoteKey);
from.push(eval(`/${quoteKey}/g`));
to.push(value);
})();
});
let options = {
files: `${project_dir}/${config.path}`,
from: from,
to: to,
};
let loga = await replace(options);
console.log(loga);
}
break; break;
case 2: case 2:
// 覆盖模式 // 覆盖模式
...@@ -106,9 +96,43 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio ...@@ -106,9 +96,43 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio
})(); })();
}) })
} }
// 创建dockerfile
// 替换dokerfile
}
/**
* 按照key-value的map 替换一组值
* @param {*} map 替换字符串对
* @param {*} patch 文件路径
*/
const replaceFileByMap = async (map, patch) => {
const quote = function (str) {
return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
};
if (!_.isEmpty(map)) {
var from = [];
var to = [];
_.forEach(map, function (value, key) {
(async () => {
let quoteKey = quote(key);
// console.log(quoteKey);
from.push(eval(`/${quoteKey}/g`));
to.push(value);
})();
});
let options = {
files: patch,
from: from,
to: to,
};
let loga = await replace(options);
console.log(loga);
}
} }
module.exports = { module.exports = {
buildJava, buildJava,
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment