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 LATEST=$(curl -fsSL --retry 3 "https://api.github.com/repos/CachyOS/linux/tags" \ | python3 -c " import sys, json, re tags = json.load(sys.stdin) versions = [] for t in tags: m = re.match(r'cachyos-(\d+\.\d+)\.(\d+)-(\d+)$', t['name']) if m: versions.append((t['name'], m.group(1), m.group(2), m.group(3))) if versions: versions.sort(key=lambda x: (list(map(int, x[1].split('.'))), int(x[2]), int(x[3])), reverse=True) latest = versions[0] print(f'TAG={latest[0]}') print(f'MAJOR={latest[1]}') print(f'MINOR={latest[2]}') print(f'TAGREL={latest[3]}') ") echo "$LATEST" >> $GITHUB_OUTPUT echo "Legfrissebb CachyOS: $LATEST" - 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? 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 }}" EXISTS=$(curl -fsSL \ -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \ "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls?state=open" \ | python3 -c " import sys, json pulls = json.load(sys.stdin) branch = '${BRANCH}' found = any(p.get('head', {}).get('label', '').endswith(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"