From 77337d63e33b1cfe2d1a17c61f754f413d68533a Mon Sep 17 00:00:00 2001 From: Arlind Sulejmani Date: Sat, 7 Jun 2025 12:31:49 +0200 Subject: [PATCH] no way this works --- .gitea/workflows/deploy-ci.yaml | 63 +++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/.gitea/workflows/deploy-ci.yaml b/.gitea/workflows/deploy-ci.yaml index 2e5ccac..5ae0320 100644 --- a/.gitea/workflows/deploy-ci.yaml +++ b/.gitea/workflows/deploy-ci.yaml @@ -17,10 +17,11 @@ jobs: steps: - name: Clone skins-template run: | - echo "[Sync CI Started]" + echo "Clone skins-template" git clone --quiet "${{ env.TEMPLATE_REPO_URL }}" --depth 1 template-repo cd template-repo git checkout --quiet HEAD -- "${{ env.TEMPLATE_REL_PATH }}" + echo "✓ Finished cloning osc/skins-template" - name: Fetch valid user repositories id: fetch_repos @@ -28,35 +29,45 @@ jobs: page=1 per_page=50 valid_repos_file=$(mktemp) + user_count_total=$(curl -sSL -H "Authorization: token ${{ secrets.TOKEN }}" "${{ env.GITEA_API }}/admin/users" | jq 'length') + user_counter=1 while :; do - echo "Fetching users page $page" users_json=$(curl -sSL -H "Authorization: token ${{ secrets.TOKEN }}" "${{ env.GITEA_API }}/admin/users?limit=$per_page&page=$page") users_count=$(echo "$users_json" | jq 'length') [ "$users_count" -eq 0 ] && break for i in $(seq 0 $((users_count - 1))); do user_login=$(echo "$users_json" | jq -r ".[$i].login") - echo "Processing user: $user_login" + echo "[$user_counter/$user_count_total] Processing user: $user_login" repos_json=$(curl -sSL -H "Authorization: token ${{ secrets.TOKEN }}" "${{ env.GITEA_API }}/users/${user_login}/repos") repo_count=$(echo "$repos_json" | jq 'length') - for j in $(seq 0 $((repo_count - 1))); do - owner=$(echo "$repos_json" | jq -r ".[$j].owner.login") - repo=$(echo "$repos_json" | jq -r ".[$j].name") + if [ "$repo_count" -eq 0 ]; then + echo " ✖ User has no repositories." + else + repo_matched=false + for j in $(seq 0 $((repo_count - 1))); do + owner=$(echo "$repos_json" | jq -r ".[$j].owner.login") + repo=$(echo "$repos_json" | jq -r ".[$j].name") - echo "Checking repo: $owner/$repo" - readme_json=$(curl -sSL -H "Authorization: token ${{ secrets.TOKEN }}" "${{ env.GITEA_API }}/repos/$owner/$repo/contents/README.md" || echo "{}") - content=$(echo "$readme_json" | jq -r .content 2>/dev/null | base64 -d 2>/dev/null || echo "") + readme_json=$(curl -sSL -H "Authorization: token ${{ secrets.TOKEN }}" "${{ env.GITEA_API }}/repos/$owner/$repo/contents/README.md" || echo "{}") + content=$(echo "$readme_json" | jq -r .content 2>/dev/null | base64 -d 2>/dev/null || echo "") - if echo "$content" | grep -qE "^---$" && \ - echo "$content" | grep -q "^gitea: none" && \ - echo "$content" | grep -q "^include_toc: true" && \ - echo "$content" | grep -q "^# Skins"; then - echo "$owner/$repo" >> "$valid_repos_file" - echo "Added $owner/$repo to update list" - fi - done + if echo "$content" | grep -qE "^---$" && \ + echo "$content" | grep -q "^gitea: none" && \ + echo "$content" | grep -q "^include_toc: true" && \ + echo "$content" | grep -q "^# Skins"; then + echo "$owner/$repo" >> "$valid_repos_file" + echo " ✓ Added $owner/$repo to update list" + repo_matched=true + fi + done + + [ "$repo_matched" = false ] && echo " ✓ User has no repositories matching the criteria" + fi + + user_counter=$((user_counter + 1)) done page=$((page + 1)) @@ -67,10 +78,14 @@ jobs: - name: Update user repositories run: | valid_repos_file="${{ steps.fetch_repos.outputs.valid_repos_file }}" + repo_total=$(wc -l < "$valid_repos_file") + repo_counter=1 + while read -r repo_full; do owner=$(echo "$repo_full" | cut -d'/' -f1) repo=$(echo "$repo_full" | cut -d'/' -f2) - echo "[Processing repository: ${owner}/${repo}]" + echo "[$repo_counter/$repo_total] Processing Repository: $owner/$repo" + tmpdir=$(mktemp -d) git clone --quiet "https://${{ secrets.TOKEN }}@${{ vars.CONTAINER_REGISTRY }}/${owner}/${repo}.git" --depth 1 "$tmpdir" cd "$tmpdir" @@ -83,15 +98,17 @@ jobs: if ! git diff --cached --quiet; then git commit -m "Update CI" git push origin HEAD:main - echo "Updated and pushed $owner/$repo" + echo " → Updated and pushed $owner/$repo" else - echo "No changes detected for $owner/$repo" + echo " → No changes detected for $owner/$repo" fi cd - >/dev/null rm -rf "$tmpdir" - echo "[Completed ${owner}/${repo}]" - done < "$valid_repos_file" - rm "$valid_repos_file" + echo " ✓ Completed $owner/$repo" + repo_counter=$((repo_counter + 1)) + done < "$valid_repos_file" + + rm "$valid_repos_file" echo "[Sync CI Complete]"