Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

A failed code quality gate can mean your code broke a test or policy—or that CI skipped the check, analyzed the wrong files, or failed to publish its result. Before changing code or loosening a threshold, trace the run from trigger to report to commit. That tells you whether to fix a genuine finding or repair the pipeline.

Start with the first failure, not the final red status

A “quality gate” is a policy-enforcing check, not one standardized CI feature. Depending on the project, it may enforce tests, coverage, lint rules, security findings, or another threshold. A red, pending, skipped, or missing status can each mean something different, so use the provider’s run details rather than color alone.

  1. Find the run and failed step. In GitHub Actions, open Actions → workflow → run → job. Expand the failed step and read the first meaningful error near the failure; “exit code 1” is usually only the final symptom. The GitHub run-log guide describes this navigation. For GitHub-hosted runners, the “Set up job” log also records runner-image details and links to preinstalled tools.
  2. Record what was supposed to run. Note the check name and provider, job and step, triggering event, branch, and commit SHA. Establish whether the job ran, was skipped, canceled, or never started.
  3. Write down the failed condition. Capture the actual finding or measured value—such as a named failing test, uncovered-line percentage, lint rule, or security severity—and the configured threshold it was compared with.
  4. Check what CI says happened to the result. Distinguish a failed check from a pending or missing status, a warning or unstable build, and a report that was not produced or consumed.

For GitLab, inspect the pipeline source and relevant predefined variables, including CI_PIPELINE_SOURCE and CI_MERGE_REQUEST_ID. If a job is absent, review its rules or legacy only/except conditions against the actual variable values; a job omitted from a pipeline has not passed. See GitLab’s CI/CD debugging guidance.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Follow the evidence through the check

Use this sequence to separate a code problem from a CI or reporting problem. Do not tune the gate until you know which stage failed.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
  1. Did the check run for this event? If not, inspect triggers, branch and path filters, commit-message skip instructions, job rules, and upstream job conditions.
  2. Did it inspect the intended code? Check the working directory, source and test selection, generated or excluded files, tool configuration, runtime, and dependency versions.
  3. Did the tool finish and produce a fresh report? Look for the expected output file, format, timestamp or run context, and included suites or files. An empty or absent report does not prove there were no findings.
  4. Did CI consume the report and attach the status correctly? For multi-job pipelines, trace artifact upload, download, paths, retention, and format. Then confirm that the reported status belongs to the commit under review.
  5. Did the measured result actually breach policy? Compare the tool’s value and metric with the configured condition. A display percentage, annotation, or warning is not necessarily the enforcing threshold.

Fix the gate that actually failed

Tests

Classify the failure before editing code: an assertion failure, test discovery or setup error, timeout, missing environment dependency, or intermittent/flaky result require different fixes. Open the raw test output and report, and verify it is from this run and includes all intended suites.

Where practical, run the same CI command locally from the same working directory. Match the runtime, dependencies, environment variables, and service containers as closely as possible. If it passes locally but fails in CI, compare the runner image and operating system, runtime version, concurrency, time zone, network access, secrets, and service readiness. A single rerun may help identify a transient infrastructure problem; repeated reruns that eventually pass can hide a flaky test, so retain and compare the failing logs.

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

Test-report status depends on configuration as well as test outcomes. For example, Jenkins’ JUnit Pipeline step marks a build unstable by default when a report contains at least one failure, though configuration can suppress that status change. Suppressing instability does not make a failed test pass.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Coverage

  • Confirm that tests ran and generated fresh coverage data for the current commit.
  • Check include and omit patterns, source paths, report format, and path mapping—especially when one job or container produces the report and another consumes it.
  • Identify the metric being enforced. Line, statement, and branch coverage are not interchangeable; establish whether the threshold applies to the whole project or changed code.
  • Separate threshold enforcement from display. coverage report --fail-under=MIN in Coverage.py exits with status 2 when total coverage is below the minimum. Its reporting command also supports include/omit filters and data-file selection; see Coverage.py reporting.

GitLab’s coverage setting extracts a percentage from job output using a regular expression; aggregation requires that setting on each job. Its separate artifacts:reports:coverage_report configuration accepts Cobertura or JaCoCo XML for line annotations, but does not itself display the percentage or populate coverage history graphs. These are reporting features, not proof that the desired threshold was enforced. See GitLab coverage reporting and GitLab artifact report types.

Rank #3
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Lower a threshold or exclude files only after establishing that the policy is wrong or unachievable. Document and review the change, and apply it consistently; otherwise the check may simply stop detecting the gap it was meant to catch.

Lint, formatting, and static analysis

Read the tool’s findings and rule identifiers, then confirm the expected tool version and configuration file were used. Check whether generated, vendored, and test files are included or excluded as intended. Prefer correcting violations; if an exception or scope change is justified, document its reason and keep it narrow. A formatter check is distinct from a lint finding: it may fail because CI expects the committed files to have already been formatted.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

