研发协作
在本地静态验证 Jenkinsfile…
需要对 Declarative/Scripted Jenkins 管道或共享库 Groovy 文件做语法、安全与最佳实践检查时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在本地静态验证 Jenkinsfile 特定
解决思路
- 从仓库根目录运行命令(除非另有说明)。
- 确保所需工具可用:bash、grep、sed、awk、head、wc、find;jq 为可选推荐工具。
- 脚本位于 devops-skills-plugin/skills/jenkinsfile-validator/scripts/;主 orchestrator 即使子脚本缺少 +x 也能通过 bash 回退运行;若要直接执行(./script.sh),运行 chmod +x devops-skills-plugin/skills/jenkinsfile-validator/scripts/*.sh。
- 执行预检:设置 SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator",检查 command -v bash grep sed awk head wc find、command -v jq、脚本目录和主验证器是否存在。
- 使用规范化路径:设置 SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator" 和 TARGET_JENKINSFILE="Jenkinsfile",避免路径歧义。
- 执行完整验证:bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" "$TARGET_JENKINSFILE"。
- 按需使用常用选项:--syntax-only、--security-only、--best-practices、--no-security、--no-best-practices、--strict、--assume-declarative、--assume-scripted,例如 bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --syntax-only "$TARGET_JENKINSFILE"。
- 验证共享库:bash "$SKILL_DIR/scripts/validate_shared_library.sh" vars/myStep.groovy,也支持 vars/、src/ 或 /path/to/shared-library。
- 运行回归和本地 CI 检查:bash "$SKILL_DIR/tests/run_local_ci.sh";它会运行所有 scripts/*.sh 和 tests/*.sh 的 bash -n 语法检查,以及 tests/test_validate_jenkinsfile.sh 回归场景。
- 检测管道类型:pipeline { 用 Declarative validator;node (...) 或 node { 用 Scripted validator;未知类型默认失败并报 ERROR [TypeDetection];可用 --assume-declarative 或 --assume-scripted 覆盖有歧义文件。
- 运行语法验证:Declarative 用 validate_declarative.sh,Scripted 用 validate_scripted.sh。
- 运行安全扫描:common_validation.sh check_credentials。
- 运行最佳实践检查:best_practices.sh。
- 聚合并返回最终状态:输出统一摘要,包含每个阶段的 pass/fail 和最终退出码。
- 脚本变更后运行回归套件:bash tests/run_local_ci.sh,用于本地 pre-commit 检查和 CI 任务接线。
- 按需单独调用高级脚本:bash "$SKILL_DIR/scripts/common_validation.sh" detect_type "$TARGET_JENKINSFILE";bash "$SKILL_DIR/scripts/validate_declarative.sh" "$TARGET_JENKINSFILE";bash "$SKILL_DIR/scripts/validate_scripted.sh" "$TARGET_JENKINSFILE";bash "$SKILL_DIR/scripts/common_validation.sh" check_credentials "$TARGET_JENKINSFILE";bash "$SKILL_DIR/scripts/best_practices.sh" "$TARGET_JENKINSFILE"。
- 解释主 orchestrator 退出码:0 验证通过;1 验证失败(语法/安全错误,或 --strict 模式下的警告);2 用法或环境错误(错误参数、缺少文件、缺少所需工具)。
- 解释子脚本退出码:validate_declarative.sh 为 0 通过(errors=0)、1 用法/文件/验证失败;validate_scripted.sh 相同;common_validation.sh check_credentials 为 0 无凭据错误、1 发现凭据问题;validate_shared_library.sh 为 0 通过、1 发现验证错误、2 无效输入目标;best_practices.sh 仅在用法/文件错误时返回 1,内容发现报告在日志和评分输出中。
- 按日志严重模式解释:ERROR [Line N] 必须修复;WARNING [Line N] 应审查;INFO [Line N] 可选改进;摘要横幅(VALIDATION PASSED/FAILED)快速确定最终解释。
- 实用解释规则:CI 门禁依赖主 orchestrator 退出码;当警告应使流水线失败时使用 --strict;独立运行 best_practices.sh 时,阅读报告章节(CRITICAL ISSUES、IMPROVEMENTS RECOMMENDED、score),不要只依赖退出码。
- 处理缺少可选工具:如果 jq 缺失,继续验证,视为非阻塞。
- 处理不可执行的子脚本:主 orchestrator 发出警告并回退到 bash <script> 执行。
- 处理缺少子脚本:主 orchestrator 报告 runner 错误,并返回该阶段失败。
- 处理未知插件步骤:先查本地 devops-skills-plugin/skills/jenkinsfile-validator/references/common_plugins.md;再用 Context7:mcp__context7__resolve-library-id 查询 jenkinsci <plugin-name>-plugin,然后用 mcp__context7__query-docs 查用法和参数;最后 Web 回退到 plugins.jenkins.io 和官方 Jenkins 文档。
- 离线/气隙模式:运行所有本地验证器;若无法获取插件文档,报告:Plugin docs lookup skipped due to environment constraints; local validation only.
- 插件文档查找工作流:识别 Jenkinsfile 或验证器日志中的未知步骤;先查 references/common_plugins.md;缺失则用 Context7(resolve-library-id 然后 query-docs);仍缺失则用 Web 搜索官方插件索引/文档;返回必需参数、可选参数、版本敏感说明和安全指导。
- 使用报告模板:Validation Target: <path>;Pipeline Type: <Declarative|Scripted|Shared Library|Unknown>;Findings: - ERROR [Line X]: <issue> - WARNING [Line Y]: <issue> - INFO [Line Z]: <suggestion>;Phase Results: - Syntax: <PASSED|FAILED|SKIPPED> - Security: <PASSED|FAILED|SKIPPED> - Best Practices: <PASSED|REVIEW NEEDED|SKIPPED>;Exit Code: <0|1|2>;Next Actions: 1. <highest-priority fix> 2. <second fix>。
- 示例:完整 Jenkinsfile 验证:bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" Jenkinsfile;预期运行 syntax + security + best practices,打印每阶段结果和统一摘要,返回 0/1/2。
- 示例:共享库目录验证:bash "$SKILL_DIR/scripts/validate_shared_library.sh" examples/shared-library;预期验证 vars/ 和 src/ 文件,聚合问题并带行引用,有错误时返回 1。
- 示例:未知插件步骤后续:本地验证后,若步骤行为不清楚,通过 Context7 查文档;不可用则用插件站点文档;报告用法指导和安全参数模式。
- 完成标准:命令使用规范化路径($SKILL_DIR/scripts/...)且无 cwd 歧义;前置条件和可选依赖明确;退出码语义和日志严重性解释已记录;回退行为已定义;至少有一个可运行示例用于完整验证和共享库验证;报告格式确定性且可操作。
适用边界 · 注意事项
- 不适用于需要实际运行 Jenkins 流水线或在真实 Jenkins 控制器上执行诊断的场景;本技能只做本地静态验证与检查。
- 不适用于无法运行 bash/grep/sed/awk 等本地脚本的环境,或缺少 devops-skills-plugin/skills/jenkinsfile-validator/scripts/ 脚本时。
- 不适用于需要权威插件行为解释但完全离线且无法获取插件文档的场景;此时只能做本地验证,无法完成插件文档增强。