Commit e40c57ac authored by zhouzihao's avatar zhouzihao

dev

parent 8d0c9f65
......@@ -488,6 +488,11 @@
"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": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
......@@ -725,6 +730,14 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"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": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
......
......@@ -10,11 +10,12 @@
"license": "ISC",
"dependencies": {
"body-parser": "^1.16.1",
"execa": "^4.0.0",
"express": "^4.14.1",
"json-sql-builder2": "^1.0.24",
"lodash": "^4.17.15",
"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');
const execa = require('execa');
const replace = require('replace-in-file');
const fs = require('fs');
var sleep = require('sleep');
/**
* 构建Java项目
......@@ -44,25 +45,35 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio
// 删除.git 等文件
let { stdout3 } = await execa('rm', ['-rf', project_dir + '/.git']);
console.log("删除,git");
console.log("删除.git");
//gitlab 创建项目
let { stdout4 } = await execa('curl', [
let stdout4 = await execa('curl', [
'--header',
`"PRIVATE-TOKEN: ${token}"`,
`PRIVATE-TOKEN:${token}`,
'-X',
'DELETE',
`${target_git_url}/api/v4/projects/{${target_git_name}}%2f${project_name}`
]);
console.log(stdout4);
let { stdout5 } = await execa('curl', [
// console.log(stdout4);
// sleep
sleep.sleep(3);
let stdout5 = await execa('curl', [
'--header',
`"PRIVATE-TOKEN: ${token}"`,
`PRIVATE-TOKEN:${token}`,
'-X',
'POST',
`${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)) {
......@@ -73,28 +84,7 @@ const buildJava = async (projectObj, envObj, typeObj, configList, branch, versio
case 1:
// 替换模式
var key_value = JSON.parse(config.content);
if (!_.isEmpty(key_value)) {
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);
}
await replaceFileByMap(key_value, `${project_dir}/${config.path}`, config.content)
break;
case 2:
// 覆盖模式
......@@ -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 = {
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