jenkinsfile-validator について
jenkinsfile-validatorは、Jenkins CIを保守する開発者向けに、Jenkinsパイプラインと共有ライブラリを検査するスキルです。ローカルスクリプトで構文、ハードコードされた認証情報、ベストプラクティスを確認し、必要に応じてプラグイン文書も調べられます。
主な機能
- 01DeclarativeとScriptedパイプラインの検査
- 02共有ライブラリの検証
- 03ハードコードされた認証情報の検出
- 04ベストプラクティスの確認
- 05各段階の結果と終了コードの集約
- 06任意のプラグイン文書検索
活用シーン
- 01コミット前のJenkinsfile確認
- 02パイプライン構文エラーの調査
- 03共有ライブラリのGroovyファイルの検査
- 04不明なプラグインステップの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ akin-ozer/ cc-devops-skills --skill jenkinsfile-validatorインストール後、Claude Code で/jenkinsfile-validatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/bad-declarative-pipeline.Jenkinsfilebad-scripted-pipeline.Jenkinsfiledeclarative-docker.Jenkinsfiledeclarative-kubernetes.Jenkinsfiledeclarative-parallel.Jenkinsfiledeclarative-unknown-plugins.Jenkinsfilescripted-basic.Jenkinsfilescripted-conditional.Jenkinsfilescripted-docker.Jenkinsfileexamples/shared-library/src/com/example/BuildConfig.groovyexamples/shared-library/vars/BadStep.groovybuildApp.groovyreferences/best_practices.mdcommon_plugins.mddeclarative_syntax.mdscripted_syntax.mdscripts/best_practices.shcommon_validation.shvalidate_declarative.shvalidate_jenkinsfile.shvalidate_scripted.shvalidate_shared_library.shtests/run_local_ci.shtest_validate_jenkinsfile.sh詳細
Jenkinsfile Validator Skill
このスキルを使用すると、まずローカルスクリプトで Jenkins パイプラインと共有ライブラリを検証し、その後、必要に応じてプラグインのドキュメントで検出結果を補足できます。
トリガーフレーズ
次のようなリクエストがあった場合に、このスキルを使用します。
- 「この Jenkinsfile を検証して」
- 「このパイプラインにセキュリティ上の問題がないか確認して」
- 「Declarative/Scripted パイプラインをリントして」
- 「この Jenkins パイプラインが構文チェックに失敗するのはなぜですか?」
- 「vars/.groovy または src/**/.groovy の共有ライブラリファイルを検証して」
対象範囲
このスキルでは、次を検証します。
- Declarative パイプライン(
pipeline { ... }) - Scripted パイプライン(
node { ... }および Groovy 形式のパイプライン) - 共有ライブラリファイル(
vars/*.groovy、src/**/*.groovy) - ハードコードされた認証情報のパターン
- パイプラインのベストプラクティスと保守性に関する指標
前提条件
特に記載がない限り、リポジトリのルートからコマンドを実行してください。
必須ツール
bashgrepsedawkheadwcfind(共有ライブラリのディレクトリスキャンに必要)
推奨ツール
jq(任意。JSON を多く扱うトラブルシューティングのワークフローを改善できます)
スクリプトの前提条件
- スクリプトは
devops-skills-plugin/skills/jenkinsfile-validator/scripts/にあります - メインのオーケストレーターは、
+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 >/dev/null && echo "required tools: ok" || echo "required tools: missing"
command -v jq >/dev/null && echo "jq: installed (optional)" || echo "jq: missing (optional)"
[ -d "$SKILL_DIR/scripts" ] && echo "scripts dir: ok" || echo "scripts dir: missing"
[ -f "$SKILL_DIR/scripts/validate_jenkinsfile.sh" ] && echo "main validator: ok" || echo "main validator: missing"
クイックスタート(正規化されたパス)
パスの曖昧さを避けるため、単一のベースパス変数を使用します。
SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator"
TARGET_JENKINSFILE="Jenkinsfile"
# Full validation (recommended)
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" "$TARGET_JENKINSFILE"
よく使うオプション
SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator"
TARGET_JENKINSFILE="Jenkinsfile"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --syntax-only "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --security-only "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --best-practices "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --no-security "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --no-best-practices "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --strict "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --assume-declarative "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" --assume-scripted "$TARGET_JENKINSFILE"
共有ライブラリの検証
SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator"
bash "$SKILL_DIR/scripts/validate_shared_library.sh" vars/myStep.groovy
bash "$SKILL_DIR/scripts/validate_shared_library.sh" vars/
bash "$SKILL_DIR/scripts/validate_shared_library.sh" src/
bash "$SKILL_DIR/scripts/validate_shared_library.sh" /path/to/shared-library
回帰テストとローカル CI チェック
SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator"
bash "$SKILL_DIR/tests/run_local_ci.sh"
run_local_ci.sh は、回帰テストを実行するためにサポートされているローカル/CI のエントリーポイントです。次を実行します。
- すべての
scripts/*.shファイルとtests/*.shファイルに対するbash -n構文チェック tests/test_validate_jenkinsfile.shの回帰シナリオ
決定論的な検証フロー
1)パイプラインの種類を検出
pipeline {=> Declarative バリデーターnode (...)またはnode {=> Scripted バリデーター- 不明 => デフォルトでは安全側に失敗します(
ERROR [TypeDetection]) - 意図的に判定が曖昧なファイルには、
--assume-declarativeまたは--assume-scriptedで種類を指定します
2)構文を検証
- Declarative:
validate_declarative.sh - Scripted:
validate_scripted.sh
3)セキュリティスキャンを実行
common_validation.sh check_credentials
4)ベストプラクティスを確認
best_practices.sh
5)結果を集約し、最終ステータスを返す
- 各フェーズの成功/失敗と最終終了コードを含む統一サマリー
6)スクリプト変更後に回帰テストスイートを実行
bash tests/run_local_ci.sh- ローカルのコミット前チェックと CI ジョブへの組み込みの両方を想定しています
個別スクリプトのコマンド(上級者向け)
SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator"
TARGET_JENKINSFILE="Jenkinsfile"
# Type detection
bash "$SKILL_DIR/scripts/common_validation.sh" detect_type "$TARGET_JENKINSFILE"
# Syntax-only by type
bash "$SKILL_DIR/scripts/validate_declarative.sh" "$TARGET_JENKINSFILE"
bash "$SKILL_DIR/scripts/validate_scripted.sh" "$TARGET_JENKINSFILE"
# Security-only
bash "$SKILL_DIR/scripts/common_validation.sh" check_credentials "$TARGET_JENKINSFILE"
# Best-practices-only
bash "$SKILL_DIR/scripts/best_practices.sh" "$TARGET_JENKINSFILE"
終了コードとログの解釈
メインオーケストレーター:validate_jenkinsfile.sh
0:検証に合格1:検証に失敗(構文/セキュリティエラー、または--strictモードでの警告)2:使用方法または環境に関するエラー(引数の誤り、ファイルがない、必須ツールがない)
サブスクリプト
validate_declarative.sh:0合格(errors=0)、1使用方法/ファイル/検証エラーvalidate_scripted.sh:0合格(errors=0)、1使用方法/ファイル/検証エラー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 のゲートでは、メインオーケストレーターの終了コードを基準にしてください。
- 警告でパイプラインを失敗させる場合は、
--strictを使用してください。 best_practices.shを単独で実行する場合は、終了コードだけに頼らず、レポートの各セクション(CRITICAL ISSUES、IMPROVEMENTS RECOMMENDED、スコア)を確認してください。
フォールバック動作
不足しているオプションのツール
jqが見つからない場合も、検証を続行します。ブロッキング要因として扱いません。
実行権限のない子スクリプト
- メインオーケストレーターが警告を出し、
bash <script>による実行にフォールバックします。
見つからない子スクリプト
- メインオーケストレーターはランナーエラーを報告し、そのフェーズを失敗として返します。
不明なプラグインステップ
次の順に確認します。
- ローカルのリファレンスを確認します:
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 検索します。
- 必須パラメーター、オプションのパラメーター、バージョン依存の注意事項、セキュリティに関するガイダンスを返します。
リファレンス
ローカルリファレンス:
devops-skills-plugin/skills/jenkinsfile-validator/references/declarative_syntax.mddevops-skills-plugin/skills/jenkinsfile-validator/references/scripted_syntax.mddevops-skills-plugin/skills/jenkinsfile-validator/references/best_practices.mddevops-skills-plugin/skills/jenkinsfile-validator/references/common_plugins.md
外部リファレンス:
レポートテンプレート
検証結果の報告では、次の構成を使用します。
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>
実行例
例 1:Jenkinsfile の完全な検証
SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator"
bash "$SKILL_DIR/scripts/validate_jenkinsfile.sh" Jenkinsfile
想定される動作:
- 構文、セキュリティ、ベストプラクティスの各検証を実行します。
- 各フェーズの結果と統合サマリーを出力します。
- オーケストレーターのルールに従って
0/1/2を返します。
例 2:共有ライブラリディレクトリの検証
SKILL_DIR="devops-skills-plugin/skills/jenkinsfile-validator"
bash "$SKILL_DIR/scripts/validate_shared_library.sh" examples/shared-library
想定される動作:
vars/とsrc/の両方のファイルを検証します。- 行番号を含む問題を集約します。
- エラーがある場合は
1を返します。
例 3:不明なプラグインステップのフォローアップ
入力ステップ:
nexusArtifactUploader artifacts: [[...]], nexusUrl: 'https://nexus.example.com'
手順:
- まずローカルで検証します。
- ステップの動作が不明確な場合は、Context7 を使ってドキュメントを解決します。
- 利用できない場合は、プラグインサイトのドキュメントを使用します。
- 使用方法のガイダンスと、セキュリティに配慮したパラメーターパターンを報告します。
完了条件
次のすべてを満たした場合、スキルの利用は完了です。
- コマンドでは正規化されたパス(
$SKILL_DIR/scripts/...)を使用し、作業ディレクトリの曖昧さがありません。 - 前提条件とオプションの依存関係が明示されています。
- 終了コードの意味とログの重要度の解釈が文書化されています。
- 不足しているツール/ドキュメントや制約のある環境でのフォールバック動作が定義されています。
- 完全な検証と共有ライブラリの検証について、少なくとも 1 つずつ実行可能な例があります。
- レポート形式が決定論的で、実用的です。
コメント
Markdown 対応