用途:指导修改 OpenVINO 仓库中常规(非智能体)GitHub Actions CI,包括校验工作流、可复用 workflow、自定义动作、CI 脚本、Dockerfile 与 Smart CI 配置。使用前应先阅读 docs/dev/ci/github_actions 下的 CI 开发文档,本技能是其上的检查清单,行为变化时需同步文档。
结构:工作流位于 .github/workflows(如 ubuntu_22.yml、windows_vs2022_release.yml、job_*.yml 可复用);自定义动作在 .github/actions(composite action.yml);CI 脚本在 .github/scripts;Dockerfile 在 .github/dockerfiles;Smart CI 配置为 .github/labeler.yml 与 components.yml;扫描相关为 workflows_scans.yml、dependency_review.yml。gh-aw 智能体工作流不在范围内,应使用 ov-agentic-workflows 技能。
核心规则:第三方 action 固定到完整 commit SHA 并附版本注释,第一方 ./.github/actions/* 按路径引用;权限遵循最小特权,工作流级用 permissions: read-all,仅按需在 job 级扩展;禁止 pull_request_target,禁止硬编码密钥,用户可控的 github.* 值须经 env: 或 action 输入传递,不得直接插入 run:;共享逻辑放入可复用 job_*.yml;组件相关 job/step 需以 fromJSON(needs.smart_ci.outputs.affected_components).<COMPONENT>.{build,test} 作为门控并把 Smart_CI 列入 needs;自定义镜像来自 handle_docker,纯透传镜像须用 ACR 镜像 openvinogithubactions.azurecr.io/...;每个 job 设置 timeout-minutes。
常见任务:新增测试按 adding_tests.md 选择最小单元;新增/编辑可复用 workflow 时提供 on: workflow_call: 的带类型输入与 permissions: read-all;接入 Smart CI 需配置 labeler.yml、components.yml 并在依赖链上保持一致门控;新增自定义动作须声明 inputs 与 runs: using: composite,每个 run step 指定 shell:;新增 Docker 镜像需更新 docker_tag。实现语言优先 Python,需 requirements.txt 时用 pip freeze 固定完整依赖树;仅在大量使用 GitHub API 时用 JavaScript。
验证与陷阱:可用 actionlint 检查 YAML;检查第三方 action 固定、权限范围、Smart CI 门控、变更范围;注意未固定 action、run: 中未信任输入、权限过宽、忽略 Smart CI、依赖链门控不一致、必需工作流使用 paths: 过滤、硬编码 docker.io、needs 缺失、改输入契约未同步调用方、未升 docker_tag、缺 timeout-minutes、GPU job 未用 Docker 等问题。不要手改 *.lock.yml,该技能与其他资料未提供更多细节。