Update .gitea/workflows/renovate.yaml
Some checks failed
renovate / Renovate with Batching (push) Has been cancelled
Some checks failed
renovate / Renovate with Batching (push) Has been cancelled
This commit is contained in:
parent
2b469d47c3
commit
011e8bf6a5
1 changed files with 79 additions and 136 deletions
|
@ -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
|
|
||||||
if ! jq . renovate-repos.json > /dev/null 2>&1; then
|
|
||||||
echo "File does not contain valid JSON"
|
|
||||||
echo "batches=[]" >> $GITHUB_OUTPUT
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create batches using shell commands
|
|
||||||
REPO_COUNT=$(jq '. | length' renovate-repos.json)
|
|
||||||
if [ "$REPO_COUNT" -eq 0 ]; then
|
|
||||||
echo "No repositories found"
|
|
||||||
echo "batches=[]" >> $GITHUB_OUTPUT
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Found $REPO_COUNT repositories"
|
|
||||||
|
|
||||||
# Create batches of 5 repos
|
|
||||||
BATCHES="["
|
|
||||||
for i in $(seq 0 5 $((REPO_COUNT-1))); do
|
|
||||||
if [ "$i" -gt 0 ]; then
|
|
||||||
BATCHES="$BATCHES,"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create a batch of up to 5 repos
|
|
||||||
BATCH="["
|
|
||||||
for j in $(seq 0 4); do
|
|
||||||
IDX=$((i+j))
|
|
||||||
if [ "$IDX" -lt "$REPO_COUNT" ]; then
|
|
||||||
if [ "$j" -gt 0 ]; then
|
|
||||||
BATCH="$BATCH,"
|
|
||||||
fi
|
|
||||||
REPO=$(jq -r ".[$IDX]" renovate-repos.json)
|
|
||||||
BATCH="$BATCH\"$REPO\""
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
BATCH="$BATCH]"
|
|
||||||
BATCHES="$BATCHES$BATCH"
|
|
||||||
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
|
- name: Debug Environment
|
||||||
run: |
|
run: |
|
||||||
npm install -g renovate
|
echo "Node version: $(node --version)"
|
||||||
|
echo "NPM version: $(npm --version)"
|
||||||
- name: Run Renovate on Batch
|
echo "JQ version: $(jq --version)"
|
||||||
run: |
|
echo "Current directory: $(pwd)"
|
||||||
# Convert batch to string and process safely
|
ls -la
|
||||||
BATCH='${{ toJson(matrix.batch) }}'
|
echo "Config file contents:"
|
||||||
|
if [ -f "config.js" ]; then
|
||||||
# Check if batch is valid
|
cat config.js
|
||||||
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
|
else
|
||||||
echo "No repositories to process in this batch"
|
echo "Config file not found!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Discover Repositories
|
||||||
|
id: discover
|
||||||
|
run: |
|
||||||
|
echo "Starting repository discovery..."
|
||||||
|
renovate --write-discovered-repos=renovate-repos.json
|
||||||
|
|
||||||
|
if [ -f renovate-repos.json ]; then
|
||||||
|
echo "Repository discovery results:"
|
||||||
|
cat renovate-repos.json
|
||||||
|
|
||||||
|
if jq . renovate-repos.json > /dev/null 2>&1; then
|
||||||
|
echo "Valid JSON file found"
|
||||||
|
REPO_COUNT=$(jq '. | length' renovate-repos.json)
|
||||||
|
echo "Found $REPO_COUNT repositories"
|
||||||
|
|
||||||
|
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
|
||||||
|
else
|
||||||
|
echo "No repository discovery results file created"
|
||||||
fi
|
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"
|
||||||
|
|
||||||
|
- name: Process All Repositories
|
||||||
|
if: steps.discover.outputs.all_repos != ''
|
||||||
|
run: |
|
||||||
|
ALL_REPOS="${{ steps.discover.outputs.all_repos }}"
|
||||||
|
echo "Processing all repositories: $ALL_REPOS"
|
||||||
|
|
||||||
|
# Process in batches of 5
|
||||||
|
IFS=',' read -ra REPO_ARRAY <<< "$ALL_REPOS"
|
||||||
|
|
||||||
|
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
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Processing batch $((i/5+1)): $BATCH"
|
||||||
|
renovate $BATCH
|
||||||
|
done
|
||||||
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 Renovate (Default)
|
|
||||||
needs: discover-repos
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ needs.discover-repos.outputs.repo-batches == '[]' }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install Renovate
|
- name: Run Default Renovate
|
||||||
run: |
|
if: steps.discover.outputs.all_repos == ''
|
||||||
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"
|
||||||
|
|
Loading…
Add table
Reference in a new issue