Skip to main content

build-product

Build a ComplianceAsCode product

소스 정보

저장소
openshift/cac-content-fork
최근 소스 활동
2026년 3월 26일 14:55
감지된 SKILL.md 언어
영어
스타
6
포크
6

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
build-product
description
Build a ComplianceAsCode product
# Build Product Build a ComplianceAsCode product. **Product**: $ARGUMENTS ## Tool Strategy This skill uses `mcp__content-mcp__*` tools when available (preferred — deterministic, structured results). When the MCP server is not configured, fall back to filesystem-based alternatives noted as **Fallback** in each step. See `.claude/skills/shared/mcp_fallbacks.md` for detailed fallback procedures. The skill must complete successfully either way. ## Phase 1: Validate Product 1. **Check if product is valid**: Use `mcp__content-mcp__get_product_details` with `product_id=$ARGUMENTS` to validate the product exists and get its metadata. **Fallback**: Read `products/$ARGUMENTS/product.yml` directly. If the file doesn't exist, the product is invalid. 2. **If product not found**, list available products: Use `mcp__content-mcp__list_products` to get all available products. **Fallback**: Run `ls products/` to list available product directories. 3. **If no product specified**, ask user using AskUserQuestion: - Use the product list to populate options - Allow "Other" for unlisted products ## Phase 2: Build Product **Always use the `build_product` script.** Do not use CMake, make, or ninja directly. Parse user arguments for optional flags: - `--datastream-only` — skip guides, tables, playbooks (faster) - `--rule-id <rule_id>` — build only a specific rule (fastest, for testing) Build command: ```bash ./build_product [flags] $PRODUCT ``` Examples: ```bash ./build_product rhel9 # Full build ./build_product --datastream-only rhel9 # Data stream only ./build_product --datastream-only --rule-id sshd_set_idle_timeout rhel9 # Single rule ``` ### Build Output Monitor build progress: - CMake configuration - Content resolution - OVAL generation - XCCDF generation - Data stream assembly Expected artifacts in `build/`: - `ssg-$ARGUMENTS-ds.xml` - SCAP data stream - `ssg-$ARGUMENTS-ds-1.2.xml` - SCAP 1.2 data stream - `ssg-$ARGUMENTS-xccdf.xml` - XCCDF document - `ssg-$ARGUMENTS-oval.xml` - OVAL definitions - `guides/` - HTML guides (skipped with `--datastream-only`) - `ansible/` - Ansible playbooks (skipped with `--datastream-only`) - `bash/` - Bash scripts (skipped with `--datastream-only`) ## Phase 3: Verify Build Success 1. **Check build exit code**: - Exit 0 = Success - Non-zero = Build failed 2. **Verify key artifacts exist**: Use `mcp__content-mcp__get_datastream_info` with `product=$ARGUMENTS` to verify the datastream was built successfully and get artifact details. **Fallback**: Check files directly: ```bash ls -la build/ssg-$ARGUMENTS-ds.xml ls -la build/ssg-$ARGUMENTS-xccdf.xml ls -la build/ssg-$ARGUMENTS-oval.xml ``` 3. **Check for build warnings**: - Look for deprecation warnings - Template processing warnings - Missing reference warnings ## Phase 4: Report Results ### Success Report ``` Build Complete ============== Product: $ARGUMENTS Build Status: SUCCESS Artifacts: - build/ssg-$ARGUMENTS-ds.xml - build/ssg-$ARGUMENTS-xccdf.xml - build/ssg-$ARGUMENTS-oval.xml Ready for: - Validation tests: /run-tests - Automatus testing: /test-rule <rule_id> - OpenSCAP scanning: oscap xccdf eval --profile <profile> build/ssg-$ARGUMENTS-ds.xml - PR creation ``` ### Build Failure Report ``` Build Failed ============ Product: $ARGUMENTS Error Output: [error message from build] Common Causes: 1. Jinja2 template syntax error in rule.yml 2. Missing macro or variable reference 3. Invalid platform specification 4. Circular dependency in profiles Debugging Steps: 1. Check the specific file mentioned in the error 2. Validate YAML: python3 -c "import yaml; yaml.safe_load(open('path/to/file.yml'))" 3. Check Jinja2: Look for unclosed tags, missing macros 4. Review recent changes: git diff HEAD~1 ``` ## Troubleshooting ### Common Build Errors 1. **Python import errors**: ```bash pip3 install -r requirements.txt pip3 install -r test-requirements.txt ``` 2. **Missing dependencies**: ```bash # RHEL/Fedora dnf install cmake make openscap-utils python3-pyyaml python3-jinja2 ``` 3. **Jinja2 errors**: - Check for undefined macros - Verify macro imports in the file - Check for syntax errors in `{{{ }}}` blocks 4. **OVAL validation errors**: - Check template parameters match expected types - Verify referenced variables exist - Check platform applicability ### Verbose Build For more detailed output: ```bash ./build_product $ARGUMENTS 2>&1 | tee build.log ```
GitHub에서 보기