Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
node-devlop-rest-api
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhouzihao
node-devlop-rest-api
Commits
19d06489
Commit
19d06489
authored
Mar 27, 2020
by
zhouzihao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dev-build函数完成配置替换方案
parent
bb85e2b8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
95 additions
and
2 deletions
+95
-2
api/buidApi.js
api/buidApi.js
+4
-0
shell/build.js
shell/build.js
+1
-1
shell/java.js
shell/java.js
+90
-1
No files found.
api/buidApi.js
View file @
19d06489
...
...
@@ -14,6 +14,10 @@ module.exports = {
var
result
=
await
buildshell
.
build
(
p_id
,
env_id
,
branch
,
version
);
res
.
end
(
result
);
}
catch
(
error
)
{
if
(
_
.
isObject
)
{
error
=
JSON
.
stringify
(
error
);
}
console
.
error
(
error
);
res
.
end
(
error
);
}
})();
...
...
shell/build.js
View file @
19d06489
...
...
@@ -36,7 +36,7 @@ const build = async (p_id, env_id, branch, version) => {
switch
(
_
.
lowerCase
(
typeObj
.
name
))
{
case
"
java
"
:
await
javaBuilder
.
buildJava
(
projectObj
,
envObj
,
typeObj
,
configList
);
await
javaBuilder
.
buildJava
(
projectObj
,
envObj
,
typeObj
,
configList
,
branch
,
version
);
break
;
default
:
throw
new
Error
(
"
never used type!
"
);
...
...
shell/java.js
View file @
19d06489
// 处理Java 类型的项目构建
var
_
=
require
(
'
lodash
'
);
const
execa
=
require
(
'
execa
'
);
const
replace
=
require
(
'
replace-in-file
'
);
...
...
@@ -8,14 +9,102 @@ const replace = require('replace-in-file');
* @param {*} envObj 环境信息
* @param {*} typeObj 构建源数据
* @param {*} configList 配置信息
* @param {*} branch 分支
* @param {*} version 版本号
*/
const
buildJava
=
async
(
projectObj
,
envObj
,
typeObj
,
configList
)
=>
{
const
buildJava
=
async
(
projectObj
,
envObj
,
typeObj
,
configList
,
branch
,
version
)
=>
{
//start to buid
// 获取项目源数据
var
projectMetaData
=
JSON
.
parse
(
projectObj
.
meta_data
);
console
.
log
(
JSON
.
stringify
(
projectMetaData
));
// 下载到的地址
var
source_git_url
=
projectObj
.
source_git_url
;
// 项目名
var
project_name
=
envObj
.
env_id
+
"
-
"
+
projectObj
.
name
;
// 项目文件夹
var
project_dir
=
__dirname
+
'
/../tmp/
'
+
project_name
;
// gitlab操作令牌
var
token
=
envObj
.
target_git_token
;
// 目标gitlab地址
var
target_git_url
=
envObj
.
target_git_url
;
// 目标gitlab用户名
var
target_git_name
=
envObj
.
target_git_name
;
// 删除原项目
let
{
stdout1
}
=
await
execa
(
'
rm
'
,
[
'
-rf
'
,
project_dir
]);
console
.
log
(
JSON
.
stringify
(
"
删除文件夹
"
+
project_dir
));
//下载git项目
if
(
_
.
isEmpty
(
branch
))
{
branch
=
"
master
"
;
}
let
{
stdout2
}
=
await
execa
(
`git`
,
[
'
clone
'
,
'
-b
'
,
branch
,
source_git_url
,
project_name
],
{
cwd
:
__dirname
+
'
/../tmp/
'
})
console
.
log
(
"
下载项目
"
)
// 删除.git 等文件
let
{
stdout3
}
=
await
execa
(
'
rm
'
,
[
'
-rf
'
,
project_dir
+
'
/.git
'
]);
console
.
log
(
"
删除,git
"
);
//gitlab 创建项目
let
{
stdout4
}
=
await
execa
(
'
curl
'
,
[
'
--header
'
,
`"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
'
,
[
'
--header
'
,
`"PRIVATE-TOKEN:
${
token
}
"`
,
'
-X
'
,
'
POST
'
,
`
${
target_git_url
}
/api/v4/projects?name=
${
project_name
}
`
]);
console
.
log
(
stdout5
);
//配置文件替换
if
(
!
_
.
isEmpty
(
configList
))
{
configList
.
forEach
((
config
)
=>
{
(
async
()
=>
{
let
configType
=
config
.
type
;
switch
(
configType
)
{
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
);
}
break
;
case
2
:
// 覆盖模式
break
;
default
:
console
.
warn
(
"
Unknow Config type
"
);
}
})();
})
}
}
module
.
exports
=
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment