diff --git a/.github/workflows/01.1.agentic_cron.yml b/.github/workflows/01.1.agentic_cron.yml index 98e659c8..f737fd4c 100644 --- a/.github/workflows/01.1.agentic_cron.yml +++ b/.github/workflows/01.1.agentic_cron.yml @@ -85,7 +85,7 @@ jobs: # This job can now be triggered from any branch but will always checkout 'develop' steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop @@ -101,7 +101,7 @@ jobs: pip install --no-cache-dir pydantic PyGithub aiohttp beautifulsoup4 httpx fake-useragent pytz python-dotenv twikit>=2.1.2 playwright playwright-stealth pyyaml tenacity feedparser - name: Cache Playwright Binaries - uses: actions/cache@v5 + uses: actions/cache@v6 id: playwright-cache with: path: ~/.cache/ms-playwright @@ -112,7 +112,7 @@ jobs: run: playwright install chromium --with-deps - name: Restore Incremental Inventory Cache - uses: actions/cache/restore@v5 + uses: actions/cache/restore@v6 with: path: data/inventory.yaml key: inventory-curation-${{ github.run_id }}-${{ github.run_attempt }} @@ -223,7 +223,7 @@ jobs: - name: Persist Incremental Inventory to Cache if: always() - uses: actions/cache/save@v5 + uses: actions/cache/save@v6 with: path: data/inventory.yaml key: inventory-curation-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/01.2.agentic_backup.yml b/.github/workflows/01.2.agentic_backup.yml index 20443439..1ff186e9 100644 --- a/.github/workflows/01.2.agentic_backup.yml +++ b/.github/workflows/01.2.agentic_backup.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Python 3.11 Environment Provisioning uses: actions/setup-python@v6 diff --git a/.github/workflows/02.1.intelligent_link_cleaner.yml b/.github/workflows/02.1.intelligent_link_cleaner.yml index cf447bca..2a850841 100644 --- a/.github/workflows/02.1.intelligent_link_cleaner.yml +++ b/.github/workflows/02.1.intelligent_link_cleaner.yml @@ -1,120 +1,120 @@ -name: 02.1. Intelligent Link Cleaner & Dedup - -on: - schedule: - - cron: '0 0 1 */3 *' # Quarterly: 1st of Jan, Apr, Jul, Oct - workflow_dispatch: - inputs: - force_full_check: - description: 'Force full re-validation (bypasses 21-day cache)' - type: boolean - default: false - -permissions: - contents: write - pull-requests: write - issues: write - -concurrency: - group: link-cleaner-${{ github.ref }} - cancel-in-progress: true - -jobs: - intelligent-clean-sequential: - runs-on: ubuntu-latest - env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - steps: - - name: Repository Synchronization - uses: actions/checkout@v6 - with: - ref: develop - - - name: Python 3.11 Environment Provisioning - uses: actions/setup-python@v6 - with: - python-version: '3.11' - cache: 'pip' - - - name: Dependencies Installation - run: | - python -m pip install --upgrade pip - pip install --no-cache-dir pydantic PyGithub aiohttp beautifulsoup4 httpx fake-useragent pytz python-dotenv playwright PyYAML tenacity - - - name: Cache Playwright Binaries - uses: actions/cache@v5 - id: playwright-cache - with: - path: ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-cleaner - - - name: Install Playwright Browsers - if: steps.playwright-cache.outputs.cache-hit != 'true' - run: playwright install chromium --with-deps - - - name: Restore Link Checker Cache - uses: actions/cache/restore@v4 - id: link-checker-cache - with: - path: | - shard_result.json - triage_report.md - health_check_checkpoint.json - key: link-cleaner-results-${{ github.run_id }}-${{ github.run_attempt }} - restore-keys: | - link-cleaner-results-${{ github.run_id }}- - link-cleaner-results- - - - name: Global Intelligent Cleaning Execution (Sequential Fast-Track) - env: - GEMINI_API_KEY_1: ${{ secrets.GEMINI_API_KEY_1 }} - GEMINI_API_KEY_2: ${{ secrets.GEMINI_API_KEY_2 }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - FORCE_FULL_CHECK: ${{ github.event.inputs.force_full_check || 'false' }} - PYTHONPATH: ${{ github.workspace }} - PYTHONUNBUFFERED: 1 - run: | - if [ -s shard_result.json ]; then - echo "shard_result.json found in cache/restored files and has content. Skipping health checker execution." - else - python src/intelligent_health_checker.py - fi - - - name: Run Inventory Reducer & Apply Changes - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PYTHONPATH: ${{ github.workspace }} - run: | - # Since it's sequential, the script produces shard_result.json (default name for no shard) - python src/inventory_reducer.py - - - name: Open Triage Issue for High-Value Links - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - if [ -f triage_report.md ] && [ -s triage_report.md ]; then - ISSUE_TITLE="🚨 Manual Triage Required: High-Value Links Failing ($(date +'%Y-%m-%d'))" - EXISTING_ISSUE=$(gh issue list --search "$ISSUE_TITLE" --state open --json number --jq '.[0] | select(. != null) | .number') - - if [ -z "$EXISTING_ISSUE" ] || [ "$EXISTING_ISSUE" = "null" ]; then - gh issue create --title "$ISSUE_TITLE" --body-file triage_report.md --label "triage, automated-report" || gh issue create --title "$ISSUE_TITLE" --body-file triage_report.md - else - echo "A triage issue already exists (#$EXISTING_ISSUE). Updating with new report..." - gh issue comment $EXISTING_ISSUE --body-file triage_report.md - fi - fi - - - name: Ensure Cache Files Exist - if: always() - run: | - touch shard_result.json triage_report.md health_check_checkpoint.json - - - name: Save Link Checker Cache - if: always() - uses: actions/cache/save@v4 - with: - path: | - shard_result.json - triage_report.md - health_check_checkpoint.json - key: link-cleaner-results-${{ github.run_id }}-${{ github.run_attempt }} +name: 02.1. Intelligent Link Cleaner & Dedup + +on: + schedule: + - cron: '0 0 1 */3 *' # Quarterly: 1st of Jan, Apr, Jul, Oct + workflow_dispatch: + inputs: + force_full_check: + description: 'Force full re-validation (bypasses 21-day cache)' + type: boolean + default: false + +permissions: + contents: write + pull-requests: write + issues: write + +concurrency: + group: link-cleaner-${{ github.ref }} + cancel-in-progress: true + +jobs: + intelligent-clean-sequential: + runs-on: ubuntu-latest + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + steps: + - name: Repository Synchronization + uses: actions/checkout@v6 + with: + ref: develop + + - name: Python 3.11 Environment Provisioning + uses: actions/setup-python@v6 + with: + python-version: '3.11' + cache: 'pip' + + - name: Dependencies Installation + run: | + python -m pip install --upgrade pip + pip install --no-cache-dir pydantic PyGithub aiohttp beautifulsoup4 httpx fake-useragent pytz python-dotenv playwright PyYAML tenacity + + - name: Cache Playwright Binaries + uses: actions/cache@v5 + id: playwright-cache + with: + path: ~/.cache/ms-playwright + key: ${{ runner.os }}-playwright-cleaner + + - name: Install Playwright Browsers + if: steps.playwright-cache.outputs.cache-hit != 'true' + run: playwright install chromium --with-deps + + - name: Restore Link Checker Cache + uses: actions/cache/restore@v4 + id: link-checker-cache + with: + path: | + shard_result.json + triage_report.md + health_check_checkpoint.json + key: link-cleaner-results-${{ github.run_id }}-${{ github.run_attempt }} + restore-keys: | + link-cleaner-results-${{ github.run_id }}- + link-cleaner-results- + + - name: Global Intelligent Cleaning Execution (Sequential Fast-Track) + env: + GEMINI_API_KEY_1: ${{ secrets.GEMINI_API_KEY_1 }} + GEMINI_API_KEY_2: ${{ secrets.GEMINI_API_KEY_2 }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + FORCE_FULL_CHECK: ${{ github.event.inputs.force_full_check || 'false' }} + PYTHONPATH: ${{ github.workspace }} + PYTHONUNBUFFERED: 1 + run: | + if [ -s shard_result.json ]; then + echo "shard_result.json found in cache/restored files and has content. Skipping health checker execution." + else + python src/intelligent_health_checker.py + fi + + - name: Run Inventory Reducer & Apply Changes + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PYTHONPATH: ${{ github.workspace }} + run: | + # Since it's sequential, the script produces shard_result.json (default name for no shard) + python src/inventory_reducer.py + + - name: Open Triage Issue for High-Value Links + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if [ -f triage_report.md ] && [ -s triage_report.md ]; then + ISSUE_TITLE="🚨 Manual Triage Required: High-Value Links Failing ($(date +'%Y-%m-%d'))" + EXISTING_ISSUE=$(gh issue list --search "$ISSUE_TITLE" --state open --json number --jq '.[0] | select(. != null) | .number') + + if [ -z "$EXISTING_ISSUE" ] || [ "$EXISTING_ISSUE" = "null" ]; then + gh issue create --title "$ISSUE_TITLE" --body-file triage_report.md --label "triage, automated-report" || gh issue create --title "$ISSUE_TITLE" --body-file triage_report.md + else + echo "A triage issue already exists (#$EXISTING_ISSUE). Updating with new report..." + gh issue comment $EXISTING_ISSUE --body-file triage_report.md + fi + fi + + - name: Ensure Cache Files Exist + if: always() + run: | + touch shard_result.json triage_report.md health_check_checkpoint.json + + - name: Save Link Checker Cache + if: always() + uses: actions/cache/save@v4 + with: + path: | + shard_result.json + triage_report.md + health_check_checkpoint.json + key: link-cleaner-results-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/02.2.agentic_v2_health.yml b/.github/workflows/02.2.agentic_v2_health.yml index ee11598a..0f5613b3 100644 --- a/.github/workflows/02.2.agentic_v2_health.yml +++ b/.github/workflows/02.2.agentic_v2_health.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop @@ -38,7 +38,7 @@ jobs: - name: Restore Incremental Inventory Cache if: ${{ github.event.inputs.restore_cache == 'true' }} - uses: actions/cache/restore@v5 + uses: actions/cache/restore@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} @@ -68,7 +68,7 @@ jobs: - name: Persist Incremental Inventory to Cache if: always() - uses: actions/cache/save@v5 + uses: actions/cache/save@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/03.1.agentic_v2_metadata.yml b/.github/workflows/03.1.agentic_v2_metadata.yml index 03e04e5f..45e26241 100644 --- a/.github/workflows/03.1.agentic_v2_metadata.yml +++ b/.github/workflows/03.1.agentic_v2_metadata.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop @@ -38,7 +38,7 @@ jobs: - name: Restore Incremental Inventory Cache if: ${{ github.event.inputs.restore_cache == 'true' }} - uses: actions/cache/restore@v5 + uses: actions/cache/restore@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} @@ -76,7 +76,7 @@ jobs: - name: Persist Incremental Inventory to Cache if: always() - uses: actions/cache/save@v5 + uses: actions/cache/save@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/03.2.agentic_v2_ai.yml b/.github/workflows/03.2.agentic_v2_ai.yml index 6e65b1ce..92c9ca05 100644 --- a/.github/workflows/03.2.agentic_v2_ai.yml +++ b/.github/workflows/03.2.agentic_v2_ai.yml @@ -38,7 +38,7 @@ jobs: github.event.workflow_run.conclusion == 'success' steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop @@ -50,7 +50,7 @@ jobs: - name: Restore Incremental Inventory Cache if: ${{ github.event.inputs.restore_cache == 'true' }} - uses: actions/cache/restore@v5 + uses: actions/cache/restore@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} @@ -90,7 +90,7 @@ jobs: - name: Persist Incremental Inventory to Cache if: always() - uses: actions/cache/save@v5 + uses: actions/cache/save@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/03.3.agentic_v2_videos.yml b/.github/workflows/03.3.agentic_v2_videos.yml index e0dfcb7e..9e8365cd 100644 --- a/.github/workflows/03.3.agentic_v2_videos.yml +++ b/.github/workflows/03.3.agentic_v2_videos.yml @@ -43,7 +43,7 @@ jobs: github.event.workflow_run.conclusion == 'success' steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop @@ -55,7 +55,7 @@ jobs: - name: Restore Incremental Inventory Cache if: ${{ github.event.inputs.restore_cache == 'true' }} - uses: actions/cache/restore@v5 + uses: actions/cache/restore@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} @@ -100,7 +100,7 @@ jobs: - name: Persist Incremental Inventory Cache if: always() - uses: actions/cache/save@v5 + uses: actions/cache/save@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/04.1.agentic_v2_publish.yml b/.github/workflows/04.1.agentic_v2_publish.yml index 956a8d17..5d9b59ed 100644 --- a/.github/workflows/04.1.agentic_v2_publish.yml +++ b/.github/workflows/04.1.agentic_v2_publish.yml @@ -37,7 +37,7 @@ jobs: (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success') steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop fetch-depth: 0 @@ -50,7 +50,7 @@ jobs: - name: Restore Incremental Inventory Cache if: ${{ github.event.inputs.restore_cache == 'true' }} - uses: actions/cache/restore@v5 + uses: actions/cache/restore@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} @@ -200,7 +200,7 @@ jobs: - name: Persist Incremental Inventory to Cache if: always() - uses: actions/cache/save@v5 + uses: actions/cache/save@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/04.2.agentic_v2_pr_only.yml b/.github/workflows/04.2.agentic_v2_pr_only.yml index d83d9022..3acba52e 100644 --- a/.github/workflows/04.2.agentic_v2_pr_only.yml +++ b/.github/workflows/04.2.agentic_v2_pr_only.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop fetch-depth: 0 @@ -35,7 +35,7 @@ jobs: - name: Restore Incremental Inventory Cache (Mandate 22) if: ${{ github.event.inputs.restore_cache == 'true' }} - uses: actions/cache/restore@v5 + uses: actions/cache/restore@v6 with: path: data/inventory.yaml key: inventory-v2-${{ github.run_id }}-${{ github.run_attempt }} diff --git a/.github/workflows/05.1.readme_sync.yml b/.github/workflows/05.1.readme_sync.yml index dd5b3cc1..d0e17ce5 100644 --- a/.github/workflows/05.1.readme_sync.yml +++ b/.github/workflows/05.1.readme_sync.yml @@ -30,7 +30,7 @@ jobs: ) steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 # Full history for commit stats diff --git a/.github/workflows/06.deploy_final.yml b/.github/workflows/06.deploy_final.yml index 0cb0867b..89b8993e 100644 --- a/.github/workflows/06.deploy_final.yml +++ b/.github/workflows/06.deploy_final.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout master - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: submodules: true # Full history so mkdocs-git-revision-date-localized can compute the diff --git a/.github/workflows/07.1.pr_guardian.yml b/.github/workflows/07.1.pr_guardian.yml index 5d2624af..9974c2a0 100644 --- a/.github/workflows/07.1.pr_guardian.yml +++ b/.github/workflows/07.1.pr_guardian.yml @@ -23,7 +23,7 @@ jobs: pull-requests: write steps: - name: Checkout Code - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: ${{ github.event.pull_request.head.ref || github.ref }} repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} diff --git a/.github/workflows/07.2.markdown_linter.yml b/.github/workflows/07.2.markdown_linter.yml index 92078c8c..bb8c67ea 100644 --- a/.github/workflows/07.2.markdown_linter.yml +++ b/.github/workflows/07.2.markdown_linter.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Code - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Setup Node.js uses: actions/setup-node@v6 diff --git a/.github/workflows/08.1.cleanup_merged_branches.yml b/.github/workflows/08.1.cleanup_merged_branches.yml index 77c87598..59c7e448 100644 --- a/.github/workflows/08.1.cleanup_merged_branches.yml +++ b/.github/workflows/08.1.cleanup_merged_branches.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop # Operamos sobre develop para usar la lógica de limpieza más reciente fetch-depth: 0 diff --git a/.github/workflows/08.2.critical_asset_monitor.yml b/.github/workflows/08.2.critical_asset_monitor.yml index f196d1f5..215178d0 100644 --- a/.github/workflows/08.2.critical_asset_monitor.yml +++ b/.github/workflows/08.2.critical_asset_monitor.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop diff --git a/.github/workflows/09.weekly_digest.yml b/.github/workflows/09.weekly_digest.yml index ed2b307b..49c53ae4 100644 --- a/.github/workflows/09.weekly_digest.yml +++ b/.github/workflows/09.weekly_digest.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Repository Synchronization - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: ref: develop fetch-depth: 0 @@ -75,7 +75,7 @@ jobs: fi - name: Trigger V2 Publisher - uses: peter-evans/repository-dispatch@v3 + uses: peter-evans/repository-dispatch@v4 with: token: ${{ secrets.GITHUB_TOKEN }} event-type: weekly-digest-ready diff --git a/CHANGELOG.md b/CHANGELOG.md index 984e7d55..50a9e2d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [[2.9.60]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.60) - 2026-07-13 +## [[2.9.61]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.61) - 2026-07-13 ### Added - **Compile-time Safety Assertions for Injections**: Added permanent compiler assertions in `v2_optimizer.py` verifying that JCasC, Pipeline Principles, Best Practices, and OpenShift callout boxes are successfully merged into the V2 Jenkins page, failing the build immediately on any silent regression. diff --git a/requirements.txt b/requirements.txt index 77be8594..c9e6a6f9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ mkdocs-material>=9.7.6 -pymdown-extensions>=11.0 +pymdown-extensions>=11.0.1 yt-dlp youtube-transcript-api mkdocs-redirects>=1.2.3