name: Kernel Update Check on: schedule: - cron: '0 6 1,15 * *' 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 }}" # pkgver = kernel verzio (pl. 7.0.11) # pkgrel logika: # - uj major.minor (pl. 7.0.10 -> 7.0.11 vagy 8.0.x) -> reset 10-re # - csak _tagrel valtozik (ugyanaz a kernel, uj stable tag) -> +1 NEW_PKGVER="${NEW_MAJOR}.${NEW_MINOR}" OLD_MAJOR="${{ steps.current.outputs.MAJOR }}" OLD_MINOR="${{ steps.current.outputs.MINOR }}" OLD_PKGREL=$(grep '^pkgrel=' linux-raveos/PKGBUILD | cut -d= -f2) if [ "${OLD_MAJOR}.${OLD_MINOR}" != "${NEW_MAJOR}.${NEW_MINOR}" ]; then NEW_PKGREL=10 elif [ "$OLD_PKGREL" -lt 10 ]; then NEW_PKGREL=10 else NEW_PKGREL=$((OLD_PKGREL + 1)) fi 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=${NEW_PKGREL}/" linux-raveos/PKGBUILD # Uj CachyOS config letoltese + RaveOS javitasok visszarakasa curl -fsSL --retry 3 \ "https://raw.githubusercontent.com/CachyOS/linux-cachyos/master/linux-cachyos/config" \ -o linux-raveos/config sed -i 's/^CONFIG_ZRAM=m$/CONFIG_ZRAM=y/' linux-raveos/config sed -i 's/^# CONFIG_ZRAM is not set$/CONFIG_ZRAM=y/' linux-raveos/config sed -i 's/^CONFIG_NTSYNC=m$/CONFIG_NTSYNC=y/' linux-raveos/config sed -i 's/^# CONFIG_NTSYNC is not set$/CONFIG_NTSYNC=y/' linux-raveos/config git add linux-raveos/PKGBUILD linux-raveos/config git commit -m "update: linux-cachyos ${NEW_MAJOR}.${NEW_MINOR}-${NEW_TAGREL} (pkgver=${NEW_PKGVER}-${NEW_PKGREL})" 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"