@wjwjq/release-helper 0.0.1
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/.prettierignore +13 -0
- package/.prettierrc.json +19 -0
- package/README.md +29 -0
- package/bin/index.js +7 -0
- package/dist/cli.js +56 -0
- package/dist/deploy/nginx/README.md +1 -0
- package/dist/deploy/nginx/pkg/nginx-arm-ssl1.1.1.tar.gz +0 -0
- package/dist/deploy/nginx/pkg/nginx-x86_64-ssl1.0.2.tar.gz +0 -0
- package/dist/deploy/nginx/pkg/nginx-x86_64-ssl1.1.1.tar.gz +0 -0
- package/dist/deploy/nginx/pkg/nginx-x86_64-ssl3.0.7.tar.gz +0 -0
- package/dist/deploy/nginx/script/common.sh +178 -0
- package/dist/deploy/nginx/script/compile.sh +11 -0
- package/dist/deploy/nginx/script/fix.sh +24 -0
- package/dist/deploy/nginx/script/https.sh +79 -0
- package/dist/deploy/nginx/script/install.sh +99 -0
- package/dist/deploy/nginx/script/prompt.sh +10 -0
- package/dist/deploy/nginx/script/upgrade.sh +7 -0
- package/dist/deploy/pkg/nginx/nginx.service.tpl +33 -0
- package/dist/deploy/script/common.sh +183 -0
- package/dist/deploy/script/install.sh +51 -0
- package/dist/deploy/script/nginx.sh +156 -0
- package/dist/deploy/script/prompt.sh +98 -0
- package/dist/deploy/script/readme.md +10 -0
- package/dist/deploy/script/upgrade.sh +50 -0
- package/dist/logger.js +20 -0
- package/dist/pack.js +111 -0
- package/dist/prepare.js +75 -0
- package/dist/publish.js +238 -0
- package/dist/release.js +200 -0
- package/package.json +71 -0
- package/rollup.config.js +78 -0
- package/src/.release/README.md +23 -0
- package/src/.release/doc//351/203/250/347/275/262/346/211/213/345/206/214.md +426 -0
- package/src/.release/nginx/ca/ca.crt +32 -0
- package/src/.release/nginx/ca/ca.key +54 -0
- package/src/.release/nginx/ca/client.crt +100 -0
- package/src/.release/nginx/ca/client.csr +16 -0
- package/src/.release/nginx/ca/client.p12 +0 -0
- package/src/.release/nginx/ca/client.pem +30 -0
- package/src/.release/nginx/ca/server.crt +101 -0
- package/src/.release/nginx/ca/server.csr +17 -0
- package/src/.release/nginx/ca/server.key +27 -0
- package/src/.release/nginx/ca/server.pem +30 -0
- package/src/.release/nginx/nginx.conf +179 -0
- package/src/.release/release.conf.yaml +9 -0
- package/src/cli.ts +99 -0
- package/src/deploy/nginx/README.md +1 -0
- package/src/deploy/nginx/pkg/nginx-arm-ssl1.1.1.tar.gz +0 -0
- package/src/deploy/nginx/pkg/nginx-x86_64-ssl1.0.2.tar.gz +0 -0
- package/src/deploy/nginx/pkg/nginx-x86_64-ssl1.1.1.tar.gz +0 -0
- package/src/deploy/nginx/pkg/nginx-x86_64-ssl3.0.7.tar.gz +0 -0
- package/src/deploy/nginx/script/common.sh +178 -0
- package/src/deploy/nginx/script/compile.sh +11 -0
- package/src/deploy/nginx/script/fix.sh +24 -0
- package/src/deploy/nginx/script/https.sh +79 -0
- package/src/deploy/nginx/script/install.sh +99 -0
- package/src/deploy/nginx/script/prompt.sh +10 -0
- package/src/deploy/nginx/script/upgrade.sh +7 -0
- package/src/deploy/pkg/nginx/nginx.service.tpl +33 -0
- package/src/deploy/script/common.sh +183 -0
- package/src/deploy/script/install.sh +51 -0
- package/src/deploy/script/nginx.sh +156 -0
- package/src/deploy/script/prompt.sh +98 -0
- package/src/deploy/script/readme.md +10 -0
- package/src/deploy/script/upgrade.sh +50 -0
- package/src/logger.ts +18 -0
- package/src/pack.ts +141 -0
- package/src/prepare.ts +105 -0
- package/src/publish.ts +308 -0
- package/src/release.ts +292 -0
- package/tsconfig.json +14 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
log "-----------receive parameter: $@------------"
|
|
3
|
+
|
|
4
|
+
# if [ $# == 0 ]; then
|
|
5
|
+
# log_error "Fatal error: parameter -standalone or -cluster is required!"
|
|
6
|
+
# exit 1
|
|
7
|
+
# fi
|
|
8
|
+
|
|
9
|
+
mode=""
|
|
10
|
+
while [ $# -gt 0 ]; do
|
|
11
|
+
case "$1" in
|
|
12
|
+
-S | -standalone)
|
|
13
|
+
mode=1
|
|
14
|
+
shift
|
|
15
|
+
;;
|
|
16
|
+
-C | -cluster)
|
|
17
|
+
mode=2
|
|
18
|
+
shift
|
|
19
|
+
;;
|
|
20
|
+
-h | --help)
|
|
21
|
+
echo "supported parameters: "
|
|
22
|
+
echo "-S, -standalone install for supervisord startup mode, conflict with -C"
|
|
23
|
+
echo "-C, -cluster install for systemd startup mode, conflict with -S"
|
|
24
|
+
echo "-P, -prefix specify the install path"
|
|
25
|
+
exit 0
|
|
26
|
+
;;
|
|
27
|
+
-P | -prefix)
|
|
28
|
+
case "$2" in
|
|
29
|
+
"")
|
|
30
|
+
if [ $# -eq 1 ]; then
|
|
31
|
+
break
|
|
32
|
+
else
|
|
33
|
+
shift 2
|
|
34
|
+
fi
|
|
35
|
+
;;
|
|
36
|
+
-*) shift ;;
|
|
37
|
+
*)
|
|
38
|
+
prefix=$2
|
|
39
|
+
if [ $# -eq 2 ]; then
|
|
40
|
+
break
|
|
41
|
+
else
|
|
42
|
+
shift 2
|
|
43
|
+
fi
|
|
44
|
+
;;
|
|
45
|
+
esac
|
|
46
|
+
;;
|
|
47
|
+
--)
|
|
48
|
+
shift
|
|
49
|
+
break
|
|
50
|
+
;;
|
|
51
|
+
"")
|
|
52
|
+
echo 'no args'
|
|
53
|
+
break
|
|
54
|
+
;;
|
|
55
|
+
*)
|
|
56
|
+
log_error "invalid parameter: {$1}"
|
|
57
|
+
exit 1
|
|
58
|
+
;;
|
|
59
|
+
esac
|
|
60
|
+
done
|
|
61
|
+
|
|
62
|
+
if [[ -z "${mode}" ]]; then
|
|
63
|
+
log_error "Fatal error: parameter -standalone or -cluster is required!"
|
|
64
|
+
exit 1
|
|
65
|
+
# echo "Please choose an redis installation mode!"
|
|
66
|
+
# PS3='Please input the number: '
|
|
67
|
+
# options=("Standalone 1" "Cluster 2" "Quit")
|
|
68
|
+
# select opt in "${options[@]}"; do
|
|
69
|
+
# case $opt in
|
|
70
|
+
# "Standalone 1")
|
|
71
|
+
# mode=1
|
|
72
|
+
# break
|
|
73
|
+
# ;;
|
|
74
|
+
# "Cluster 2")
|
|
75
|
+
# mode=2
|
|
76
|
+
# break
|
|
77
|
+
# ;;
|
|
78
|
+
# "Quit")
|
|
79
|
+
# break
|
|
80
|
+
# ;;
|
|
81
|
+
# *) echo "invalid option $REPLY" ;;
|
|
82
|
+
# esac
|
|
83
|
+
# done
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
if ((mode == 1)); then
|
|
87
|
+
log "-------------------------------------------------"
|
|
88
|
+
log "-------start to install Standalone mode-------"
|
|
89
|
+
log "-------------------------------------------------"
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
if ((mode == 2)); then
|
|
93
|
+
log "-------------------------------------------------"
|
|
94
|
+
log "-------start to install Cluster mode-------"
|
|
95
|
+
log "-------------------------------------------------"
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
# echo "install/upgrade prefix: $prefix"
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# 获取脚本所在的目录
|
|
3
|
+
basepath=$(dirname "$(realpath "${BASH_SOURCE[-1]}")")
|
|
4
|
+
|
|
5
|
+
source "$basepath"/common.sh
|
|
6
|
+
|
|
7
|
+
# 未安装
|
|
8
|
+
if ((has_nginx_installed == 0)); then
|
|
9
|
+
# while true; do
|
|
10
|
+
# read -r -p "Nginx not found, install it?[Y/N]" yn
|
|
11
|
+
# case $yn in
|
|
12
|
+
# [Yy]*)
|
|
13
|
+
# chmod +x "$basepath"/../nginx/script/install.sh
|
|
14
|
+
# sh "$basepath"/../nginx/script/install.sh
|
|
15
|
+
# break
|
|
16
|
+
# ;;
|
|
17
|
+
# [Nn]*) exit ;;
|
|
18
|
+
# *) echo "Please answer yes or no." ;;
|
|
19
|
+
# esac
|
|
20
|
+
# done
|
|
21
|
+
chmod +x "$basepath"/../nginx/script/install.sh
|
|
22
|
+
sh "$basepath"/../nginx/script/install.sh "${@}"
|
|
23
|
+
|
|
24
|
+
if [[ $? != 0 ]]; then
|
|
25
|
+
echo "$(tput setaf 1)"failed to install!"$(tput sgr0)"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# 已安装 询问是否更新nginx
|
|
31
|
+
if ((has_nginx_installed == 1)); then
|
|
32
|
+
while true; do
|
|
33
|
+
read -r -p "Nginx has been installed, re-install it?[Y/N]" yn
|
|
34
|
+
case $yn in
|
|
35
|
+
[Yy]*)
|
|
36
|
+
chmod +x "$basepath"/../nginx/script/install.sh
|
|
37
|
+
sh "$basepath"/../nginx/script/install.sh "${@}"
|
|
38
|
+
if [[ $? != 0 ]]; then
|
|
39
|
+
echo "$(tput setaf 1)"failed to install!"$(tput sgr0)"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
break
|
|
43
|
+
;;
|
|
44
|
+
[Nn]*) break ;;
|
|
45
|
+
*) echo "Please answer yes or no." ;;
|
|
46
|
+
esac
|
|
47
|
+
done
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
start
|
package/src/logger.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import pc from 'picocolors';
|
|
2
|
+
|
|
3
|
+
export const logger = {
|
|
4
|
+
info: (msg: string) => {
|
|
5
|
+
console.info(`---------------------- ${msg} ----------------------`)
|
|
6
|
+
},
|
|
7
|
+
error: (msg: string) => {
|
|
8
|
+
console.log(`---------------------- ${pc.red(msg)} ----------------------`)
|
|
9
|
+
},
|
|
10
|
+
success: (msg: string) => {
|
|
11
|
+
console.info("--------------------------------------------------------------");
|
|
12
|
+
console.info(`---------🚀 ${pc.green(msg)} ----------------`);
|
|
13
|
+
console.info("--------------------------------------------------------------");
|
|
14
|
+
},
|
|
15
|
+
tip: (msg: string) => {
|
|
16
|
+
console.log(`---------------------- ${pc.yellow(msg)} ----------------------`)
|
|
17
|
+
}
|
|
18
|
+
}
|
package/src/pack.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import fs from "fs"
|
|
2
|
+
import path from "path"
|
|
3
|
+
|
|
4
|
+
import * as inquirer from "@inquirer/prompts"
|
|
5
|
+
import pc from "picocolors"
|
|
6
|
+
import * as tar from 'tar'
|
|
7
|
+
|
|
8
|
+
import { __work_dir, __releaseDir, __dirname, releaseConf } from './prepare'
|
|
9
|
+
import { logger } from "./logger"
|
|
10
|
+
|
|
11
|
+
export async function pack(version?: string) {
|
|
12
|
+
try {
|
|
13
|
+
|
|
14
|
+
if (version === undefined) {
|
|
15
|
+
version = await inquirer.input(
|
|
16
|
+
{
|
|
17
|
+
message: '请输入版本号:',
|
|
18
|
+
},
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (version == '') {
|
|
23
|
+
logger.error('版本号不能为空!')
|
|
24
|
+
return
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const packageJson = JSON.parse(fs.readFileSync(path.resolve(__work_dir, 'package.json'), { 'encoding': 'utf-8' }))
|
|
28
|
+
const projectName = packageJson.name as string;
|
|
29
|
+
|
|
30
|
+
if (!projectName) {
|
|
31
|
+
logger.error('未在package.json找到name定义!')
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const zipFileName = `${projectName}_${version}.tar.gz`
|
|
36
|
+
|
|
37
|
+
logger.tip(`start to pack`)
|
|
38
|
+
|
|
39
|
+
const projectDir = path.resolve(__releaseDir, projectName); //eg .release/posidon-frontend
|
|
40
|
+
const assetsDir = path.resolve(projectDir, 'pkg/assets');
|
|
41
|
+
const nginxDir = path.resolve(projectDir, 'pkg/nginx')
|
|
42
|
+
|
|
43
|
+
// 复制整个安装脚本和nginx二进制包
|
|
44
|
+
fs.cpSync(path.resolve(__dirname, 'deploy'), projectDir, { recursive: true })
|
|
45
|
+
// 复制打包后的静态资源
|
|
46
|
+
fs.cpSync(path.resolve(__work_dir, releaseConf.assetsDir), assetsDir, { recursive: true })
|
|
47
|
+
|
|
48
|
+
// 添加版本信息
|
|
49
|
+
fs.writeFileSync(path.resolve(projectDir, 'pkg', 'version'), version, { encoding: 'utf-8' })
|
|
50
|
+
fs.writeFileSync(path.resolve(assetsDir, 'version'), version, { encoding: 'utf-8' })
|
|
51
|
+
fs.writeFileSync(path.resolve(nginxDir, 'version'), version, { encoding: 'utf-8' })
|
|
52
|
+
|
|
53
|
+
logger.info(pc.green(`version: ${version} added`))
|
|
54
|
+
|
|
55
|
+
const assetInstallPath = `/opt/${projectName}/`
|
|
56
|
+
logger.info(pc.green(`start to replace __APP_NAME__ in common.sh`))
|
|
57
|
+
|
|
58
|
+
// 替换安装脚本 与nginx匹配的名称
|
|
59
|
+
replaceFileContent({
|
|
60
|
+
filePath: path.resolve(projectDir, 'script', 'common.sh'),
|
|
61
|
+
replaced: [
|
|
62
|
+
['__APP_NAME__', `"${projectName}"`],
|
|
63
|
+
['__INSTALL_PATH__', assetInstallPath]
|
|
64
|
+
]
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
logger.info(pc.green(`start to replace version: ${version} in index.html`))
|
|
68
|
+
|
|
69
|
+
replaceFileContent({
|
|
70
|
+
filePath: path.resolve(assetsDir, 'index.html'),
|
|
71
|
+
replaced: [['__version__', version]]
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
// 生成nginx.conf文件
|
|
75
|
+
logger.info(pc.green(`start to generate nginx.conf`))
|
|
76
|
+
|
|
77
|
+
//复制用户指定的nginx配置信息
|
|
78
|
+
fs.cpSync(path.resolve(__releaseDir, 'nginx'), nginxDir, { recursive: true, force: true })
|
|
79
|
+
|
|
80
|
+
replaceFileContent({
|
|
81
|
+
filePath: path.resolve(nginxDir, 'nginx.conf'),
|
|
82
|
+
replaced: [['__root__', `${assetInstallPath}/assets/`]],
|
|
83
|
+
// writeToNewFilePath: path.resolve(nginxDir, `${projectName}.conf`)
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
logger.info(pc.green(`start to generate ${zipFileName}`))
|
|
87
|
+
|
|
88
|
+
const zipFilePath = path.resolve(__releaseDir, zipFileName)
|
|
89
|
+
await genTarPkg(__releaseDir, projectName, zipFilePath);
|
|
90
|
+
|
|
91
|
+
logger.success(`done to pack ${pc.green(`${zipFileName} at: ${__releaseDir}`)}`);
|
|
92
|
+
|
|
93
|
+
if (fs.existsSync(projectDir)) {
|
|
94
|
+
fs.rmSync(projectDir, { recursive: true, force: true })
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
version,
|
|
99
|
+
pkgName: zipFileName,
|
|
100
|
+
appName: projectName,
|
|
101
|
+
pkgFilePath: zipFilePath
|
|
102
|
+
}
|
|
103
|
+
} catch (error) {
|
|
104
|
+
console.error('Error:', error);
|
|
105
|
+
return Promise.reject(error);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function genTarPkg(releaseDir: string, projectName: string, zipFileName: string) {
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
const zipStream = fs.createWriteStream(zipFileName);
|
|
112
|
+
zipStream.on('close', () => {
|
|
113
|
+
resolve(true);
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
try {
|
|
117
|
+
tar.create(
|
|
118
|
+
{
|
|
119
|
+
z: true,
|
|
120
|
+
cwd: releaseDir,
|
|
121
|
+
},
|
|
122
|
+
[projectName],
|
|
123
|
+
).pipe(zipStream)
|
|
124
|
+
} catch (error) {
|
|
125
|
+
reject(error);
|
|
126
|
+
}
|
|
127
|
+
})
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function replaceFileContent(params: {filePath: string; writeToNewFilePath?: string; replaced: [string, string][] }) {
|
|
131
|
+
const { filePath, writeToNewFilePath, replaced = [] } = params
|
|
132
|
+
if (fs.existsSync(filePath)) {
|
|
133
|
+
let content = fs.readFileSync(filePath, { encoding: 'utf-8' })
|
|
134
|
+
|
|
135
|
+
replaced.forEach(([regExp, replaceContent]) => {
|
|
136
|
+
content = content.toString().replace(regExp, replaceContent);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
fs.writeFileSync(writeToNewFilePath ? writeToNewFilePath : filePath, content, { encoding: 'utf-8' })
|
|
140
|
+
}
|
|
141
|
+
}
|
package/src/prepare.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import path, { dirname } from "path";
|
|
2
|
+
import fs from "fs"
|
|
3
|
+
import YAML from 'yaml';
|
|
4
|
+
import * as inquirer from "@inquirer/prompts"
|
|
5
|
+
|
|
6
|
+
import { execa } from 'execa';
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
8
|
+
|
|
9
|
+
import { logger } from './logger';
|
|
10
|
+
|
|
11
|
+
export type ReleaseConf = {
|
|
12
|
+
/** gitlab 仓库地址 */
|
|
13
|
+
host: string
|
|
14
|
+
/** gitlab rest api token */
|
|
15
|
+
token: string
|
|
16
|
+
/** 打包脚本 默认npm run build */
|
|
17
|
+
buildCmd?: string
|
|
18
|
+
/** 打包后资源 相对工作区所在路径 默认dist/*/
|
|
19
|
+
assetsDir?: string
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const __work_dir = process.cwd();
|
|
23
|
+
export const __releaseDir = path.resolve(__work_dir, '.release')
|
|
24
|
+
|
|
25
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
26
|
+
export const __dirname = dirname(__filename);
|
|
27
|
+
|
|
28
|
+
export const releaseConfFileName = "release.conf.yaml"
|
|
29
|
+
export const __releaseConfPath = path.resolve(__releaseDir, releaseConfFileName);
|
|
30
|
+
|
|
31
|
+
function parseConf(file: string) {
|
|
32
|
+
try {
|
|
33
|
+
const conf = fs.readFileSync(file, "utf-8");
|
|
34
|
+
return YAML.parse(conf) as ReleaseConf
|
|
35
|
+
} catch (error) {
|
|
36
|
+
return {} as ReleaseConf;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const releaseConf = Object.assign({
|
|
41
|
+
/** 打包脚本 默认npm run build */
|
|
42
|
+
buildCmd: 'npm run build',
|
|
43
|
+
/** 打包后资源 相对工作区所在路径 默认dist/*/
|
|
44
|
+
assetsDir: 'dist'
|
|
45
|
+
}, parseConf(__releaseConfPath));
|
|
46
|
+
|
|
47
|
+
export const $ = execa({ encoding: 'utf8' });
|
|
48
|
+
|
|
49
|
+
export async function prepare() {
|
|
50
|
+
const copyFiles = () => {
|
|
51
|
+
// 将.release file copy 到__work_dir 目录下
|
|
52
|
+
fs.cpSync(path.resolve(__dirname, '.release'), __releaseDir, { recursive: true })
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (!fs.existsSync(__releaseDir)) {
|
|
56
|
+
|
|
57
|
+
fs.mkdirSync(__releaseDir)
|
|
58
|
+
copyFiles();
|
|
59
|
+
logger.tip(`请注意修改.release/${releaseConfFileName} 配置信息`)
|
|
60
|
+
}else {
|
|
61
|
+
|
|
62
|
+
const shouldRegenerate = await inquirer.confirm(
|
|
63
|
+
{
|
|
64
|
+
message: '.release配置已存在,是否重新生成?',
|
|
65
|
+
},
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
if(shouldRegenerate){
|
|
69
|
+
copyFiles()
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export async function checkEnvInfo() {
|
|
75
|
+
// 检查是否在 git 仓库中
|
|
76
|
+
const { stdout: isGitRepo } = await $(`git rev-parse --is-inside-work-tree`)
|
|
77
|
+
if (isGitRepo !== 'true') {
|
|
78
|
+
logger.error('当前项目不是git仓库')
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// 检查.release下 nginx.conf, release.conf.yaml 等文件是否存在
|
|
83
|
+
|
|
84
|
+
if (!fs.existsSync(path.resolve(__releaseDir, 'nginx/nginx.conf'))) {
|
|
85
|
+
logger.error('.release目录下不存在nginx/nginx.conf 文件, 请使用 release-helper init 初始化生成')
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!fs.existsSync(__releaseConfPath)) {
|
|
90
|
+
logger.error(`.release目录下不存在${releaseConfFileName}文件,请使用 release-helper init 初始化生成`)
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const { host, token } = releaseConf;
|
|
95
|
+
if (!host) {
|
|
96
|
+
logger.error(`The host field is required in the configuration file!`);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (!token) {
|
|
101
|
+
logger.error(`The token field is required in the configuration file!`);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|