diff --git a/.github/workflows/check_links.yml b/.github/workflows/check_links.yml index fca0d7f..a815a7c 100644 --- a/.github/workflows/check_links.yml +++ b/.github/workflows/check_links.yml @@ -1,18 +1,35 @@ name: Check Links on: + repository_dispatch: + workflow_dispatch: schedule: - cron: "0 5 * * *" - workflow_dispatch: # allows manual triggering of the workflow jobs: - build: + check: runs-on: ubuntu-latest + permissions: + issues: write # required for peter-evans/create-issue-from-file steps: - - uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.12" - - name: Install dependencies - run: python -m pip install -r requirements.txt - - name: Check broken links - run: sphinx-build -nW -b linkcheck . _build + - uses: actions/checkout@v4 + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.12" + - name: Install dependencies + run: python -m pip install -r requirements.txt + - name: Build documentation + run: sphinx-build -nWaE . _build + - name: Link Checker + id: lychee + uses: lycheeverse/lychee-action@v2 + with: + args: _build + fail: false + - name: Create Issue From File + if: steps.lychee.outputs.exit_code != 0 + uses: peter-evans/create-issue-from-file@v5 + with: + title: Link Checker Report + content-filepath: ./lychee/out.md + labels: broken links diff --git a/.github/workflows/build.yml b/.github/workflows/test.yml similarity index 78% rename from .github/workflows/build.yml rename to .github/workflows/test.yml index ac5374a..3be2540 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/test.yml @@ -1,9 +1,9 @@ -name: Build +name: Test on: push: pull_request: jobs: - build: + test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -15,3 +15,5 @@ jobs: run: python -m pip install -r requirements.txt - name: Test run: pytest + - name: Build documentation + run: sphinx-build -nWaE . _build diff --git a/.gitignore b/.gitignore index 4e5b13a..cdf094b 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,6 @@ venv.bak/ # scripts/lint_requirements.sh *-requirements.txt + +# Lychee +.lycheecache diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 53f84da..6356f8a 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -74,12 +74,23 @@ Continuous Integration Na repozitáři jsou zapojeny `GitHub Actions `_. Kontrolka: -.. image:: https://github.com/pyvec/docs.pyvec.org/actions/workflows/build.yml/badge.svg +.. image:: https://github.com/pyvec/docs.pyvec.org/actions/workflows/test.yml/badge.svg :target: https://github.com/pyvec/docs.pyvec.org/actions - :alt: Continuous Integration Status + :alt: Continuous Integration Status (test) CI je pouze informativní a nezabrání tomu, aby se hlavní větev dostala do ReadTheDocs. +Kontrola rozbitých odkazů +------------------------- + +Na repozitáři je zapojená `GitHub Action `_, která jednou denně kontroluje, zda všechny odkazy fungují. Kontrolka: + +.. image:: https://github.com/pyvec/docs.pyvec.org/actions/workflows/check_links.yml/badge.svg + :target: https://github.com/pyvec/docs.pyvec.org/actions + :alt: Continuous Integration Status (check links) + +Dokonce by to mělo automaticky zakládat i issue, pokud to najde nějaký problém. V případě, že je potřeba ignorovat nějakou doménu nebo konkrétní odkaz, je možné to udělat v souboru `lychee.toml`. + .. _generate_grants: Skript na generování zápisů hlasování o grantech diff --git a/guides/meetup.rst b/guides/meetup.rst index a4bac63..2f6ed39 100644 --- a/guides/meetup.rst +++ b/guides/meetup.rst @@ -361,7 +361,7 @@ Materiály z přednášek Jako archiv informací o jednotlivých srazech jsme využívali `Lanyrd `__, ale nakonec jsme si na `pyvo.cz `__ udělali vlastní systém s databází `pyvo-data `__. -Pokud máš nějaké slajdy nebo jiné materiály, je dobré je na stránky vašeho srazu doplnit k popisu přednášek. Může to být skoro cokoliv od odkazu na YouTube s videem z přednášky, po odkazy na slajdy ze služeb jako `Speaker Deck `__ či `SlideShare `__. Pokud ti přednášející předá slajdy ve formě souboru, převeď je pokud možno na PDF a nahraj do repozitáře `talks-archive `__. Následně na ně odkazuj ve formátu ``https://pyvec.github.io/talks-archive/`` +Pokud máš nějaké slajdy nebo jiné materiály, je dobré je na stránky vašeho srazu doplnit k popisu přednášek. Může to být skoro cokoliv od odkazu na YouTube s videem z přednášky, po odkazy na slajdy ze služeb jako `Speaker Deck `__ či `SlideShare `__. Pokud ti přednášející předá slajdy ve formě souboru, převeď je pokud možno na PDF a nahraj do repozitáře `talks-archive `__. .. _srazy-fotky: diff --git a/lychee.toml b/lychee.toml new file mode 100644 index 0000000..a0b0166 --- /dev/null +++ b/lychee.toml @@ -0,0 +1,36 @@ +# Interface +verbose = "info" +no_progress = true +cache = true +max_cache_age = "10m" + +# Stealth +user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:138.0) Gecko/20100101 Firefox/138.0" + +# Prevent 'Too Many Open Files' +max_concurrency = 32 + +# Check links inside `` and `
` blocks and Markdown code blocks
+include_verbatim = true
+
+# Check fragments in links
+include_fragments = true
+
+# Add 'Too many requests'
+accept = ["100..=103", "200..=299", "429"]
+
+# Be benevolent
+max_retries = 5
+timeout = 40
+
+# Exclude
+exclude = [
+    "127.0.0.1:8000",
+    "cz.pycon.org/20XX",
+
+    # Anti-scraping protections
+    "docs.google.com",
+    "www.facebook.com",
+    "www.nytimes.com",
+    "accounts.google.com",
+]