[CI] Use htmltest for link checking (#310)

This commit is contained in:
Patrice Chalin 2025-03-19 13:45:05 -04:00 committed by GitHub
parent 8f678d0539
commit c6cb637b9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 707 additions and 3 deletions

2
.gitignore vendored
View File

@ -6,3 +6,5 @@
# npm assets
node_modules/
package-lock.json
/tmp

12
.htmltest.yml Normal file
View File

@ -0,0 +1,12 @@
# cSpell:ignore github
CacheExpires: 9000h # ~ 12 months
DirectoryPath: build
TestFilesConcurrently: true
IgnoreDirs:
IgnoreInternalURLs: # list of paths
IgnoreURLs: # list of regexes of URLs or path to be ignored
- \?no-link-check
# FIXME: temporary ignore rules
- assistance\.md
- LICENSE
- /analyses/

56
Makefile Normal file
View File

@ -0,0 +1,56 @@
# cSpell:ignore htmltest refcache
# Set REFCACHE to another value to disable htmltest refcache-file manipulation
REFCACHE?=refcache
HTMLTEST_DIR=tmp
HTMLTEST?=htmltest # Specify as make arg if different
HTMLTEST_ARGS?=--log-level 1
LINK_CACHE_FILE?=refcache.json
LINK_CACHE_FILE_DEST_DIR?=static
LINK_CACHE_FILE_SRC_DIR?=$(HTMLTEST_DIR)/.htmltest
# Use $(HTMLTEST) in PATH, if available; otherwise, we'll get a copy
ifeq (, $(shell which $(HTMLTEST)))
override HTMLTEST=$(HTMLTEST_DIR)/bin/htmltest
ifeq (, $(shell which $(HTMLTEST)))
GET_LINK_CHECKER_IF_NEEDED=get-link-checker
endif
endif
default:
@echo "Make what? Target list:\n"
@make -rpn | grep '^[a-z]\S*:' | sed 's/://' | sort
$(LINK_CACHE_FILE_SRC_DIR):
mkdir -p $(LINK_CACHE_FILE_SRC_DIR)
$(LINK_CACHE_FILE_DEST_DIR)/$(LINK_CACHE_FILE):
mkdir -p $(LINK_CACHE_FILE_DEST_DIR)
echo '{}' > $(LINK_CACHE_FILE_DEST_DIR)/$(LINK_CACHE_FILE)
refcache-restore: $(LINK_CACHE_FILE_DEST_DIR)/$(LINK_CACHE_FILE) $(LINK_CACHE_FILE_SRC_DIR)
ifeq (refcache, $(REFCACHE))
cp $(LINK_CACHE_FILE_DEST_DIR)/$(LINK_CACHE_FILE) $(LINK_CACHE_FILE_SRC_DIR)/
else
@echo "SKIPPING refcache-restore"
endif
refcache-save:
ifeq (refcache, $(REFCACHE))
cp $(LINK_CACHE_FILE_SRC_DIR)/$(LINK_CACHE_FILE) $(LINK_CACHE_FILE_DEST_DIR)/
npx prettier --prose-wrap=always --write $(LINK_CACHE_FILE_DEST_DIR)/$(LINK_CACHE_FILE)
else
@echo "SKIPPING refcache-save"
endif
check-links: $(GET_LINK_CHECKER_IF_NEEDED) \
refcache-restore check-links-only refcache-save
check-links-only:
$(HTMLTEST) $(HTMLTEST_ARGS)
clean:
rm -rf $(HTMLTEST_DIR) public/* resources
get-link-checker:
rm -Rf $(HTMLTEST_DIR)/bin
curl https://htmltest.wjdp.uk | bash -s -- -b $(HTMLTEST_DIR)/bin

View File

@ -217,5 +217,5 @@ Create issues in the project documentation GitHub repository for:
[analyses]: ../../analyses/
[criteria]: ./criteria.md
[project maturity level]: https://www.cncf.io/project-metrics
[templates]: ./templates/
[templates]: ./templates/README.md
[issues list]: ./templates/issues-list.md

View File

@ -24,6 +24,8 @@ const config: Config = {
onBrokenLinks: 'warn', // TODO: 'error' or 'throw' once we've fixed all links
onBrokenMarkdownLinks: 'warn',
trailingSlash: true,
i18n: {
defaultLocale: 'en',
locales: ['en'],

View File

@ -6,7 +6,8 @@
"_check:format:any": "npx prettier --check --ignore-path ''",
"_check:format:delta": "npm run _check:format:any -- $(npm run -s _list:git:delta)",
"_check:format": "npx prettier --check .",
"_check:links": "npx markdown-link-check --config .markdown-link-check.json",
"_check:links": "make --keep-going check-links",
"_check:links-md": "bash -c 'for f in *.md `find analyses -name \"*.md\"`; do npx markdown-link-check@3.12.2 --config .markdown-link-check.json -p -v $f || exit 1; done'",
"_check:markdown:all": "npm run -s _list:check:md | xargs -I {} -P 4 npx -p markdownlint-cli markdownlint -c .markdownlint.yaml {}",
"_check:markdown:delta": "npm run -s _list:git:delta | xargs -I {} npx -p markdownlint-cli markdownlint -c .markdownlint.yaml {}",
"_check:markdown:1": "npx -p markdownlint-cli markdownlint -c .markdownlint.yaml",
@ -16,12 +17,13 @@
"_list:check:*": "npm run --loglevel=warn | grep -Ee '^\\s*check:[^:]+$'",
"_list:fix:*": "npm run --loglevel=warn | grep -Ee '^\\s*fix:[^:]+$' | grep -v 'fix:all'",
"check:format": "npm run _check:format || (echo '[help] Run: npm run fix:format'; exit 1)",
"check:links": "bash -c 'for f in *.md `find docs analyses -name \"*.md\"`; do npx markdown-link-check@3.12.2 --config .markdown-link-check.json -p -v $f || exit 1; done'",
"check:links": "npm run _check:links",
"check:markdown": "npm run _check:markdown:all",
"check:spelling": "npx cspell --no-progress -c .cspell.yml analyses docs *.md",
"check": "npm run seq -- $(npm run -s _list:check:*)",
"fix:format": "npm run _check:format -- --write",
"fix": "npm run seq -- $(npm -s run _list:fix:*)",
"precheck:links": "npm run build",
"seq": "bash -c 'for cmd in \"$@\"; do npm run $cmd || exit 1; done' - ",
"test": "npm run check",
"update:pkgs": "npx npm-check-updates -u",

630
static/refcache.json Normal file
View File

@ -0,0 +1,630 @@
{
"https://analytics.google.com": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:43.150103-04:00"
},
"https://blog.rook.io/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:43.211822-04:00"
},
"https://cloud-native.slack.com": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:42.798322-04:00"
},
"https://cloud-native.slack.com/archives/C057F81GFUG": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:43.065916-04:00"
},
"https://cncf-techdocs.netlify.app/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.431682-04:00"
},
"https://cncf-techdocs.netlify.app/404.html/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.427726-04:00"
},
"https://cncf-techdocs.netlify.app/docs/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.330152-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.41211-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/criteria/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.22135-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/howto/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.303713-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/templates/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.412104-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/templates/analysis/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.332743-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/templates/implementation/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.415932-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/templates/issue/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.335492-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analysis/templates/issues-list/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.396202-04:00"
},
"https://cncf-techdocs.netlify.app/docs/analytics/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.338019-04:00"
},
"https://cncf-techdocs.netlify.app/docs/assistance/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.314312-04:00"
},
"https://cncf-techdocs.netlify.app/docs/hugo-and-docsy/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.327468-04:00"
},
"https://cncf-techdocs.netlify.app/docs/localization/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.379686-04:00"
},
"https://cncf-techdocs.netlify.app/docs/localization/ja/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.38741-04:00"
},
"https://cncf-techdocs.netlify.app/docs/netlify-domains-setup/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.311731-04:00"
},
"https://cncf-techdocs.netlify.app/docs/repo-setup/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.326156-04:00"
},
"https://cncf-techdocs.netlify.app/docs/sandbox-doc-primer/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.499941-04:00"
},
"https://cncf-techdocs.netlify.app/docs/searching-documentation/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.231922-04:00"
},
"https://cncf-techdocs.netlify.app/docs/services/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.337983-04:00"
},
"https://cncf-techdocs.netlify.app/docs/tags/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.400262-04:00"
},
"https://cncf-techdocs.netlify.app/docs/tags/project/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.507721-04:00"
},
"https://cncf-techdocs.netlify.app/docs/versioning-documentation/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.391897-04:00"
},
"https://cncf-techdocs.netlify.app/docs/website-guidelines-checklist/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.404818-04:00"
},
"https://creativecommons.org/licenses/by/4.0/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.210818-04:00"
},
"https://developer.mozilla.org/en-US/docs/Web/Accessibility": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.847102-04:00"
},
"https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Responsive/Mobile_first": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.5755-04:00"
},
"https://developers.google.com": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:40.68391-04:00"
},
"https://developers.google.com/analytics/devguides/collection/gtagjs/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:45.186799-04:00"
},
"https://developers.google.com/analytics/devguides/migration": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:40.365597-04:00"
},
"https://developers.google.com/analytics/devguides/migration/measurement/add-ga4": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:41.008153-04:00"
},
"https://developers.google.com/custom-search/docs/overview": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:38.568984-04:00"
},
"https://developers.google.com/tech-writing": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:41.235297-04:00"
},
"https://discourse.gohugo.io/t/audit-your-published-site-for-problems/35184": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:38.673658-04:00"
},
"https://docs.github.com/en/get-started": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.550448-04:00"
},
"https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.974872-04:00"
},
"https://docs.google.com/document/d/1roexHTLCrErYjNT2NEoRsVnn_YNbQzZ1gyXNK8hXR4Q/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:40.556759-04:00"
},
"https://docs.google.com/spreadsheets/d/1Mx4LhdI2Un-rvGMI73SlHxQH9D2HABAJclMB3dd6lnA": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:43.824829-04:00"
},
"https://docs.netlify.com/domains-https/custom-domains/multiple-domains/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.56912-04:00"
},
"https://docs.netlify.com/domains-https/netlify-dns/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.528687-04:00"
},
"https://docsearch.algolia.com/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.903227-04:00"
},
"https://docsfordevelopers.com/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:41.327555-04:00"
},
"https://docusaurus.io/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:44.454182-04:00"
},
"https://expertsupport.com/library/quick-and-easy-document-specifications/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.609931-04:00"
},
"https://falco.org/docs/getting-started/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.973046-04:00"
},
"https://git-scm.com/book/en/v2/Git-Tools-Submodules": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.523542-04:00"
},
"https://github.com/Okabe-Junya": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.433444-04:00"
},
"https://github.com/apps/dco": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.188531-04:00"
},
"https://github.com/brianpursley": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.819634-04:00"
},
"https://github.com/caniszczyk": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.673482-04:00"
},
"https://github.com/carlisia": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.066678-04:00"
},
"https://github.com/celestehorgan": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:43.110802-04:00"
},
"https://github.com/chalin": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.933773-04:00"
},
"https://github.com/cncf/foundation/blob/main/website-guidelines.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.855574-04:00"
},
"https://github.com/cncf/foundation/blob/master/charter.md#11-ip-policy": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.789697-04:00"
},
"https://github.com/cncf/foundation/blob/master/code-of-conduct.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.580775-04:00"
},
"https://github.com/cncf/foundation/blob/master/copyright-notices.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.954463-04:00"
},
"https://github.com/cncf/glossary": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.470017-04:00"
},
"https://github.com/cncf/project-template": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.95612-04:00"
},
"https://github.com/cncf/tag-app-delivery": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.942477-04:00"
},
"https://github.com/cncf/tag-env-sustainability": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.676592-04:00"
},
"https://github.com/cncf/tag-runtime": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.337715-04:00"
},
"https://github.com/cncf/techdocs": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.275112-04:00"
},
"https://github.com/cncf/techdocs/blob/main/README.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.693644-04:00"
},
"https://github.com/cncf/techdocs/issues": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.599716-04:00"
},
"https://github.com/cncf/techdocs/issues/108": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.252231-04:00"
},
"https://github.com/cncf/techdocs/tree/main/analyses": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.795255-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.864864-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/README.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.922953-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/README.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.974284-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/criteria.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:43.815453-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/howto.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.024236-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/templates/README.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.741629-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/templates/analysis.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.39977-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/templates/implementation.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.456702-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/templates/issue.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.436841-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analysis/templates/issues-list.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.988671-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/analytics.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:45.656684-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/assistance.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.893706-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/hugo-and-docsy.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.50712-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/localization/README.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.987962-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/localization/ja/README.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:44.349096-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/netlify-domains-setup.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:43.133184-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/repo-setup.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.933772-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/sandbox-doc-primer.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.2199-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/searching-documentation.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.23122-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/services.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.891135-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/versioning-documentation.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:44.813994-04:00"
},
"https://github.com/cncf/techdocs/tree/main/docs/website-guidelines-checklist.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.016034-04:00"
},
"https://github.com/cncf/toc/tree/main/process#ii-stages---definitions--expectations": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.885666-04:00"
},
"https://github.com/envoyproxy/envoy/blob/main/GOVERNANCE.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.779403-04:00"
},
"https://github.com/etcd-io/website/pull/403": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.702767-04:00"
},
"https://github.com/helm/community": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.421105-04:00"
},
"https://github.com/hhiroshell": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.164426-04:00"
},
"https://github.com/jonasrosland": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.826771-04:00"
},
"https://github.com/kaitoii11": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.0703-04:00"
},
"https://github.com/kenta-iijima": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.574544-04:00"
},
"https://github.com/kubernetes/website/blob/072d4b41b45f5311538c24d375432a755f9e3f4c/layouts/partials/navbar-version-selector.html": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:43.580609-04:00"
},
"https://github.com/kubernetes/website/blob/7462297ee388332a7b0d27625929fbf44d0c1ea9/config.toml": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:44.346332-04:00"
},
"https://github.com/kubernetes/website/blob/main/hugo.toml": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.655723-04:00"
},
"https://github.com/kubernetes/website/blob/main/layouts/partials/navbar-version-selector.html": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.193851-04:00"
},
"https://github.com/longhorn/website": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.512339-04:00"
},
"https://github.com/naonishijima": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.75709-04:00"
},
"https://github.com/nate-double-u": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.185856-04:00"
},
"https://github.com/nate-double-u/technical-documentation-versioning": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.615197-04:00"
},
"https://github.com/nats-io/nats-site/blob/master/MAINTAINERS.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.966203-04:00"
},
"https://github.com/nrb": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.535931-04:00"
},
"https://github.com/opentracing/opentracing.io/issues": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.018763-04:00"
},
"https://github.com/sftim": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:43.805308-04:00"
},
"https://github.com/tbatard": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.80753-04:00"
},
"https://github.com/thisisobate": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.199875-04:00"
},
"https://github.com/vitessio/website/pull/1119": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.751462-04:00"
},
"https://github.com/vmware-tanzu/velero/blob/1fd49f4fd66ecf6cd959ce258efbd9a549d8902b/site/config.yaml": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.43175-04:00"
},
"https://github.com/vmware-tanzu/velero/blob/db403c6c54b0048fada2b5db628c44be4ac0fd79/site/layouts/docs/versions.html": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.206262-04:00"
},
"https://goharbor.io/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.657248-04:00"
},
"https://helm.sh/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.065332-04:00"
},
"https://inclusivenaming.org": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.397055-04:00"
},
"https://kubernetes.io": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:43.368612-04:00"
},
"https://kubernetes.io/docs/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.362238-04:00"
},
"https://kubernetes.io/ja/docs/contribute/localization/#style-guide": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.933919-04:00"
},
"https://lunrjs.com/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.138198-04:00"
},
"https://prometheus.io/community/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.51314-04:00"
},
"https://prometheus.io/docs": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.57018-04:00"
},
"https://servicedesk.cncf.io": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:40.355292-04:00"
},
"https://servicedesk.cncf.io/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.39085-04:00"
},
"https://slack.cncf.io": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:43.836734-04:00"
},
"https://support.google.com/analytics/answer/10089681": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.160574-04:00"
},
"https://support.google.com/analytics/answer/10220869": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:43.011475-04:00"
},
"https://support.google.com/analytics/answer/10268458": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:42.671721-04:00"
},
"https://support.google.com/analytics/answer/10759417": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:41.212361-04:00"
},
"https://support.google.com/analytics/answer/11583528": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:38.647647-04:00"
},
"https://support.google.com/analytics/answer/9973999": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:44.228594-04:00"
},
"https://support.linuxfoundation.org/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:42.307171-04:00"
},
"https://technical-documentation-versioning.netlify.app/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.032013-04:00"
},
"https://thanos.io/tip/contributing/how-to-contribute-to-docs.md": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:40.391896-04:00"
},
"https://tockify.com/cncf.public.events/monthly": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.549384-04:00"
},
"https://training.linuxfoundation.org/training/creating-effective-documentation-for-developers-lfc112/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.488425-04:00"
},
"https://training.linuxfoundation.org/training/open-source-technical-documentation-essentials-lfc111/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.399607-04:00"
},
"https://velero.io/": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.584554-04:00"
},
"https://www.apache.org/licenses/LICENSE-2.0": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.424491-04:00"
},
"https://www.cncf.io/project-metrics": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:38.392657-04:00"
},
"https://www.cncf.io/wp-content/themes/cncf-twenty-two/images/favicon.ico": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.164465-04:00"
},
"https://www.docsy.dev": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.471331-04:00"
},
"https://www.docsy.dev/docs/adding-content/feedback/#adding-analytics": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.700718-04:00"
},
"https://www.fluentd.org/testimonials": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:42.498739-04:00"
},
"https://www.git-scm.com/book/en/v2/Git-Tools-Submodules": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:41.942795-04:00"
},
"https://www.linuxfoundation.org/legal/privacy-policy": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:38.777636-04:00"
},
"https://www.linuxfoundation.org/legal/trademark-usage": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.262344-04:00"
},
"https://www.linuxfoundation.org/trademark-usage/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:40.189267-04:00"
},
"https://www.lios.ca/en/blogue/concept-task-reference/": {
"StatusCode": 200,
"LastSeen": "2025-03-19T11:52:39.320251-04:00"
},
"https://www.rfc-editor.org/rfc/rfc2119": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:38.675317-04:00"
},
"https://zoom-lfx.platform.linuxfoundation.org/meeting/95471930872": {
"StatusCode": 206,
"LastSeen": "2025-03-19T11:52:39.706039-04:00"
}
}