a5fd25f10a
- 客户端接入 tauri-plugin-updater:原生侧注册插件,删除自研更新下载命令、下载进度事件与安装器启动逻辑 - 客户端更新服务与更新提示改走官方插件接口,删除自研清单解析、版本比较与下载实现 - 更新能力只授予客户端主窗口,移除只为自研清单放行的 OSS 白名单与 CSP 连接项 - 新增构建期更新检查开关:开发态默认关闭,agc 启动不请求更新清单、不显示更新入口 - 发布脚本按渠道生成官方更新插件清单与签名,universal macOS 产物同时挂两个平台键,缺签名失败关闭 - 发布脚本按渠道上传安装包、签名与渠道清单,并为 dev-win 生成旧协议 sha256 迁移清单 - 构建期按渠道注入更新端点配置,渠道与目标平台不匹配时发布失败关闭 - Jenkins 流水线新增渠道参数与签名凭据注入,归档补充签名与迁移清单 - 新增发布上传 dry-run 开关,只打印 ossutil 命令且不回显凭据 - 更新技术方案与开发运维文档,登记 macOS 渠道落地待办
45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
import { test } from 'node:test';
|
|
|
|
import { formatOssutilCommand, readReleaseDryRun } from './release-oss.mjs';
|
|
|
|
test('dry run only accepts explicit truthy values', () => {
|
|
assert.equal(readReleaseDryRun({}), false);
|
|
assert.equal(readReleaseDryRun({ AGC_RELEASE_DRY_RUN: '1' }), true);
|
|
assert.equal(readReleaseDryRun({ AGC_RELEASE_DRY_RUN: ' true ' }), true);
|
|
assert.equal(readReleaseDryRun({ AGC_RELEASE_DRY_RUN: '0' }), false);
|
|
assert.equal(readReleaseDryRun({ AGC_RELEASE_DRY_RUN: '' }), false);
|
|
});
|
|
|
|
test('printed upload command keeps arguments and hides credentials', () => {
|
|
const command = formatOssutilCommand({
|
|
binary: 'ossutil',
|
|
args: [
|
|
'cp',
|
|
'--force',
|
|
'陶泥儿 0.1.48.exe',
|
|
'oss://agc-dev/agc/dev-win/x.exe',
|
|
],
|
|
endpoint: 'oss-rg-china-mainland.aliyuncs.com',
|
|
credentials: true,
|
|
});
|
|
assert.match(command, /^ossutil cp --force /u);
|
|
assert.match(command, /"陶泥儿 0\.1\.48\.exe"/u);
|
|
assert.match(command, /oss:\/\/agc-dev\/agc\/dev-win\/x\.exe/u);
|
|
assert.match(
|
|
command,
|
|
/--access-key-id <redacted> --access-key-secret <redacted>/u,
|
|
);
|
|
});
|
|
|
|
test('uploader gates every ossutil call behind the dry run switch', () => {
|
|
const source = readFileSync(
|
|
new URL('./release-upload.mjs', import.meta.url),
|
|
'utf8',
|
|
);
|
|
assert.match(source, /const dryRun = readReleaseDryRun\(\);/u);
|
|
assert.match(source, /if \(dryRun\) \{/u);
|
|
assert.match(source, /dry-run:未写入任何 OSS 对象/u);
|
|
});
|