From d5d741f4e3bab915772ecacc762270d2d4f82e4c Mon Sep 17 00:00:00 2001 From: LandonTClipp <11232769+LandonTClipp@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:48:05 -0500 Subject: [PATCH 1/2] ci: Don't run CI builds on doc PRs We disable the Kata artifact builds and testing if the PR is only related to documentation. Regular static checks will remain. Signed-off-by: LandonTClipp <11232769+LandonTClipp@users.noreply.github.com> --- tools/testing/gatekeeper/required-tests.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/testing/gatekeeper/required-tests.yaml b/tools/testing/gatekeeper/required-tests.yaml index 7e6cc9dd18..a9f308655d 100644 --- a/tools/testing/gatekeeper/required-tests.yaml +++ b/tools/testing/gatekeeper/required-tests.yaml @@ -19,6 +19,8 @@ paths: - "^ci/openshift-ci/": [] - "^\\.github/workflows/static-checks": ["static"] - "^\\.github/workflows/": [] + - "^docs/": ["static"] + - "^mkdocs\\.yaml$": ["static"] - "\\.md$": ["static"] # TODO: Expand filters # Sources From 9a8932412d0b113b266cd1115d6d76e7f3e2c310 Mon Sep 17 00:00:00 2001 From: LandonTClipp <11232769+LandonTClipp@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:48:35 -0500 Subject: [PATCH 2/2] docs: remove URL and markdown reference checks This URL check performed a CURL command to see if it was real. This will not work in the mkdocs world because the docs might reference a link that is not yet built on the main page. This is a chicken-and-egg problem. For reference: ``` ERROR: Invalid URL 'https://kata-containers.github.io/kata-containers/installation/#helm-chart' found in the following files: tools/packaging/kata-deploy/helm-chart/README.md ``` The markdown reference requirement was put in place for the old docs system, but this will not apply anymore in the new mkdocs system. I'm removing this entirely because it will only get in the way and cause confusion. Signed-off-by: LandonTClipp <11232769+LandonTClipp@users.noreply.github.com> --- tests/static-checks.sh | 120 +++-------------------------------------- 1 file changed, 8 insertions(+), 112 deletions(-) diff --git a/tests/static-checks.sh b/tests/static-checks.sh index b8d0cc9abf..1319f1fe3f 100755 --- a/tests/static-checks.sh +++ b/tests/static-checks.sh @@ -103,6 +103,7 @@ long_options=( [no-arch]="Run/list all tests except architecture-specific ones" [only-arch]="Only run/list architecture-specific tests" [repo:]="Specify GitHub URL of repo to use (github.com/user/repo)" + [repo-path:]="Specify path to repository to check (default: \$GOPATH/src/\$repo)" [scripts]="Check script files" [vendor]="Check vendor files" [versions]="Check versions files" @@ -596,19 +597,6 @@ check_url() local curl_ua_args [ -n "$user_agent" ] && curl_ua_args="-A '$user_agent'" - { run_url_check_cmd "$url" "$curl_out" "$curl_ua_args"; ret=$?; } || true - - # A transitory error, or the URL is incorrect, - # but capture either way. - if [ "$ret" -ne 0 ]; then - errors+=("Failed to check URL '$url' (user agent: '$user_agent', return code $ret)") - - # Try again with another UA since it appears that some return codes - # indicate the server was unhappy with the details - # presented by the client. - continue - fi - local http_statuses http_statuses=$(grep -E "^HTTP" "$curl_out" |\ @@ -798,111 +786,13 @@ static_check_docs() # Convert the list of files into an grep(1) alternation pattern. exclude_pattern=$(echo "${exclude_doc_regexs[@]}"|sed 's, ,|,g') - # Every document in the repo (except a small handful of exceptions) - # should be referenced by another document. - for doc in $md_docs_to_check - do - # Check the ignore list for markdown files that do not need to - # be referenced by others. - echo "$doc"|grep -q -E "(${exclude_pattern})" && continue - - grep -q "$doc" "$md_links" || die "Document $doc is not referenced" - done - info "Checking document code blocks" local doc_to_script_cmd="${cidir}/kata-doc-to-script.sh" - for doc in $docs - do - bash "${doc_to_script_cmd}" -csv "$doc" - - # Look for URLs in the document - urls=$("${doc_to_script_cmd}" -i "$doc" - | "$cmd") - - # Gather URLs - for url in $urls - do - printf "%s\t%s\n" "${url}" "${doc}" >> "$url_map" - done - done - - # Get unique list of URLs - urls=$(awk '{print $1}' "$url_map" | sort -u) - - info "Checking all document URLs" - local invalid_urls_dir=$(mktemp -d) - files_to_remove+=("${invalid_urls_dir}") - - for url in $urls - do - if [ "$specific_branch" != "true" ] - then - # If the URL is new on this PR, it cannot be checked. - echo "$new_urls" | grep -q -E "\<${url}\>" && \ - info "ignoring new (but correct) URL: $url" && continue - fi - - # Ignore local URLs. The only time these are used is in - # examples (meaning these URLs won't exist). - echo "$url" | grep -q "^file://" && continue - echo "$url" | grep -q "^http://localhost" && continue - - # Ignore the install guide URLs that contain a shell variable - echo "$url" | grep -q "\\$" && continue - - # This prefix requires the client to be logged in to github, so ignore - echo "$url" | grep -q 'https://github.com/pulls' && continue - - # Sigh. - echo "$url"|grep -q 'https://example.com' && continue - - # Google APIs typically require an auth token. - echo "$url"|grep -q 'https://www.googleapis.com' && continue - - # Git repo URL check - if echo "$url"|grep -q '^https.*git' - then - timeout "${KATA_NET_TIMEOUT}" git ls-remote "$url" > /dev/null 2>&1 && continue - fi - - # Check the URL, saving it if invalid - # - # Each URL is checked in a separate process as each unique URL - # requires us to hit the network. - check_url "$url" "$invalid_urls_dir" & - done - # Synchronisation point wait - # Combine all the separate invalid URL files into one - local invalid_files=$(ls "$invalid_urls_dir") - - if [ -n "$invalid_files" ]; then - pushd "$invalid_urls_dir" &>/dev/null - cat $(echo "$invalid_files"|tr '\n' ' ') > "$invalid_urls" - popd &>/dev/null - fi - - if [ -s "$invalid_urls" ] - then - local files - - cat "$invalid_urls" | while read url - do - files=$(grep "^${url}" "$url_map" | awk '{print $2}' | sort -u) - echo >&2 -e "ERROR: Invalid URL '$url' found in the following files:\n" - - for file in $files - do - echo >&2 "$file" - done - done - - exit 1 - fi - # Now, spell check the docs cmd="${test_dir}/cmd/check-spelling/kata-spell-check.sh" @@ -1516,6 +1406,8 @@ main() local func= + repo_path="" + while [ $# -gt 1 ] do case "$1" in @@ -1536,6 +1428,7 @@ main() --only-arch) handle_funcs="arch-specific" ;; --rego) func=static_check_rego ;; --repo) repo="$2"; shift ;; + --repo-path) repo_path="$2"; shift ;; --scripts) func=static_check_shell ;; --vendor) func=static_check_vendor;; --versions) func=static_check_versions ;; @@ -1568,7 +1461,10 @@ main() test_path="${test_path:-"${repo}/tests"}" test_dir="${GOPATH}/src/${test_path}" - repo_path=$GOPATH/src/$repo + if [ -z "$repo_path" ] + then + repo_path=$GOPATH/src/$repo + fi announce