Back to Chromium

Prep Verification Build

agents/skills/experimental-code-coverage-verification-prep/SKILL.md

152.0.7936.14.6 KB
Original Source

Prep Verification Build

This skill modifies workspace files to ensure LUCI builders run, isolates target test suites in builder Starlark files for speed, and uploads a Work-In-Progress (WIP) Gerrit CL. It is used to prepare both experimental branches with fixes and clean baseline branches.

When to Use This Skill

  • After making potential configuration fixes and needing to run a verification build.
  • To create a "Baseline" CL on a clean branch, with only the necessary modifications to trigger and speed up the build.

Inputs (Read from scratch/triage_state.json)

This skill reads its primary inputs directly from scratch/triage_state.json. The only dynamic selector passed in the subagent prompt is role ("Control" vs. "Fix"):

  • target_files: A list of file paths that need a dummy comment to ensure they are included in the build's affected files.
  • builders_of_concern: A list of target builder names (e.g. ["linux-rel"]). To locate the .star Starlark configuration file for each builder, reference builder_star_map.json.
  • test_suites: The test suite names to isolate in the builder configurations.
  • bug_id: The issue ID for context in the CL description.
  • control_branch_name / fix_branch_name: The git branch to check out. If role is "Control" (or "control"), check out control_branch_name. If role is "Fix" (or "fix"), check out fix_branch_name.

Workflow

  1. Checkout Branch:

    Read scratch/triage_state.json and check out control_branch_name (if role is "Control") or fix_branch_name (if role is "Fix").

    bash
    git checkout {{selected_branch_name}}
    
  2. Add Dummy Comments:

    • Iterate through each file in target_files (from scratch/triage_state.json).
    • Append a unique dummy comment to each file (e.g., // Verification run for b/{{bug_id}}).
    bash
    # Example for one file
    echo "// Verification run for b/{{bug_id}} $(date)" >> {{file_path}}
    
  3. Optimize Builder Configurations:

    • For each builder in builders_of_concern and its .star file:
      • Locate the builder definition.
      • Modify the test suite declarations to only include the target suites from test_suites (from scratch/triage_state.json).
      • Example Modification: Change existing test bundles to:
        python
        # Example for a builder's test targets
        targets = targets.bundle(targets = {{test_suites}})
        
      • After modifying the .star file(s), regenerate configuration artifacts directly from the repository root:
        bash
        lucicfg generate infra/config/main.star
        
        This updates the underlying JSON build specifications.
  4. Commit Changes:

    • Stage all modified tracked files in the workspace using git add -u. This stages the dummy comments and updated builder configurations while safely ignoring any untracked scratch files or local skills.
    bash
    git add -u
    
    • Create a commit using the structured naming format. Note that the commit title must explicitly state (Control) or (Fix) based on role. If test_suites contains multiple test suites, join their names or list them.
    • Commit Message:
      text
      Verify Code Coverage Change for {{test_suites}} ({{role}})
      
      This was generated by the Code Coverage Debugging Agent.
      
      Role: {{role}} Verification
      Target Files: {{ target_files }}
      
      {{ summary of applied GN/Starlark/recipe fixes or trimming }}
      
      Bug: {{bug_id}}
      
    bash
    git commit \
      -m "Verify Code Coverage Change for {{test_suites}} ({{role}})" \
      -m "This was generated by the Code Coverage Debugging Agent." \
      -m "Role: {{role}} Verification" \
      -m "Target Files: {{ target_files }}" \
      -m "{{ summary of applied GN/Starlark/recipe fixes or trimming }}" \
      -m "Bug: {{bug_id}}"
    
  5. Upload to Gerrit:

    • Upload the CL as a Work-In-Progress (WIP).
    • Do NOT pass --cq-dry-run to the upload command.
    bash
    git cl upload -f --bypass-hooks -o wip
    
  6. Update State File:

    • Update scratch/triage_state.json: write the uploaded CL URL into control_cl (if role is "Control") or fix_cl (if role is "Fix").

Output

  • The URL of the uploaded Gerrit CL.
  • Confirmation that scratch/triage_state.json (control_cl or fix_cl) has been updated.

References