From 04faa81dbbeb9f8f432bffaca1245ba4b1e52b3b Mon Sep 17 00:00:00 2001 From: Ivan Carlos de Almeida Date: Sun, 21 Dec 2025 23:35:44 -0300 Subject: [PATCH] update actions --- .gitea/workflows/release_build.yml | 34 +++++++++-------- .gitea/workflows/update_readme.yml | 60 ++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 15 deletions(-) create mode 100644 .gitea/workflows/update_readme.yml diff --git a/.gitea/workflows/release_build.yml b/.gitea/workflows/release_build.yml index 6a6ca31..9dabd50 100644 --- a/.gitea/workflows/release_build.yml +++ b/.gitea/workflows/release_build.yml @@ -6,7 +6,7 @@ on: - main workflow_dispatch: schedule: - - cron: '28 5 * * *' + - cron: "28 5 * * *" # workflow_run support in Gitea can be tricky, keeping it but might need adjustment workflow_run: workflows: ["Sync Repo"] @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest container: image: catthehacker/ubuntu:act-latest - + permissions: contents: write packages: write @@ -139,7 +139,7 @@ jobs: LATEST_RELEASE_TAG=$(curl -sL -H "Accept: application/json" \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ "${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/latest" | jq -r .tag_name) - + if [ -z "$LATEST_RELEASE_TAG" ] || [ "$LATEST_RELEASE_TAG" = "null" ]; then LATEST_RELEASE_TAG="v1.0.0" fi @@ -245,7 +245,7 @@ jobs: AUTHOR="Ivan Carlos" VERSION_FILE="manifest.json" UPSTREAM_SHA="${{ steps.check_upstream.outputs.upstream_sha }}" - + if [ -f "$VERSION_FILE" ]; then jq --arg v "$VERSION" \ --arg a "$AUTHOR" \ @@ -265,6 +265,11 @@ jobs: git commit -m "Update manifest version to ${{ steps.version.outputs.VERSION }} [▶️]" || echo "Nothing to commit" git push origin main + - name: 🛠 Install zip + if: steps.check_commits.outputs.commit_count != '0' + run: | + apt-get update && apt-get install -y zip + - name: 📦 Create ZIP package (excluding certain files) if: steps.check_commits.outputs.commit_count != '0' run: | @@ -279,11 +284,11 @@ jobs: run: | TAG_NAME="v${{ steps.version.outputs.VERSION }}" RELEASE_NAME="${{ steps.version.outputs.REPO_NAME }} v${{ steps.version.outputs.VERSION }}" - + # Construct Markdown body safely using env var # We use printf to avoid interpreting backslashes in the file list BODY=$(printf "### Changelog\nFiles changed in this release:\n%s" "$CHANGELOG_LIST") - + # Create JSON payload using jq jq -n \ --arg tag_name "$TAG_NAME" \ @@ -299,13 +304,13 @@ jobs: -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Content-Type: application/json" \ -d @release_payload.json > api_response.json - + echo "DEBUG: API Response:" cat api_response.json || true - + RELEASE_ID=$(jq -r .id api_response.json) echo "RELEASE_ID=$RELEASE_ID" >> "$GITHUB_OUTPUT" - + if [ "$RELEASE_ID" == "null" ] || [ -z "$RELEASE_ID" ]; then echo "Failed to create release. Response content:" cat api_response.json @@ -318,19 +323,18 @@ jobs: RELEASE_ID="${{ steps.create_release.outputs.RELEASE_ID }}" ZIP_NAME="${{ steps.version.outputs.ZIP_NAME }}" FILE_PATH="./$ZIP_NAME" - - curl -s -X POST "${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/$RELEASE_ID/assets" \ + + curl --fail -s -X POST "${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/$RELEASE_ID/assets?name=$ZIP_NAME" \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -H "Content-Type: application/zip" \ - --data-binary @"$FILE_PATH" \ - -o /dev/null + --data-binary @"$FILE_PATH" # ----- Docker steps ----- - name: Clone Upstream Code (if needed) if: steps.check_commits.outputs.commit_count != '0' && (steps.check_upstream.outputs.upstream_needs_update == 'true' || steps.check_upstream.outputs.repo_url != '') run: | - rm -rf upstream_src - git clone --depth 1 --branch ${{ steps.check_upstream.outputs.repo_branch }} ${{ steps.check_upstream.outputs.repo_url }} upstream_src + rm -rf upstream_src + git clone --depth 1 --branch ${{ steps.check_upstream.outputs.repo_branch }} ${{ steps.check_upstream.outputs.repo_url }} upstream_src - name: 🔍 Check if Dockerfile exists if: steps.check_commits.outputs.commit_count != '0' || steps.check_upstream.outputs.upstream_needs_update == 'true' diff --git a/.gitea/workflows/update_readme.yml b/.gitea/workflows/update_readme.yml new file mode 100644 index 0000000..a44728f --- /dev/null +++ b/.gitea/workflows/update_readme.yml @@ -0,0 +1,60 @@ +name: Update README + +# Allow Gitea Actions to commit and push changes +permissions: + contents: write + +on: + workflow_dispatch: + schedule: + - cron: "0 4 * * *" # Every day at 4 AM UTC + +jobs: + update-readme: + runs-on: ubuntu-latest + container: + image: catthehacker/ubuntu:act-latest + + env: + SOURCE_REPO: ivancarlos/.gitea + SOURCE_BRANCH: main + + steps: + - name: Checkout current repository + uses: actions/checkout@v4 + + - name: Checkout source README template + uses: actions/checkout@v4 + with: + repository: ${{ env.SOURCE_REPO }} + ref: ${{ env.SOURCE_BRANCH }} + token: ${{ secrets.CR_PAT }} + path: source_readme + + - name: Update README.md (footer only) + run: | + set -e + + # --- Extract footer block from source (everything from onward) --- + FOOTER=$(awk '//{flag=1}flag' source_readme/README.md) + + # --- Replace everything after with FOOTER --- + awk -v footer="$FOOTER" ' + // { + print footer + found=1 + exit + } + { print } + ' README.md > README.tmp && mv README.tmp README.md + + - name: Remove source_readme from git index + run: rm -rf source_readme + + - name: Commit and push changes + run: | + git config user.name "Gitea Actions" + git config user.email "actions@git.icc.gg" + git add README.md + git commit -m "Sync README from template [▶️]" || echo "Nothing to commit" + git push origin ${{ github.ref_name }}