发布与制品管理:完整实践与解答
需能阅读文件清单和摘要。本地制品示例用 Python 3.11+ 标准库与 zlib,把 payload/README.txt 打成 ZIP,并记录字节数与 SHA-256;输出目录必须全新。本页解释标识、晋级和回滚前提,示例只打包、不发布。 示例未在本轮执行;本页完整源码与README列出输入、阅读顺序和预期。
制品 完整打包源码
制品完整打包源码使用Python标准库把固定文本打入ZIP并生成清单。示例未执行;输出只在读者指定的新目录,源码拒绝已存在目标,避免覆盖旧制品,不调用任何发布平台。
制品 摘要练习
题目:README改一个字符但版本仍为1.0.0,摘要是否应相同?
参考答案
字节变化会改变SHA-256;同版本重新发布不同字节会破坏不可变性,应生成新版本或明确未发布草稿。
制品 清理恢复
制品清理恢复只删除读者指定输出目录中的demo.zip与manifest.json,先核对路径和保留需要的摘要记录。示例没有线上状态,不存在远端回滚;删除本地包不能撤回已分发副本。
完整源码、配置与输入
下列文件与仓库同源,包含完整实现和输入;不是运行证明。部分练习只需人工阅读配置,不强制构造模拟器。
payload/README.txt
text
Offline artifact example, version 1.0.0.
No deployment has occurred.pack.py
python
import hashlib
import json
import sys
import zipfile
from pathlib import Path
def pack(output):
output.mkdir(parents=True, exist_ok=False)
source = Path(__file__).parent / "payload" / "README.txt"
if source.is_symlink() or not source.is_file():
raise ValueError("payload must be a regular file")
content = source.read_bytes()
target = output / "demo.zip"
with zipfile.ZipFile(target, "x", compression=zipfile.ZIP_DEFLATED) as archive:
archive.writestr("README.txt", content)
digest = hashlib.sha256(target.read_bytes()).hexdigest()
manifest = {"version": "1.0.0", "source": "fictional-offline-course",
"files": [{"name": target.name, "bytes": target.stat().st_size,
"sha256": digest}]}
with (output / "manifest.json").open("x", encoding="utf-8") as stream:
json.dump(manifest, stream, indent=2)
stream.write("\n")
print("created demo.zip and manifest.json; not published")
if __name__ == "__main__":
try:
if len(sys.argv) != 2:
raise ValueError("usage: python pack.py NEW_OUTPUT_DIRECTORY")
pack(Path(sys.argv[1]))
except (ValueError, OSError, zipfile.BadZipFile) as exc:
print(str(exc), file=sys.stderr)
sys.exit(2)CHANGELOG.md
markdown
# Changelog
## 1.0.0 (fictional, unpublished)
Initial README-only artifact; no API or database changes.requirements.txt
text
# Python 3.11+ standard library, including zlib support for ZIP_DEFLATED.项目README与完整依赖
README提供前置、完整自跑或阅读方式、预期、失败案例与恢复清理。本轮没有执行任何示例、产品CLI、模型或外部API。
markdown
# 发布与制品管理:完整教学包
示例未执行。全部输入为教学虚构资料,不能用于真实账号、生产数据或外部系统。
## 前置与依赖
Python3.11以上标准库及zlib。命令在PowerShell适用;Linux将python换python3。
## 文件与输入
- `payload/README.txt`:本包完整文件。
- `pack.py`:本包完整文件。
- `CHANGELOG.md`:本包完整文件。
- `requirements.txt`:本包完整文件。
## 读者将来自跑或阅读
复制本包所有文件到独立目录,在该目录作为当前工作目录。以下是读者自用资料,本轮禁止执行。
```text
python pack.py out-new
```
## 正常预期
创建全新out-new目录,其中demo.zip含README.txt,manifest.json记录ZIP字节数及SHA-256;未发布。
## 失败案例与恢复
再次使用同一个out-new会因已存在目录退出2;若磁盘失败可能留下部分输出,不能当有效制品。
## 清理及能力边界
不保证ZIP字节可复现;核对目录后仅移除新输出,不删除payload或上传任何包。
## 来源
- [官方依据](https://semver.org/lang/zh-CN/)(2026-10-17资料核对;不是运行证明)依据与适用范围
- 本课官方依据,资料核对日2026-10-17。
本课完成的是列明任务的理论与静态资料,不代表产品全部能力或三平台运行通过。历史文档保留旧URL;涉及账号、版本、价格与界面位置时,以对应官方资料及实际授权环境为准。
继续阅读
- 发布与制品管理上手与对象