name: Kernel Update Check on: workflow_dispatch: jobs: check-update: runs-on: iso-builder steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.FORGEJO_TOKEN }} - 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) PKGVER=$(grep '^pkgver=' linux-raveos/PKGBUILD | cut -d= -f2) echo "MAJOR=$MAJOR" >> $GITHUB_OUTPUT echo "MINOR=$MINOR" >> $GITHUB_OUTPUT echo "TAGREL=$TAGREL" >> $GITHUB_OUTPUT echo "PKGVER=$PKGVER" >> $GITHUB_OUTPUT echo "Jelenlegi: ${MAJOR}.${MINOR}-${TAGREL} (pkgver=${PKGVER})" - 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? 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 }}" OPEN_PRS=$(curl -fsSL \ -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \ "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls?state=open&limit=50") 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: PKGBUILD frissitese es PR nyitasa if: steps.needsupdate.outputs.UPDATE == 'yes' && steps.prcheck.outputs.EXISTS == 'no' run: | set -euo pipefail NEW_MAJOR="${{ steps.check.outputs.MAJOR }}" NEW_MINOR="${{ steps.check.outputs.MINOR }}" NEW_TAGREL="${{ steps.check.outputs.TAGREL }}" OLD_PKGVER="${{ steps.current.outputs.PKGVER }}" CUR="${{ steps.current.outputs.MAJOR }}.${{ steps.current.outputs.MINOR }}-${{ steps.current.outputs.TAGREL }}" # Csak a sajat pkgver utolso szamot noveli: X.Y.Z -> X.Y.Z+1 BASE="${OLD_PKGVER%.*}" LAST="${OLD_PKGVER##*.}" NEW_PKGVER="${BASE}.$((LAST + 1))" BRANCH="update/kernel-${NEW_MAJOR}.${NEW_MINOR}-${NEW_TAGREL}" git config user.name "RaveOS Bot" git config user.email "bot@raveos.hu" git checkout -b "$BRANCH" sed -i "s/^_major=.*/_major=${NEW_MAJOR}/" linux-raveos/PKGBUILD sed -i "s/^_minor=.*/_minor=${NEW_MINOR}/" linux-raveos/PKGBUILD sed -i "s/^_tagrel=.*/_tagrel=${NEW_TAGREL}/" linux-raveos/PKGBUILD sed -i "s/^pkgver=.*/pkgver=${NEW_PKGVER}/" linux-raveos/PKGBUILD sed -i "s/^pkgrel=.*/pkgrel=1/" linux-raveos/PKGBUILD git add linux-raveos/PKGBUILD git commit -m "update: linux-raveos kernel ${NEW_MAJOR}.${NEW_MINOR}-${NEW_TAGREL} (pkgver=${NEW_PKGVER})" git remote set-url origin "https://bot:${{ secrets.FORGEJO_TOKEN }}@git.rp1.hu/RaveOS/RaveOS-PKGBUILD.git" git push origin "$BRANCH" 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_MAJOR}.${NEW_MINOR}-${NEW_TAGREL}\", \"head\": \"${BRANCH}\", \"base\": \"main\", \"body\": \"Automatikus kernel verzio frissites.\n\n- Regi: \`${CUR}\` (pkgver=${OLD_PKGVER})\n- Uj: \`${NEW_MAJOR}.${NEW_MINOR}-${NEW_TAGREL}\` (pkgver=${NEW_PKGVER})\n\nMerge utan automatikusan elindul a build.\" }" echo "PR megnyitva: $BRANCH -> main"