fix(desktop): align approval links with normalized upload destinations
This commit is contained in:
1 parent
24d73cae8d
commit
1bd032be88
7 files changed
+40
-38
No files matched your search
@@ -5,7 +5,7 @@ import type { DesktopRetainedSource } from './desktop-release-store.ts'
|
||||
import type { DesktopUploadPlan } from './desktop-upload-plan.ts'
|
||||
|
||||
function text(value: string): string {
|
||||
return value.replace(/[&<>"'|`\r\n]/gu, character => `&#${character.charCodeAt(0)};`)
|
||||
return value.replace(/[&<>"'|`\r\n\\*_\[\]()!~:]/gu, character => `&#${character.charCodeAt(0)};`)
|
||||
}
|
||||
|
||||
function code(value: string): string { return `<code>${text(value)}</code>` }
|
||||
@@ -14,15 +14,16 @@ function link(url: string, label = url): string { return `<a href="${text(url)}"
|
||||
|
||||
/**
|
||||
* Render Chinese approval details after package, destination and signature verification succeeds.
|
||||
* @param source Verified retained packaging identity.
|
||||
* @param source Verified retained packaging identity; a test plan requires its validated release ID.
|
||||
* @param plan Validated upload plan; YAML contents are the bytes that will be uploaded.
|
||||
* @param origin Validated HTTPS download origin from the publishing configuration.
|
||||
* @param approval Digest bound to the approved manifest and upload plan.
|
||||
* File SHA-256 hex supports `shasum -a 256` on downloads; upload reconciliation separately uses SHA-512 base64.
|
||||
* @returns GitHub-flavored Markdown with final URLs and upload-byte fingerprints, without credentials or local paths.
|
||||
*/
|
||||
export async function desktopPublicationSummary(
|
||||
source: DesktopRetainedSource, plan: DesktopUploadPlan, origin: string, approval: string,
|
||||
source: DesktopRetainedSource, plan: DesktopUploadPlan, approval: string,
|
||||
): Promise<string> {
|
||||
const origin = new URL(plan.publicUrl).origin
|
||||
const url = (key: string) => `${origin}/${key.split('/').map(encodeURIComponent).join('/')}`
|
||||
const files = []
|
||||
for (const file of plan.artifacts) {
|
||||
@@ -65,6 +66,6 @@ export async function desktopPublicationSummary(
|
||||
`审批摘要 SHA-256:${code(approval)}`, '',
|
||||
`共 ${plan.artifacts.length} 个文件;大小及 SHA-256 对应实际上传字节,包括更新后的 YAML 内容。`, '',
|
||||
'| 文件 | 大小 | SHA-256 |', '| --- | --- | --- |', ...files, '', '</details>', '',
|
||||
'此摘要在公开仓库中可公开查看,包含下载路径及 test 发布的 release ID。随机前缀不能替代访问鉴权。', '',
|
||||
'若仓库为公开仓库,此摘要中的下载路径及 test 发布的 release ID 也会公开。随机前缀不能替代访问鉴权。', '',
|
||||
].join('\n')
|
||||
}
|
||||
@@ -62,8 +62,8 @@ if (process.argv[1] !== undefined && resolve(process.argv[1]) === import.meta.fi
|
||||
if (mode === '--publish' && !env.DESKTOP_APPROVED_PACKAGE) throw new Error('desktop publish: approved package digest is required')
|
||||
if (mode === '--check') {
|
||||
if (env.GITHUB_OUTPUT) await appendFile(env.GITHUB_OUTPUT, `approval=${approval}\nlabel=${plan.version} → ${manifest.source.channel} / ${plan.target} / ${plan.environment}\n`)
|
||||
if (env.GITHUB_STEP_SUMMARY) await appendFile(env.GITHUB_STEP_SUMMARY,
|
||||
await desktopPublicationSummary(manifest.source, plan, config.origin, approval))
|
||||
if (env.GITHUB_STEP_SUMMARY && !env.DESKTOP_APPROVED_PACKAGE) await appendFile(env.GITHUB_STEP_SUMMARY,
|
||||
await desktopPublicationSummary(manifest.source, plan, approval))
|
||||
if (env.GITHUB_OUTPUT && config.githubApp) await appendFile(env.GITHUB_OUTPUT,
|
||||
`app-client-id=${config.githubApp.clientId}\napp-key-file=${config.githubApp.privateKeyFile}\n`)
|
||||
process.stdout.write(`desktop publish: verified ${plan.target} ${plan.version}; no credentials read or COS requests made\n`)
|
||||
|
||||
@@ -20,7 +20,7 @@ it.each(['mac-arm64', 'win-x64'] as const)('preflights a complete retained %s bu
|
||||
const releaseId = 'a'.repeat(32)
|
||||
await writeFile(join(configRoot, 'presets/test.env'), `DSH_DESKTOP_AUTO_UPDATE_ENV=test\nDOWNLOAD_TEST_RELEASE_ID=${releaseId}\n`)
|
||||
await writeFile(join(configRoot, 'publishing/test.json'), JSON.stringify({
|
||||
bucket: 'fixture-1250000000', origin: 'https://example.com', credentialsFile: join(root, 'absent-credentials.json'),
|
||||
bucket: 'fixture-1250000000', origin: 'https://EXAMPLE.com:443/', credentialsFile: join(root, 'absent-credentials.json'),
|
||||
}))
|
||||
const commit = 'b'.repeat(40)
|
||||
const base = `deepseek-harness-1.0.0-${target}`
|
||||
@@ -52,11 +52,12 @@ it.each(['mac-arm64', 'win-x64'] as const)('preflights a complete retained %s bu
|
||||
expect(prepared.plan.version).toBe('1.0.0')
|
||||
expect(prepared.plan.artifacts.every(file => file.path.startsWith(retained))).toBe(true)
|
||||
expect(signatureChecks).toBe(1)
|
||||
const summary = await desktopPublicationSummary(prepared.manifest.source, prepared.plan, prepared.config.origin, 'c'.repeat(64))
|
||||
const summary = await desktopPublicationSummary(prepared.manifest.source, prepared.plan, 'c'.repeat(64))
|
||||
await expect(summary).toMatchFileSnapshot(`./expected/publication-${target}.md`)
|
||||
const feed = prepared.plan.artifacts.find(file => file.channelMetadata)!
|
||||
expect(summary).toContain(createHash('sha256').update(feed.contents!).digest('hex'))
|
||||
expect(summary).toContain('https://github.com/owner/repo/actions/runs/10/attempts/2')
|
||||
expect(summary).toContain('https://github.com/owner/repo/actions/runs/10/attempts/2')
|
||||
expect(summary).not.toContain('example.com//')
|
||||
expect(summary).not.toContain(root)
|
||||
expect(summary).not.toContain('absent-credentials')
|
||||
await expect(prepareDesktopPublication({ ...env, DESKTOP_APPROVED_PACKAGE: 'wrong' }, signature)).rejects.toThrow(/changed after approval/u)
|
||||
|
||||
@@ -13,7 +13,7 @@ const plan: DesktopUploadPlan = {
|
||||
environment: 'production', target: 'win-x64', version: '1.0.0', bucket: 'production-1234567890',
|
||||
publicUrl: 'https://download.example.com/dsh-desk/feeds/win-x64/', secretIdEnvName: 'SECRET_ID', secretKeyEnvName: 'SECRET_KEY',
|
||||
artifacts: [
|
||||
{ path: '/not-read/installer.exe', filename: 'Harness 1.0.0.exe', key: 'dsh-desk/bin/win-x64/latest/Harness 1.0.0.exe',
|
||||
{ path: '/not-read/installer.exe', filename: 'deepseek-harness-1.0.0-win-x64.exe', key: 'dsh-desk/bin/win-x64/latest/deepseek-harness-1.0.0-win-x64.exe',
|
||||
contents: 'installer bytes', contentType: 'application/octet-stream', channelMetadata: false },
|
||||
{ path: '/not-read/latest.yml', filename: 'latest.yml', key: 'dsh-desk/feeds/win-x64/latest.yml',
|
||||
contents: 'version: 1.0.0\n', contentType: 'application/yaml', channelMetadata: true },
|
||||
@@ -21,10 +21,10 @@ const plan: DesktopUploadPlan = {
|
||||
}
|
||||
|
||||
it('shows production destinations and tag after approval with upload-byte fingerprints', async () => {
|
||||
const summary = await desktopPublicationSummary(source, plan, 'https://download.example.com', 'c'.repeat(64))
|
||||
const summary = await desktopPublicationSummary(source, plan, 'c'.repeat(64))
|
||||
await expect(summary).toMatchFileSnapshot('./expected/publication-production.md')
|
||||
expect(summary).toContain('/latest/Harness%201.0.0.exe')
|
||||
expect(summary).toContain('https://download.example.com/dsh-desk/feeds/win-x64/latest.yml')
|
||||
expect(summary).toContain('/latest/deepseek-harness-1.0.0-win-x64.exe')
|
||||
expect(summary).toContain('https://download.example.com/dsh-desk/feeds/win-x64/latest.yml')
|
||||
expect(summary).toContain(createHash('sha256').update('version: 1.0.0\n').digest('hex'))
|
||||
expect(summary).not.toContain('测试 release ID |')
|
||||
expect(summary).not.toContain('SECRET_KEY')
|
||||
@@ -32,15 +32,15 @@ it('shows production destinations and tag after approval with upload-byte finger
|
||||
})
|
||||
|
||||
it('escapes runner display text without adding Markdown rows or HTML elements', async () => {
|
||||
const summary = await desktopPublicationSummary({ ...source, runnerName: 'runner|\n<script>`&"' }, plan,
|
||||
'https://download.example.com', 'c'.repeat(64))
|
||||
const summary = await desktopPublicationSummary({ ...source, runnerName: 'runner|\n<script>`&"__win__' }, plan, 'c'.repeat(64))
|
||||
expect(summary).toContain('runner| <script>`&"')
|
||||
expect(summary).not.toContain('<script>')
|
||||
expect(summary).toContain('__win__')
|
||||
})
|
||||
|
||||
it('fails instead of rendering success when an upload file cannot be read', async () => {
|
||||
await expect(desktopPublicationSummary(source, { ...plan,
|
||||
artifacts: [{ path: '/missing-desktop-summary-artifact/installer.exe', filename: 'installer.exe',
|
||||
key: 'installer.exe', contentType: 'application/octet-stream', channelMetadata: false }],
|
||||
}, 'https://download.example.com', 'c'.repeat(64))).rejects.toThrow()
|
||||
}, 'c'.repeat(64))).rejects.toThrow()
|
||||
})
|
||||
@@ -10,9 +10,9 @@
|
||||
| 升级通道 | <code>nightly</code> |
|
||||
| 平台 | <code>mac-arm64</code> |
|
||||
| 测试 release ID | <code>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</code><br>测试下载路径的随机前缀,用于降低地址被猜到的可能性;连续升级测试需使用相同值。 |
|
||||
| 下载地址预览 | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.dmg">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.dmg</a><br>发布后的目标地址,审批前不保证可下载。 |
|
||||
| 升级 YAML | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/mac-arm64/nightly-mac.yml">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/mac-arm64/nightly-mac.yml</a><br>本次发布将更新此文件;审批前可能不存在或仍指向旧版本。 |
|
||||
| 打包来源 | <a href="https://github.com/owner/repo/actions/runs/10/attempts/2">查看打包运行 #10 · 第 2 次尝试</a><br>源码:<code>master @ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</code><br>打包机器:<code>fixture-runner</code> |
|
||||
| 下载地址预览 | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.dmg">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.dmg</a><br>发布后的目标地址,审批前不保证可下载。 |
|
||||
| 升级 YAML | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/mac-arm64/nightly-mac.yml">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/mac-arm64/nightly-mac.yml</a><br>本次发布将更新此文件;审批前可能不存在或仍指向旧版本。 |
|
||||
| 打包来源 | <a href="https://github.com/owner/repo/actions/runs/10/attempts/2">查看打包运行 #10 · 第 2 次尝试</a><br>源码:<code>master @ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</code><br>打包机器:<code>fixture-runner</code> |
|
||||
| 签名与公证 | DMG 校验通过<br>ZIP 内应用校验通过 |
|
||||
| Git tag | 不创建(test 环境) |
|
||||
|
||||
@@ -37,11 +37,11 @@ release ID 取自原打包产物清单。打包时优先使用表单 `test_relea
|
||||
|
||||
| 文件 | 大小 | SHA-256 |
|
||||
| --- | --- | --- |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.dmg">deepseek-harness-1.0.0-mac-arm64.dmg</a> | 11 字节 | <code>eac5da462cb16554774d722fa4093739ffc9ade2f4c6e8ee54041e71908f1408</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.zip">deepseek-harness-1.0.0-mac-arm64.zip</a> | 23 字节 | <code>7039e7b3e00d39fbfb2948ba31b6216ac9ffff01b4117a1cec08025255d9ad10</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.zip.blockmap">deepseek-harness-1.0.0-mac-arm64.zip.blockmap</a> | 16 字节 | <code>4fd6c7d73e713d7f54f173dfc845d046d267f9e62c80a92670b0696131bfb74a</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/mac-arm64/nightly-mac.yml">nightly-mac.yml</a> | 276 字节 | <code>86180a8b9207744d8300e993040f28ad8812f16cf30367b2f04f5dcfadb87452</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.dmg">deepseek-harness-1.0.0-mac-arm64.dmg</a> | 11 字节 | <code>eac5da462cb16554774d722fa4093739ffc9ade2f4c6e8ee54041e71908f1408</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.zip">deepseek-harness-1.0.0-mac-arm64.zip</a> | 23 字节 | <code>7039e7b3e00d39fbfb2948ba31b6216ac9ffff01b4117a1cec08025255d9ad10</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/mac-arm64/deepseek-harness-1.0.0-mac-arm64.zip.blockmap">deepseek-harness-1.0.0-mac-arm64.zip.blockmap</a> | 16 字节 | <code>4fd6c7d73e713d7f54f173dfc845d046d267f9e62c80a92670b0696131bfb74a</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/mac-arm64/nightly-mac.yml">nightly-mac.yml</a> | 276 字节 | <code>86180a8b9207744d8300e993040f28ad8812f16cf30367b2f04f5dcfadb87452</code> |
|
||||
|
||||
</details>
|
||||
|
||||
此摘要在公开仓库中可公开查看,包含下载路径及 test 发布的 release ID。随机前缀不能替代访问鉴权。
|
||||
若仓库为公开仓库,此摘要中的下载路径及 test 发布的 release ID 也会公开。随机前缀不能替代访问鉴权。
|
||||
@@ -9,9 +9,9 @@
|
||||
| 版本号 | <code>1.0.0</code> |
|
||||
| 升级通道 | <code>latest</code> |
|
||||
| 平台 | <code>win-x64</code> |
|
||||
| 下载地址预览 | <a href="https://download.example.com/dsh-desk/bin/win-x64/latest/Harness%201.0.0.exe">https://download.example.com/dsh-desk/bin/win-x64/latest/Harness%201.0.0.exe</a><br>发布后的目标地址,审批前不保证可下载。 |
|
||||
| 升级 YAML | <a href="https://download.example.com/dsh-desk/feeds/win-x64/latest.yml">https://download.example.com/dsh-desk/feeds/win-x64/latest.yml</a><br>本次发布将更新此文件;审批前可能不存在或仍指向旧版本。 |
|
||||
| 打包来源 | <a href="https://github.com/owner/repo/actions/runs/20/attempts/3">查看打包运行 #20 · 第 3 次尝试</a><br>源码:<code>dsh-v1.0.0 @ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</code><br>打包机器:<code>windows-publisher</code> |
|
||||
| 下载地址预览 | <a href="https://download.example.com/dsh-desk/bin/win-x64/latest/deepseek-harness-1.0.0-win-x64.exe">https://download.example.com/dsh-desk/bin/win-x64/latest/deepseek-harness-1.0.0-win-x64.exe</a><br>发布后的目标地址,审批前不保证可下载。 |
|
||||
| 升级 YAML | <a href="https://download.example.com/dsh-desk/feeds/win-x64/latest.yml">https://download.example.com/dsh-desk/feeds/win-x64/latest.yml</a><br>本次发布将更新此文件;审批前可能不存在或仍指向旧版本。 |
|
||||
| 打包来源 | <a href="https://github.com/owner/repo/actions/runs/20/attempts/3">查看打包运行 #20 · 第 3 次尝试</a><br>源码:<code>dsh-v1.0.0 @ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</code><br>打包机器:<code>windows-publisher</code> |
|
||||
| 签名与公证 | EXE 签名校验通过 |
|
||||
| Git tag | <code>desktop-v1.0.0</code> |
|
||||
|
||||
@@ -33,9 +33,9 @@ COS 存储桶:<code>production-1234567890</code>
|
||||
|
||||
| 文件 | 大小 | SHA-256 |
|
||||
| --- | --- | --- |
|
||||
| <a href="https://download.example.com/dsh-desk/bin/win-x64/latest/Harness%201.0.0.exe">Harness 1.0.0.exe</a> | 15 字节 | <code>e34210a6de4f653edf588301431c3d69a633638cbf587345cc50a7fed9f38f4c</code> |
|
||||
| <a href="https://download.example.com/dsh-desk/feeds/win-x64/latest.yml">latest.yml</a> | 15 字节 | <code>8850e6075dda0080c526269a4de29848c32c2a65e3d81f4a64ed8ce53d4b47c1</code> |
|
||||
| <a href="https://download.example.com/dsh-desk/bin/win-x64/latest/deepseek-harness-1.0.0-win-x64.exe">deepseek-harness-1.0.0-win-x64.exe</a> | 15 字节 | <code>e34210a6de4f653edf588301431c3d69a633638cbf587345cc50a7fed9f38f4c</code> |
|
||||
| <a href="https://download.example.com/dsh-desk/feeds/win-x64/latest.yml">latest.yml</a> | 15 字节 | <code>8850e6075dda0080c526269a4de29848c32c2a65e3d81f4a64ed8ce53d4b47c1</code> |
|
||||
|
||||
</details>
|
||||
|
||||
此摘要在公开仓库中可公开查看,包含下载路径及 test 发布的 release ID。随机前缀不能替代访问鉴权。
|
||||
若仓库为公开仓库,此摘要中的下载路径及 test 发布的 release ID 也会公开。随机前缀不能替代访问鉴权。
|
||||
@@ -10,9 +10,9 @@
|
||||
| 升级通道 | <code>nightly</code> |
|
||||
| 平台 | <code>win-x64</code> |
|
||||
| 测试 release ID | <code>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</code><br>测试下载路径的随机前缀,用于降低地址被猜到的可能性;连续升级测试需使用相同值。 |
|
||||
| 下载地址预览 | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe</a><br>发布后的目标地址,审批前不保证可下载。 |
|
||||
| 升级 YAML | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/win-x64/nightly.yml">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/win-x64/nightly.yml</a><br>本次发布将更新此文件;审批前可能不存在或仍指向旧版本。 |
|
||||
| 打包来源 | <a href="https://github.com/owner/repo/actions/runs/10/attempts/2">查看打包运行 #10 · 第 2 次尝试</a><br>源码:<code>master @ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</code><br>打包机器:<code>fixture-runner</code> |
|
||||
| 下载地址预览 | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe</a><br>发布后的目标地址,审批前不保证可下载。 |
|
||||
| 升级 YAML | <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/win-x64/nightly.yml">https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/win-x64/nightly.yml</a><br>本次发布将更新此文件;审批前可能不存在或仍指向旧版本。 |
|
||||
| 打包来源 | <a href="https://github.com/owner/repo/actions/runs/10/attempts/2">查看打包运行 #10 · 第 2 次尝试</a><br>源码:<code>master @ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</code><br>打包机器:<code>fixture-runner</code> |
|
||||
| 签名与公证 | EXE 签名校验通过 |
|
||||
| Git tag | 不创建(test 环境) |
|
||||
|
||||
@@ -37,10 +37,10 @@ release ID 取自原打包产物清单。打包时优先使用表单 `test_relea
|
||||
|
||||
| 文件 | 大小 | SHA-256 |
|
||||
| --- | --- | --- |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe">deepseek-harness-1.0.0-win-x64.exe</a> | 23 字节 | <code>7039e7b3e00d39fbfb2948ba31b6216ac9ffff01b4117a1cec08025255d9ad10</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe.blockmap">deepseek-harness-1.0.0-win-x64.exe.blockmap</a> | 16 字节 | <code>4fd6c7d73e713d7f54f173dfc845d046d267f9e62c80a92670b0696131bfb74a</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/win-x64/nightly.yml">nightly.yml</a> | 272 字节 | <code>faccf50f8398d6781568114dda9a678751e4c01044dd9424d00237c69e58cb59</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe">deepseek-harness-1.0.0-win-x64.exe</a> | 23 字节 | <code>7039e7b3e00d39fbfb2948ba31b6216ac9ffff01b4117a1cec08025255d9ad10</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bin/win-x64/deepseek-harness-1.0.0-win-x64.exe.blockmap">deepseek-harness-1.0.0-win-x64.exe.blockmap</a> | 16 字节 | <code>4fd6c7d73e713d7f54f173dfc845d046d267f9e62c80a92670b0696131bfb74a</code> |
|
||||
| <a href="https://example.com/dsh-desk/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/feeds/win-x64/nightly.yml">nightly.yml</a> | 272 字节 | <code>faccf50f8398d6781568114dda9a678751e4c01044dd9424d00237c69e58cb59</code> |
|
||||
|
||||
</details>
|
||||
|
||||
此摘要在公开仓库中可公开查看,包含下载路径及 test 发布的 release ID。随机前缀不能替代访问鉴权。
|
||||
若仓库为公开仓库,此摘要中的下载路径及 test 发布的 release ID 也会公开。随机前缀不能替代访问鉴权。
|
||||
Reference in new issue
Block a user