diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 8b0e53f..4e95c75 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -11,8 +11,7 @@ env: GITEA_API: https://${{ vars.CONTAINER_REGISTRY }}/api/v1 jobs: - update_community_skins_readme: - name: Full CI/CD Pipeline + gather-skins: runs-on: ubuntu-latest container: image: ${{ vars.CONTAINER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest @@ -28,21 +27,12 @@ jobs: with: token: ${{ secrets.TOKEN }} - - name: Pull latest changes - run: | - git fetch origin main - git rebase origin/main || { - echo "⚠️ Git rebase failed, likely due to conflicts." - git rebase --abort || true - exit 1 - } - - - name: Find Skin Repositories for all users - id: find_skins + - name: Find Skin Repositories and Generate Tables run: | set -eo pipefail - user_rows_file=$(mktemp) - avatar_rows_file=$(mktemp) + mkdir -p data + user_rows_file=data/user_rows.txt + avatar_rows_file=data/avatar_rows.txt total_valid_entries=0 page=1 @@ -103,24 +93,34 @@ jobs: page=$((page + 1)) done - echo "user_rows_file=$user_rows_file" >> "$GITHUB_OUTPUT" - echo "avatar_rows_file=$avatar_rows_file" >> "$GITHUB_OUTPUT" - echo "total_valid_entries=$total_valid_entries" >> "$GITHUB_OUTPUT" + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: skin-tables + path: data/ - - name: Update README with user skins + generate-readme: + needs: gather-skins + runs-on: ubuntu-latest + container: + image: ${{ vars.CONTAINER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest + + steps: + - name: Download skin data + uses: actions/download-artifact@v3 + with: + name: skin-tables + path: data/ + + - name: Checkout Repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.TOKEN }} + + - name: Generate README run: | set -eo pipefail - README_PATH="${{ env.README_PATH }}" - user_rows_file="${{ steps.find_skins.outputs.user_rows_file }}" - avatar_rows_file="${{ steps.find_skins.outputs.avatar_rows_file }}" - total_valid_entries="${{ steps.find_skins.outputs.total_valid_entries }}" - - if [ "$total_valid_entries" -eq 0 ]; then - echo "No valid entries found, skipping README update" - exit 0 - fi - cp "$README_PATH" "${README_PATH}.bak" cat > "$README_PATH" <<-EOF @@ -152,7 +152,7 @@ jobs: EOF - sort -t '|' -k1,1n "$user_rows_file" | cut -d'|' -f2- | sed 's/^/ /' >> "$README_PATH" + sort -t '|' -k1,1n data/user_rows.txt | cut -d'|' -f2- | sed 's/^/ /' >> "$README_PATH" cat >> "$README_PATH" <<-EOF @@ -162,37 +162,57 @@ jobs:

EOF - sort -t '|' -k1,1n "$avatar_rows_file" | cut -d'|' -f2- | sed 's/^/ /' >> "$README_PATH" + sort -t '|' -k1,1n data/avatar_rows.txt | cut -d'|' -f2- | sed 's/^/ /' >> "$README_PATH" cat >> "$README_PATH" <<-EOF

EOF if git diff --quiet "$README_PATH"; then - echo "README has not changed, skipping commit" + echo "README has not changed" rm -f "${README_PATH}.bak" - exit 0 else echo "README updated" rm -f "${README_PATH}.bak" fi + - name: Upload updated README + uses: actions/upload-artifact@v3 + with: + name: updated-readme + path: ${{ env.README_PATH }} + + commit-readme: + needs: generate-readme + runs-on: ubuntu-latest + container: + image: ${{ vars.CONTAINER_REGISTRY }}/${{ env.IMAGE_NAME }}:latest + + steps: + - name: Download README + uses: actions/download-artifact@v3 + with: + name: updated-readme + + - name: Checkout Repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.TOKEN }} + - name: Configure Git run: | git config user.email "arlind@sulej.ch" git config user.name "ci-bot" git config lfs.https://${{ vars.CONTAINER_REGISTRY }}/arlind/skins.git/info/lfs.locksverify true - - name: Add and Commit changes + - name: Commit and Push README run: | git config advice.addIgnoredFile false - git add "$README_PATH" + git add README.md git commit -m "[ci skip] push back from pipeline" -q || echo "No changes to commit" - - name: Push changes and create tag - run: | if [ "${GITHUB_REF}" = "refs/heads/main" ]; then git push origin HEAD:main || echo "No changes to push" else git push origin HEAD:"${GITHUB_REF_NAME}" || echo "No changes to push" - fi \ No newline at end of file + fi