ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何通过 staffml-publish-live 工作流触发 StaffML 线上发布(release_type 与 confirm=PUBLISH)

如何通过 staffml-publish-live 工作流触发 StaffML 线上发布(release_type 与 confirm=PUBLISH) 如何通过 staffml-publish-live 工作流触发 StaffML 线上发布release_type 与 confirmPUBLISH【免费下载链接】cs249r_bookMachine Learning Systems项目地址: https://gitcode.com/GitHub_Trending/cs/cs249r_book在 cs249r_book 仓库Machine Learning Systems monorepo中StaffML 是 Tier A 的线上站点项目。作为操作者你的任务是在 GitHub Actions 中手动触发 StaffML · Publish (Live)工作流定义在 staffml-publish-live.yml完成一次生产发布站点构建产物部署到gh-pages分支的/staffml/路径并为旧地址/interviews/部署重定向vault 数据同步到 Cloudflare D1同时打出一个staffml-vrelease_id标签并生成 draft GitHub Release。整个流程只有workflow_dispatch手动和workflow_call两种触发方式没有 push 自动触发。两个最关键的输入是release_type决定版本号怎么涨和confirm必须精确填写PUBLISH才会真正执行。触发前的前提dev 分支上两个校验工作流必须是绿色build-and-deploy之前有两个门控 jobguard-dev与guard-vault它们调用共享的 infra-publish-guard.yml分别查询staffml-validate-dev.yml与staffml-validate-vault.yml在dev分支上最近一次已完成的运行。门控失败的条件有三类对应的错误信息文档中都写明了找不到已完成的运行No completed run of workflow found on branch dev. Trigger the validate-dev workflow on dev and re-run this publish.—— 先去 dev 分支触发校验再重跑发布最近一次运行的结论不是successPublish blocked.—— 先修复 dev 上的问题最近一次绿色运行超过max_age_minutes默认 1440 分钟即 24 小时Re-run validate-dev and try again.—— 绿色结果过期不可信。publish 工作流的注释解释了两道门都需要的理由staffml-validate-dev覆盖 Next.js 应用与 E2E smokestaffml-validate-vault覆盖语料完整性、vault-cli 与 worker一个只破坏 chain 完整性的 YAML 错误只会让 validate-vault 失败而站点照常构建因此不能只依赖其中一道。在 GitHub Actions 中触发并填写五个输入按 docs/VERSIONING.md 的 “How to publish (operator)” 一节进入该项目的 Publish (Live) 工作流点击 Run workflow填写以下输入与 staffml-publish-live.yml 中workflow_dispatch.inputs的定义一致输入类型 / 默认值用途文档原话或行为descriptionstring可选默认Content updates and improvements一行摘要会成为 release notes 的标题site_onlyboolean默认falseWebsite-only deploy不涨版本、不打新 tag复用当前release_id。适用于 CSS/文案类重部署——引用完整性要求一个版本映射到固定字节重打已存在的 tag 是被禁止的release_typechoicepatch/minor/major默认patch必填patch小修复、minor新内容、major破坏性变更。当site_onlytrue或设置了explicit_version时该值被忽略explicit_versionstring可选默认空显式指定X.Y.Z跳过自动 bump 计算用于非递增跳版如 0.1.x 直接到 0.10.0留空则自动 bumpconfirmstring必填默认空必须输入PUBLISH是防止误点的安全检查confirm 必须精确为 PUBLISH工作流中所有实际干活的 job 都带有if: inputs.confirm PUBLISH条件两个 guard job、preparejob见 _release-prepare.yml 中if: inputs.confirm PUBLISH、build-and-deploy与create-tag。也就是说confirm不填或拼错时运行会“成功”结束但每个 job 都被跳过什么都不会部署——这是一种静默的空跑触发后要先确认 job 没有被跳过。工作流内部按什么顺序执行通过confirm门控后job 依赖链是guard-dev/guard-vault→prepare→build-and-deploy→create-tagprepare复用 _release-prepare.yml以project: staffml、tier: A、previous_tag_pattern: staffml-v*调用。它列出所有匹配staffml-v*的 tag取版本号最高的作为 previous tag再用release_type计算新的裸版本号X.Y.Zbump 计算委托给共享的 Python 助手scripts/version/release.py compute-id见 docs/VERSIONING.md 的 “Architecture in one paragraph”生成新 tag 名staffml-vrelease_id。两条保护逻辑拒绝重打已存在的 tag若新 tag 已存在则exit 1提示To re-publish the same content, use site_onlytrue.或To bump past it, set explicit_version to a higher value.release_id 是 append-only 的引用锚点site-only 模式site_onlytrue时直接复用上一个 tag 的版本号不做 bump、不产生新 tag若仓库里还没有任何staffml-v*tag则报site_onlytrue but no previous tag found (staffml-v*).并失败。 该 job 的 outputsnew_release_id、new_tag、previous_tag等供下游使用并在 step summary 中输出一张 “Release prepared” 表格。build-and-deployconcurrency组为gh-pages-deploy且cancel-in-progress: false保证同一时间只有一个部署在跑。关键环境来自 job 的env:块均可由仓库 Variables 覆盖见 docs/CI-VARIABLES.mdSTAFFML_ROOT回退值interviews/staffml、VAULT_DIRinterviews/vault、VAULT_CLI_DIRinterviews/vault-cli、DEV_STAFFML_PATHstaffmlNODE_VERSION被硬编码为22因为 wrangler4.87 在 Node 22 时拒绝启动而共享的vars.NODE_VERSION仍是 20。步骤顺序为npm ci→ 安装 vault-cli →vault build --site-bundle用 prepare 算出的new_release_id重新生成站点 bundle →npx tsc --noEmit→npm test→npm run build注入NEXT_PUBLIC_BASE_PATH/staffml、NEXT_PUBLIC_VAULT_API等生产环境变量→ 将规范形态的release-manifest.json写入部署目录 → 校验构建index.html缺失则中止页面数少于 8 会给 warning→ vault 完整性校验与 smoke tests → 生成/interviews/重定向页 → 用peaceiris/actions-gh-pagesv4把out/发布到gh-pages分支的staffml目录 → 同步 Cloudflareship_d1.py推 D1 数据、npx wrangler deploy部署 worker需要CLOUDFLARE_API_TOKEN与CLOUDFLARE_ACCOUNT_ID两个 secrets另加GITHUB_TOKEN→ 最后把corpus-summary.json与vault-manifest.json以chore(staffml): bump vault release to id提交回当前分支site_onlytrue时跳过此提交。create-tag仅在build-and-deploy成功且site_only ! true时执行。它先git pull --ff-only拉回上一步推送的 artifact 提交再创建带注释的 tagstaffml-vX.Y.Z并推送然后用gh release create ... --draft生成一个draftGitHub Release自动附上下一个 tag 之间由 GitHub 生成的 commit 列表。发布后如何核对线上版本docs/VERSIONING.md 的 “How to verify a deployed version” 给出了一组命令其中staffml-v0.1.1是文档示例值替换为你本次运行产生的新 tag# 当前线上是哪一个版本 curl -s https://mlsysbook.ai/staffml/release-manifest.json | jq . # 查看某个 release 的详情示例 tag换成你的新 tag gh release view staffml-v0.1.1 cat releases/staffml-0.1.1/release.json | jq . # 部署的 manifest 是否与 tag 里记录的一致 curl -s https://mlsysbook.ai/staffml/release-manifest.json | jq -r .releaseHash git show staffml-v0.1.1:releases/staffml-0.1.1/release.json | jq -r .release_hash两条releaseHash应当一致文档明确如果两个 hash 不一致说明从 tag 到部署之间出了差错应提交 issue 记录。此外draft Release 会出现在仓库的 Releases 页面按文档流程检查自动生成的 notes 后再将其正式发布。常见失败信号与文档给出的处理guard 失败错误信息本身就给出下一步——去dev分支触发对应的 validate 工作流staffml-validate-dev.yml或staffml-validate-vault.yml跑绿之后重跑 publish绿色运行超过 24 小时同样要求先重跑 validate。tag 冲突Tag staffml-vX.Y.Z already exists. Refusing to overwrite.—— 内容相同就用site_onlytrue重发确需越过该版本就把explicit_version设为更高的X.Y.Z。site-only 但无任何历史 tagsite_onlytrue but no previous tag found (staffml-v*).—— site-only 模式依赖已有的 release_id首次发布必须走常规release_typebump。confirm 未填 PUBLISH不报错但所有 job 被跳过、无部署发生。触发后先检查 job 状态是否为skipped。完成一次发布后线上的可核对结果是https://mlsysbook.ai/staffml/release-manifest.json返回新releaseId与releaseHash、staffml-vX.Y.Ztag 已推送、一个待你审阅的 draft GitHub Release。【免费下载链接】cs249r_bookMachine Learning Systems项目地址: https://gitcode.com/GitHub_Trending/cs/cs249r_book创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表