Update .gitea/workflows/renovate.yaml #36

Closed
jank wants to merge 6 commits from jank-patch-1 into main
Showing only changes of commit 011e8bf6a5 - Show all commits

View file

@ -7,164 +7,107 @@ on:
push: push:
jobs: jobs:
discover-repos: renovate:
name: Discover Repositories name: Renovate with Batching
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs:
repo-batches: ${{ steps.create-batches.outputs.batches }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Install Renovate - name: Install Renovate and Dependencies
run: | run: |
npm install -g renovate npm install -g renovate
- name: Discover Repositories
run: |
renovate --write-discovered-repos=renovate-repos.json
env:
RENOVATE_CONFIG_FILE: "config.js"
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
GITHUB_COM_TOKEN: ${{ secrets.GH_TOKEN }}
LOG_LEVEL: "info"
RENOVATE_AUTODISCOVER: "true"
- name: Create Repository Batches
id: create-batches
run: |
if [ ! -f renovate-repos.json ] || [ ! -s renovate-repos.json ]; then
echo "No repositories discovered or file not created"
echo "batches=[]" >> $GITHUB_OUTPUT
exit 0
fi
# Install jq if not available
if ! command -v jq &> /dev/null; then if ! command -v jq &> /dev/null; then
sudo apt-get update && sudo apt-get install -y jq sudo apt-get update && sudo apt-get install -y jq
fi fi
# Check if file contains valid JSON - name: Debug Environment
if ! jq . renovate-repos.json > /dev/null 2>&1; then run: |
echo "File does not contain valid JSON" echo "Node version: $(node --version)"
echo "batches=[]" >> $GITHUB_OUTPUT echo "NPM version: $(npm --version)"
exit 0 echo "JQ version: $(jq --version)"
echo "Current directory: $(pwd)"
ls -la
echo "Config file contents:"
if [ -f "config.js" ]; then
cat config.js
else
echo "Config file not found!"
fi fi
# Create batches using shell commands - name: Discover Repositories
REPO_COUNT=$(jq '. | length' renovate-repos.json) id: discover
if [ "$REPO_COUNT" -eq 0 ]; then run: |
echo "No repositories found" echo "Starting repository discovery..."
echo "batches=[]" >> $GITHUB_OUTPUT renovate --write-discovered-repos=renovate-repos.json
exit 0
fi
echo "Found $REPO_COUNT repositories" if [ -f renovate-repos.json ]; then
echo "Repository discovery results:"
cat renovate-repos.json
# Create batches of 5 repos if jq . renovate-repos.json > /dev/null 2>&1; then
BATCHES="[" echo "Valid JSON file found"
for i in $(seq 0 5 $((REPO_COUNT-1))); do REPO_COUNT=$(jq '. | length' renovate-repos.json)
if [ "$i" -gt 0 ]; then echo "Found $REPO_COUNT repositories"
BATCHES="$BATCHES,"
if [ "$REPO_COUNT" -gt 0 ]; then
# Create list of all repos for processing
ALL_REPOS=$(jq -r '. | join(",")' renovate-repos.json)
echo "all_repos=$ALL_REPOS" >> $GITHUB_OUTPUT
echo "All repositories: $ALL_REPOS"
else
echo "No repositories found in autodiscovery"
fi
else
echo "Invalid JSON in renovate-repos.json"
cat renovate-repos.json
fi fi
else
echo "No repository discovery results file created"
fi
env:
RENOVATE_CONFIG_FILE: "config.js"
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
GITHUB_COM_TOKEN: ${{ secrets.GH_TOKEN }}
LOG_LEVEL: "debug" # Set to debug for more information
RENOVATE_AUTODISCOVER: "true"
# Create a batch of up to 5 repos - name: Process All Repositories
BATCH="[" if: steps.discover.outputs.all_repos != ''
for j in $(seq 0 4); do run: |
IDX=$((i+j)) ALL_REPOS="${{ steps.discover.outputs.all_repos }}"
if [ "$IDX" -lt "$REPO_COUNT" ]; then echo "Processing all repositories: $ALL_REPOS"
if [ "$j" -gt 0 ]; then
BATCH="$BATCH," # Process in batches of 5
fi IFS=',' read -ra REPO_ARRAY <<< "$ALL_REPOS"
REPO=$(jq -r ".[$IDX]" renovate-repos.json)
BATCH="$BATCH\"$REPO\"" TOTAL=${#REPO_ARRAY[@]}
echo "Total repositories to process: $TOTAL"
for ((i=0; i<TOTAL; i+=5)); do
BATCH=""
for ((j=i; j<i+5 && j<TOTAL; j++)); do
if [ -n "$BATCH" ]; then
BATCH="$BATCH,${REPO_ARRAY[$j]}"
else
BATCH="${REPO_ARRAY[$j]}"
fi fi
done done
BATCH="$BATCH]"
BATCHES="$BATCHES$BATCH" echo "Processing batch $((i/5+1)): $BATCH"
renovate $BATCH
done done
BATCHES="$BATCHES]"
echo "batches=$BATCHES" >> $GITHUB_OUTPUT
echo "Created $(echo "$BATCHES" | jq '. | length') batches"
renovate:
name: Run Renovate
needs: discover-repos
runs-on: ubuntu-latest
if: ${{ needs.discover-repos.outputs.repo-batches != '[]' }}
strategy:
matrix:
batch: ${{ fromJson(needs.discover-repos.outputs.repo-batches) }}
fail-fast: false
max-parallel: 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Renovate
run: |
npm install -g renovate
- name: Run Renovate on Batch
run: |
# Convert batch to string and process safely
BATCH='${{ toJson(matrix.batch) }}'
# Check if batch is valid
if [ "$BATCH" = "null" ] || [ "$BATCH" = "" ]; then
echo "Batch is empty or null"
exit 0
fi
# Parse batch and run Renovate
REPOS=""
# Parse JSON array using bash
BATCH=${BATCH//\[/}
BATCH=${BATCH//\]/}
BATCH=${BATCH//\"/}
BATCH=${BATCH//,/ }
for REPO in $BATCH; do
if [ -n "$REPO" ]; then
if [ -n "$REPOS" ]; then
REPOS="$REPOS,$REPO"
else
REPOS="$REPO"
fi
fi
done
if [ -n "$REPOS" ]; then
echo "Processing repositories: $REPOS"
renovate $REPOS
else
echo "No repositories to process in this batch"
fi
env: env:
RENOVATE_CONFIG_FILE: "config.js" RENOVATE_CONFIG_FILE: "config.js"
RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }} RENOVATE_TOKEN: ${{ secrets.RENOVATE_TOKEN }}
GITHUB_COM_TOKEN: ${{ secrets.GH_TOKEN }} GITHUB_COM_TOKEN: ${{ secrets.GH_TOKEN }}
LOG_LEVEL: "info" LOG_LEVEL: "info"
renovate-default: - name: Run Default Renovate
name: Run Renovate (Default) if: steps.discover.outputs.all_repos == ''
needs: discover-repos
runs-on: ubuntu-latest
if: ${{ needs.discover-repos.outputs.repo-batches == '[]' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Renovate
run: |
npm install -g renovate
- name: Run Renovate
run: | run: |
echo "No repositories discovered, running default renovate"
renovate renovate
env: env:
RENOVATE_CONFIG_FILE: "config.js" RENOVATE_CONFIG_FILE: "config.js"