name: Kernel Update Check on: schedule: - cron: '0 8 1,15 * *' workflow_dispatch: jobs: check-update: runs-on: iso-builder steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Check CachyOS kernel version id: check run: | set -euo pipefail PKGBUILD=$(curl -fsSL --retry 3 \ "https://raw.githubusercontent.com/CachyOS/linux-cachyos/master/linux-cachyos/PKGBUILD") MAJOR=$(echo "$PKGBUILD" | grep '^_major=' | cut -d= -f2) MINOR=$(echo "$PKGBUILD" | grep '^_minor=' | cut -d= -f2) TAGREL=$(echo "$PKGBUILD" | grep '^_tagrel=' | cut -d= -f2) if [ -z "$MAJOR" ] || [ -z "$MINOR" ] || [ -z "$TAGREL" ]; then echo "HIBA: Nem sikerult a CachyOS verziot lekerdezni" exit 1 fi echo "MAJOR=$MAJOR" >> $GITHUB_OUTPUT echo "MINOR=$MINOR" >> $GITHUB_OUTPUT echo "TAGREL=$TAGREL" >> $GITHUB_OUTPUT echo "Legfrissebb CachyOS: ${MAJOR}.${MINOR}-${TAGREL}" - name: Read current version id: current run: | set -euo pipefail MAJOR=$(grep '^_major=' linux-raveos/PKGBUILD | cut -d= -f2) MINOR=$(grep '^_minor=' linux-raveos/PKGBUILD | cut -d= -f2) TAGREL=$(grep '^_tagrel=' linux-raveos/PKGBUILD | cut -d= -f2) echo "MAJOR=$MAJOR" >> $GITHUB_OUTPUT echo "MINOR=$MINOR" >> $GITHUB_OUTPUT echo "TAGREL=$TAGREL" >> $GITHUB_OUTPUT echo "Jelenlegi: ${MAJOR}.${MINOR}-${TAGREL}" - name: Frissites szukseges? id: needsupdate run: | set -euo pipefail NEW="${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" CUR="${{ steps.current.outputs.MAJOR }}.${{ steps.current.outputs.MINOR }}-${{ steps.current.outputs.TAGREL }}" if [ "$NEW" != "$CUR" ]; then echo "UPDATE=yes" >> $GITHUB_OUTPUT echo "Frissites: $CUR -> $NEW" else echo "UPDATE=no" >> $GITHUB_OUTPUT echo "Aktualis, nincs frissites: $CUR" fi - name: PR mar letezik? Regi PR-ok lezarasa id: prcheck if: steps.needsupdate.outputs.UPDATE == 'yes' run: | set -euo pipefail BRANCH="update/kernel-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" # Lekerjuk az osszes nyitott kernel update PR-t OPEN_PRS=$(curl -fsSL \ -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \ "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls?state=open&limit=50") # Regi kernel update PR-ok lezarasa (ha nem ez az uj branch) echo "$OPEN_PRS" | python3 -c " import sys, json pulls = json.load(sys.stdin) new_branch = '$BRANCH' for p in pulls: head = p.get('head', {}).get('ref', '') if head.startswith('update/kernel-') and head != new_branch: print(p['number']) " | while read -r pr_num; do curl -fsSL -X PATCH \ -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \ -H "Content-Type: application/json" \ "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls/${pr_num}" \ -d '{"state":"closed"}' > /dev/null echo "Regi PR #${pr_num} lezarva" done # Ellenorizzuk hogy az uj branch PR-ja letezik-e mar EXISTS=$(echo "$OPEN_PRS" | python3 -c " import sys, json pulls = json.load(sys.stdin) branch = '$BRANCH' found = any(p.get('head', {}).get('ref', '') == branch for p in pulls) print('yes' if found else 'no') ") echo "EXISTS=$EXISTS" >> $GITHUB_OUTPUT echo "PR letezik: $EXISTS" - name: Update branch letrehozasa if: steps.needsupdate.outputs.UPDATE == 'yes' && steps.prcheck.outputs.EXISTS == 'no' run: | set -euo pipefail BRANCH="update/kernel-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" git config user.name "RaveOS Bot" git config user.email "bot@raveos.hu" git checkout -b "$BRANCH" # PKGBUILD frissitese sed -i "s/^_major=.*/_major=${{ steps.check.outputs.MAJOR }}/" linux-raveos/PKGBUILD sed -i "s/^_minor=.*/_minor=${{ steps.check.outputs.MINOR }}/" linux-raveos/PKGBUILD sed -i "s/^_tagrel=.*/_tagrel=${{ steps.check.outputs.TAGREL }}/" linux-raveos/PKGBUILD # Uj CachyOS config letoltese curl -fsSL --retry 3 \ "https://raw.githubusercontent.com/CachyOS/linux-cachyos/master/linux-cachyos/config" \ -o linux-raveos/config # RaveOS modositasok visszarakasa a configba sed -i 's/^CONFIG_ZRAM=m$/CONFIG_ZRAM=y/' linux-raveos/config sed -i 's/^CONFIG_NTSYNC=m$/CONFIG_NTSYNC=y/' linux-raveos/config git add linux-raveos/PKGBUILD linux-raveos/config git commit -m "update: linux-raveos kernel ${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" git remote set-url origin "https://bot:${{ secrets.FORGEJO_TOKEN }}@git.rp1.hu/RaveOS/RaveOS-PKGBUILD.git" git push origin "$BRANCH" - name: PR nyitasa if: steps.needsupdate.outputs.UPDATE == 'yes' && steps.prcheck.outputs.EXISTS == 'no' run: | set -euo pipefail BRANCH="update/kernel-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" NEW="${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}" CUR="${{ steps.current.outputs.MAJOR }}.${{ steps.current.outputs.MINOR }}-${{ steps.current.outputs.TAGREL }}" curl -fsSL -X POST \ -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \ -H "Content-Type: application/json" \ "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls" \ -d "{ \"title\": \"kernel update: ${CUR} -> ${NEW}\", \"head\": \"${BRANCH}\", \"base\": \"main\", \"body\": \"Automatikus kernel frissites.\n\n- Regi verzio: \`${CUR}\`\n- Uj verzio: \`${NEW}\`\n\nEllenorizd a config diff-et merge elott. Merge utan automatikusan elindul a build.\" }" echo "PR megnyitva: $BRANCH -> main"