@taole/deploy-helper 0.7.4-beta.1 → 0.7.4-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.mjs +6 -3
- package/lib/tagRelease.mjs +38 -3
- package/package.json +3 -2
package/index.mjs
CHANGED
|
@@ -221,10 +221,13 @@ async function main() {
|
|
|
221
221
|
log(`mode参数只能是prod或test`);
|
|
222
222
|
process.exit(1);
|
|
223
223
|
}
|
|
224
|
-
|
|
224
|
+
let tag = process.argv[4];
|
|
225
225
|
if(!tag){
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
tag = await tagRelease.getTag(workDir, mode);
|
|
227
|
+
if(!tag){
|
|
228
|
+
log(`未找到tag`);
|
|
229
|
+
process.exit(1);
|
|
230
|
+
}
|
|
228
231
|
}
|
|
229
232
|
// 做好回滚操作
|
|
230
233
|
rollbackCleanFunc = await tagRelease.rollback(workDir, tag);
|
package/lib/tagRelease.mjs
CHANGED
|
@@ -4,10 +4,46 @@ import { log } from "./util.mjs";
|
|
|
4
4
|
import path from "path";
|
|
5
5
|
import fs from "fs";
|
|
6
6
|
import simpleGit from "simple-git";
|
|
7
|
+
import rawlist from "@inquirer/rawlist";
|
|
8
|
+
|
|
9
|
+
async function getTag(workDir, mode) {
|
|
10
|
+
const packageJson = JSON.parse(
|
|
11
|
+
fs.readFileSync(path.join(workDir, "package.json"), "utf-8")
|
|
12
|
+
);
|
|
13
|
+
const prefix = getTagNamePrefix(packageJson, mode);
|
|
14
|
+
const git = simpleGit(workDir);
|
|
15
|
+
const tags = await git.tags();
|
|
16
|
+
console.log(`tags: ${JSON.stringify(tags)}`);
|
|
17
|
+
let tagList = tags.all.filter((tag) => tag.startsWith(prefix)).slice(0, 15);
|
|
18
|
+
let tag = null;
|
|
19
|
+
if (tagList.length > 0) {
|
|
20
|
+
const propmtConfig = {
|
|
21
|
+
message: "请选择要回滚的tag版本: ",
|
|
22
|
+
choices: tagList.map((item) => ({
|
|
23
|
+
name: item,
|
|
24
|
+
value: item,
|
|
25
|
+
})),
|
|
26
|
+
};
|
|
27
|
+
try {
|
|
28
|
+
tag = await rawlist(propmtConfig);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
log(`选择获取tag失败`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (tag) {
|
|
34
|
+
log(`选择tag: ${tag}`);
|
|
35
|
+
}
|
|
36
|
+
return tag;
|
|
37
|
+
}
|
|
7
38
|
|
|
8
39
|
// 前置条件,项目当前是干净的,没有未提交的修改
|
|
9
40
|
|
|
41
|
+
function getTagNamePrefix(packageJson, mode) {
|
|
42
|
+
return `release_${mode}_${packageJson.name}`;
|
|
43
|
+
}
|
|
44
|
+
|
|
10
45
|
function getTagName(packageJson, commitId, mode) {
|
|
46
|
+
const prefix = getTagNamePrefix(packageJson, mode);
|
|
11
47
|
const date = new Date();
|
|
12
48
|
const timeStr =
|
|
13
49
|
date.getMonth() +
|
|
@@ -20,9 +56,7 @@ function getTagName(packageJson, commitId, mode) {
|
|
|
20
56
|
date.getMinutes() +
|
|
21
57
|
"_" +
|
|
22
58
|
date.getSeconds();
|
|
23
|
-
return
|
|
24
|
-
packageJson.version
|
|
25
|
-
}_${commitId.slice(0, 8)}_${timeStr}`;
|
|
59
|
+
return `${prefix}@${packageJson.version}_${commitId.slice(0, 8)}_${timeStr}`;
|
|
26
60
|
}
|
|
27
61
|
|
|
28
62
|
/**
|
|
@@ -184,6 +218,7 @@ async function createRelease(workDir, config, mode) {
|
|
|
184
218
|
}
|
|
185
219
|
|
|
186
220
|
export default {
|
|
221
|
+
getTag,
|
|
187
222
|
check,
|
|
188
223
|
createRelease,
|
|
189
224
|
rollback,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taole/deploy-helper",
|
|
3
|
-
"version": "0.7.4-beta.
|
|
3
|
+
"version": "0.7.4-beta.2",
|
|
4
4
|
"description": "脚本部署工具,用于将项目部署到测试环境或生产环境",
|
|
5
5
|
"main": "index.mjs",
|
|
6
6
|
"type": "module",
|
|
@@ -24,8 +24,9 @@
|
|
|
24
24
|
"author": "",
|
|
25
25
|
"license": "ISC",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"
|
|
27
|
+
"@inquirer/rawlist": "^5.2.0",
|
|
28
28
|
"ali-oss": "^6.23.0",
|
|
29
|
+
"alibabacloud-devops-mcp-server": "*",
|
|
29
30
|
"archiver": "^7.0.1",
|
|
30
31
|
"md5-file": "^5.0.0",
|
|
31
32
|
"node-scp": "^0.0.25",
|