mirror of
https://gitcode.com/github-mirrors/react-native-update-cli.git
synced 2025-09-16 09:41:38 +08:00
add rollout
This commit is contained in:
4
cli.json
4
cli.json
@@ -81,7 +81,6 @@
|
||||
"packageId": {
|
||||
"hasValue": true
|
||||
},
|
||||
|
||||
"packageVersion": {
|
||||
"hasValue": true
|
||||
},
|
||||
@@ -90,6 +89,9 @@
|
||||
},
|
||||
"maxPackageVersion": {
|
||||
"hasValue": true
|
||||
},
|
||||
"rollout": {
|
||||
"hasValue": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
133
src/versions.js
133
src/versions.js
@@ -133,6 +133,82 @@ export const commands = {
|
||||
let pkgVersion = options.packageVersion;
|
||||
let minPkgVersion = options.minPackageVersion;
|
||||
let maxPkgVersion = options.maxPackageVersion;
|
||||
let rollout = options.rollout;
|
||||
if (rollout !== undefined) {
|
||||
try {
|
||||
rollout = parseInt(rollout);
|
||||
} catch (e) {
|
||||
throw new Error('rollout 必须是 1-100 的整数');
|
||||
}
|
||||
if (rollout < 1 || rollout > 100) {
|
||||
throw new Error('rollout 必须是 1-100 的整数');
|
||||
}
|
||||
}
|
||||
if (minPkgVersion) {
|
||||
minPkgVersion = String(minPkgVersion).trim();
|
||||
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
||||
const pkgs = data.filter((d) => compare(d.name, minPkgVersion, '>='));
|
||||
if (pkgs.length === 0) {
|
||||
throw new Error(`未查询到 >= ${minPkgVersion} 的原生版本`);
|
||||
}
|
||||
if (rollout) {
|
||||
const rolloutConfig = {};
|
||||
for (const pkg of pkgs) {
|
||||
rolloutConfig[pkg.name] = rollout;
|
||||
}
|
||||
await put(`/app/${appId}/version/${versionId}`, {
|
||||
config: {
|
||||
rollout: rolloutConfig,
|
||||
},
|
||||
});
|
||||
console.log(
|
||||
`已在原生版本 ${pkgs
|
||||
.map((p) => p.name)
|
||||
.join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`,
|
||||
);
|
||||
}
|
||||
for (const pkg of pkgs) {
|
||||
await put(`/app/${appId}/package/${pkg.id}`, {
|
||||
versionId,
|
||||
});
|
||||
console.log(`已将热更版本 ${versionId} 绑定到原生版本 ${pkg.name}`);
|
||||
}
|
||||
console.log(`操作完成,共已绑定 ${pkgs.length} 个原生版本`);
|
||||
return;
|
||||
}
|
||||
if (maxPkgVersion) {
|
||||
maxPkgVersion = String(maxPkgVersion).trim();
|
||||
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
||||
const pkgs = data.filter((d) => compare(d.name, maxPkgVersion, '<='));
|
||||
if (pkgs.length === 0) {
|
||||
throw new Error(`未查询到 <= ${maxPkgVersion} 的原生版本`);
|
||||
}
|
||||
if (rollout) {
|
||||
const rolloutConfig = {};
|
||||
for (const pkg of pkgs) {
|
||||
rolloutConfig[pkg.name] = rollout;
|
||||
}
|
||||
await put(`/app/${appId}/version/${versionId}`, {
|
||||
config: {
|
||||
rollout: rolloutConfig,
|
||||
},
|
||||
});
|
||||
console.log(
|
||||
`已在原生版本 ${pkgs
|
||||
.map((p) => p.name)
|
||||
.join(', ')} 上设置灰度发布 ${rollout}% 热更版本 ${versionId}`,
|
||||
);
|
||||
}
|
||||
for (const pkg of pkgs) {
|
||||
await put(`/app/${appId}/package/${pkg.id}`, {
|
||||
versionId,
|
||||
});
|
||||
console.log(`已将热更版本 ${versionId} 绑定到原生版本 ${pkg.name}`);
|
||||
}
|
||||
console.log(`操作完成,共已绑定 ${pkgs.length} 个原生版本`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (pkgVersion) {
|
||||
pkgVersion = pkgVersion.trim();
|
||||
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
||||
@@ -143,42 +219,6 @@ export const commands = {
|
||||
throw new Error(`未查询到匹配原生版本:${pkgVersion}`);
|
||||
}
|
||||
}
|
||||
if (minPkgVersion) {
|
||||
minPkgVersion = String(minPkgVersion).trim();
|
||||
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
||||
const pkgs = data.filter((d) => compare(d.name, minPkgVersion, '>='));
|
||||
if (pkgs.length === 0) {
|
||||
throw new Error(
|
||||
`未查询到 >= ${minPkgVersion} 的原生版本`,
|
||||
);
|
||||
}
|
||||
for (const pkg of pkgs) {
|
||||
await put(`/app/${appId}/package/${pkg.id}`, {
|
||||
versionId,
|
||||
});
|
||||
console.log(`已将版本 ${versionId} 绑定到原生版本 ${pkg.name}`);
|
||||
}
|
||||
console.log(`操作完成,共已绑定 ${pkgs.length} 个原生版本`);
|
||||
return;
|
||||
}
|
||||
if (maxPkgVersion) {
|
||||
maxPkgVersion = String(maxPkgVersion).trim();
|
||||
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
||||
const pkgs = data.filter((d) => compare(d.name, maxPkgVersion, '<='));
|
||||
if (pkgs.length === 0) {
|
||||
throw new Error(
|
||||
`未查询到 <= ${maxPkgVersion} 的原生版本`,
|
||||
);
|
||||
}
|
||||
for (const pkg of pkgs) {
|
||||
await put(`/app/${appId}/package/${pkg.id}`, {
|
||||
versionId,
|
||||
});
|
||||
console.log(`已将版本 ${versionId} 绑定到原生版本 ${pkg.name}`);
|
||||
}
|
||||
console.log(`操作完成,共已绑定 ${pkgs.length} 个原生版本`);
|
||||
return;
|
||||
}
|
||||
if (!pkgId) {
|
||||
pkgId = options.packageId || (await choosePackage(appId)).id;
|
||||
}
|
||||
@@ -186,10 +226,29 @@ export const commands = {
|
||||
if (!pkgId) {
|
||||
throw new Error('请提供 packageId 或 packageVersion 参数');
|
||||
}
|
||||
if (rollout) {
|
||||
if (!pkgVersion) {
|
||||
const { data } = await get(`/app/${appId}/package/list?limit=1000`);
|
||||
const pkg = data.find((d) => d.id === pkgId);
|
||||
if (pkg) {
|
||||
pkgVersion = pkg.name;
|
||||
}
|
||||
}
|
||||
await put(`/app/${appId}/version/${versionId}`, {
|
||||
config: {
|
||||
rollout: {
|
||||
[pkgVersion]: rollout,
|
||||
},
|
||||
},
|
||||
});
|
||||
console.log(
|
||||
`已将在原生版本 ${pkgVersion} 上设置灰度发布 ${rollout}% 热更版本 ${versionId} `,
|
||||
);
|
||||
}
|
||||
await put(`/app/${appId}/package/${pkgId}`, {
|
||||
versionId,
|
||||
});
|
||||
console.log('操作成功');
|
||||
console.log(`已将热更版本 ${versionId} 绑定到原生版本 ${pkgVersion}`);
|
||||
},
|
||||
updateVersionInfo: async function ({ args, options }) {
|
||||
const platform = checkPlatform(
|
||||
|
Reference in New Issue
Block a user