1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
- # Ultralytics ๐ AGPL-3.0 License - https://ultralytics.com/license
- # Continuous Integration (CI) GitHub Actions tests broken link checker using https://github.com/lycheeverse/lychee
- # Ignores the following status codes to reduce false positives:
- # - 401(Vimeo, 'unauthorized')
- # - 403(OpenVINO, 'forbidden')
- # - 429(Instagram, 'too many requests')
- # - 500(Zenodo, 'cached')
- # - 502(Zenodo, 'bad gateway')
- # - 999(LinkedIn, 'unknown status code')
- name: Check Broken links
- on:
- workflow_dispatch:
- schedule:
- - cron: "0 0 * * *" # runs at 00:00 UTC every day
- jobs:
- Links:
- if: github.repository == 'ultralytics/ultralytics'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - name: Download and install lychee
- run: |
- LYCHEE_URL=$(curl -s https://api.github.com/repos/lycheeverse/lychee/releases/latest | grep "browser_download_url" | grep "x86_64-unknown-linux-gnu.tar.gz" | cut -d '"' -f 4)
- curl -L $LYCHEE_URL | tar xz -C /usr/local/bin
- - name: Test Markdown and HTML links with retry
- uses: ultralytics/actions/retry@main
- with:
- timeout_minutes: 60
- retry_delay_seconds: 900
- retries: 2
- run: |
- lychee \
- --scheme https \
- --timeout 60 \
- --insecure \
- --accept 401,403,429,500,502,999 \
- --exclude-all-private \
- --exclude 'https?://(www\.)?(linkedin\.com|twitter\.com|instagram\.com|kaggle\.com|fonts\.gstatic\.com|url\.com)' \
- --exclude-path docs/zh \
- --exclude-path docs/es \
- --exclude-path docs/ru \
- --exclude-path docs/pt \
- --exclude-path docs/fr \
- --exclude-path docs/de \
- --exclude-path docs/ja \
- --exclude-path docs/ko \
- --exclude-path docs/hi \
- --exclude-path docs/ar \
- --github-token ${{ secrets.GITHUB_TOKEN }} \
- --header "User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.183 Safari/537.36" \
- './**/*.md' \
- './**/*.html' | tee -a $GITHUB_STEP_SUMMARY
- - name: Test Markdown, HTML, YAML, Python and Notebook links with retry
- if: github.event_name == 'workflow_dispatch'
- uses: ultralytics/actions/retry@main
- with:
- timeout_minutes: 60
- retry_delay_seconds: 900
- retries: 2
- run: |
- lychee \
- --scheme https \
- --timeout 60 \
- --insecure \
- --accept 401,403,429,500,502,999 \
- --exclude-all-private \
- --exclude 'https?://(www\.)?(linkedin\.com|twitter\.com|instagram\.com|kaggle\.com|fonts\.gstatic\.com|url\.com)' \
- --exclude-path '**/ci.yml' \
- --exclude-path docs/zh \
- --exclude-path docs/es \
- --exclude-path docs/ru \
- --exclude-path docs/pt \
- --exclude-path docs/fr \
- --exclude-path docs/de \
- --exclude-path docs/ja \
- --exclude-path docs/ko \
- --exclude-path docs/hi \
- --exclude-path docs/ar \
- --github-token ${{ secrets.GITHUB_TOKEN }} \
- --header "User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.183 Safari/537.36" \
- './**/*.md' \
- './**/*.html' \
- './**/*.yml' \
- './**/*.yaml' \
- './**/*.py' \
- './**/*.ipynb' | tee -a $GITHUB_STEP_SUMMARY
|