Merge branch 'master' into develop

This commit is contained in:
Inaki Fernandez
2026-07-13 07:52:05 +02:00
18 changed files with 152 additions and 152 deletions

View File

@@ -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 }}

View File

@@ -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

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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

View File

@@ -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

View File

@@ -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 }}

View File

@@ -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

View File

@@ -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

View File

@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Repository Synchronization
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
ref: develop

View File

@@ -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

View File

@@ -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.

View File

@@ -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