Security and dependency checks

Identify whether the gate concerns source code, dependency advisories, secrets, or another scan category. Confirm the scan completed, its data source or updates were available, and the report was ingested before interpreting an empty result as clean. Review severity policy, context or reachability, and whether an affected dependency is direct or transitive. Where feasible, update, replace, or remove the affected code or dependency. If policy permits an exception, make it accountable and time-bounded rather than disabling the scanner or ignoring a finding without rationale.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Build, runner, and report-transport failures

Dependency installation, compilation, credentials, test services, runner capacity, artifact handling, or billing and storage problems can stop analysis before the gate evaluates code. Use tool-specific verbose logging where useful; GitHub’s troubleshooting guide gives examples such as npm install --verbose and Git tracing. GitLab recommends running the job’s commands locally in its container image when practical. Preserve logs and reports: GitHub workflow artifacts can persist files after a job and make them available to later jobs.

Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Check for stale, skipped, or miswired statuses

Some merge blockers are workflow configuration problems rather than quality findings.

  • Stale commit result: GitHub required checks must pass on the latest commit SHA; a result from an earlier commit does not satisfy the requirement. Confirm the SHA shown for the check matches the pull request’s latest commit.
  • Workflow did not trigger: Branch or path filters and commit-message skip instructions can leave associated required checks pending. GitHub cautions against requiring workflows that can be skipped this way. Check the event and filters before changing the code.
  • Merge queue event missing: A workflow required by a GitHub merge queue must handle the merge_group event. A pull-request run alone may not provide the required result.
  • Dependent job skipped: In GitHub Actions, jobs that declare needs are skipped when a dependency fails or is skipped unless their conditions permit continuation. GitHub documents always() for cases where a downstream job must run regardless; use it only when that behavior is appropriate.
  • Wrong status name or permissions: The tool may run while the required check name, event, or branch rule fails to match its reported status. A report-upload step can also fail if the workflow token lacks permission. In GitHub Actions, explicitly specifying GITHUB_TOKEN permissions leaves unspecified permissions at none; inspect the authorization error and grant only what the step needs. See workflow syntax and permissions.
  • Different provider status semantics: A skipped check may appear successful in one status interface, while a skipped required workflow may remain pending under branch protection. Use the provider’s status and branch-protection behavior rather than inferring the outcome from a color. See GitHub status checks and its required-check troubleshooting.
  • GitLab job omitted or duplicated: Inspect actual predefined-variable values and the pipeline source before changing rules. GitLab notes that mixing rules with only/except can be difficult to predict and recommends rules.

GitLab report types also have different failure behavior: report artifacts are uploaded even when a job fails, but security findings are ingested only when the producing job succeeds. Thus a failed producing job can appear to have no ingested findings; check the job result and artifacts before drawing that conclusion. GitLab’s artifact report documentation also specifies that JUnit XML belongs under artifacts:reports:junit; directories alone are not valid report paths, though file patterns and arrays are supported.

Use the symptom to choose the next check

Symptom Likely cause Evidence to inspect Next action
A named test, lint rule, or security finding fails A genuine policy violation Raw tool output, rule or test name, configured policy Fix the code or test; make a reviewed policy change only if the policy itself is wrong.
Required check is pending or missing Skipped trigger, filter, missing event, stale SHA, or unmatched status name Run event, branch/path filters, commit SHA, required-check configuration Repair workflow triggering or status wiring, then confirm a fresh result on the current commit.
Coverage value is absent or unexpectedly low Tests did not run, data is stale, source selection or paths differ, or output parsing failed Coverage data and report, include/omit settings, logs, artifact paths, threshold metric Correct generation, selection, transfer, or extraction; validate the actual enforcing threshold separately.
Tool reports findings but CI shows none Report missing, malformed, not ingested, or produced by a failed job Producer job result, report format and path, artifact transfer and ingestion logs Repair report production or ingestion and preserve the artifact for diagnosis.
Job fails before analysis begins Install, build, credential, service, runner, or platform problem First failing log line, runner image, permissions, service readiness, artifacts Repair the environment or pipeline dependency; do not treat it as a clean quality result.

Close the loop before merging

  1. Reproduce the exact command where practical, using the CI working directory and environment details.
  2. Fix the finding or repair the trigger, analysis, reporting, or status path that failed.
  3. Rerun after the change and inspect the new logs and expected report, not just the summary status.
  4. Confirm the required result is attached to the latest commit SHA and that all required jobs completed.
  5. Keep the relevant logs and artifacts when a failure was intermittent or report-related, so future runs can be compared.

A rerun that passes can point to a transient failure, but it does not establish that the check is reliable. For reproducibility, explicitly select runtime and tool versions where appropriate, compare local versions with runner-image versions, and keep test and report paths deterministic.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.