@taole/deploy-helper 0.7.4-beta.1 → 0.7.4-beta.3

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 CHANGED
@@ -221,10 +221,13 @@ async function main() {
221
221
  log(`mode参数只能是prod或test`);
222
222
  process.exit(1);
223
223
  }
224
- const tag = process.argv[4];
224
+ let tag = process.argv[4];
225
225
  if(!tag){
226
- log(`tag参数不能为空`);
227
- process.exit(1);
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);
@@ -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 `release_${mode}_${packageJson.name}@${
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.1",
3
+ "version": "0.7.4-beta.3",
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
- "alibabacloud-devops-mcp-server": "*",
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",