summaryrefslogtreecommitdiff
path: root/.forgejo/workflows/kernel-update-check.yml
blob: 673d1ab48b53e1ef2cfd51cb6c5ef7442ef14250 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
name: Kernel Update Check

on:
  schedule:
    - cron: '0 8 1,15 * *'
  workflow_dispatch:

jobs:
  check-update:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Check CachyOS kernel version
        id: check
        run: |
          # Aktualis CachyOS kernel verzio lekerdezese
          LATEST=$(curl -s "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 "Latest CachyOS: $LATEST"

      - name: Read current version from PKGBUILD
        id: current
        run: |
          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 "Current: $MAJOR.$MINOR-$TAGREL"

      - name: Check if update needed
        id: needsupdate
        run: |
          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 szukseges: $CUR -> $NEW"
          else
            echo "UPDATE=no" >> $GITHUB_OUTPUT
            echo "Nincs frissites, aktualis: $CUR"
          fi

      - name: Check if PR already exists
        id: prcheck
        if: steps.needsupdate.outputs.UPDATE == 'yes'
        run: |
          BRANCH="update/kernel-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}"
          EXISTS=$(curl -s \
            -H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \
            "https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls?state=open&head=$BRANCH" \
            | python3 -c "import sys,json; pulls=json.load(sys.stdin); print('yes' if pulls else 'no')")
          echo "EXISTS=$EXISTS" >> $GITHUB_OUTPUT
          echo "PR letezik: $EXISTS"

      - name: Create update branch
        if: steps.needsupdate.outputs.UPDATE == 'yes' && steps.prcheck.outputs.EXISTS == 'no'
        run: |
          git config user.name "RaveOS Bot"
          git config user.email "bot@raveos.hu"

          BRANCH="update/kernel-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}"
          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

          # CachyOS config letoltese
          SRCNAME="cachyos-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}"
          curl -sL "https://raw.githubusercontent.com/CachyOS/linux-cachyos/master/linux-cachyos/config" \
            -o linux-raveos/config.new

          # ZRAM es NTSYNC builtin megtartasa
          sed -i 's/^CONFIG_ZRAM=m$/CONFIG_ZRAM=y/' linux-raveos/config.new
          sed -i 's/^CONFIG_NTSYNC=m$/CONFIG_NTSYNC=y/' linux-raveos/config.new
          mv linux-raveos/config.new 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: Open Pull Request
        if: steps.needsupdate.outputs.UPDATE == 'yes' && steps.prcheck.outputs.EXISTS == 'no'
        run: |
          BRANCH="update/kernel-${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}"
          NEW_VER="${{ steps.check.outputs.MAJOR }}.${{ steps.check.outputs.MINOR }}-${{ steps.check.outputs.TAGREL }}"
          CUR_VER="${{ steps.current.outputs.MAJOR }}.${{ steps.current.outputs.MINOR }}-${{ steps.current.outputs.TAGREL }}"

          curl -s -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_VER -> $NEW_VER\",
              \"head\": \"$BRANCH\",
              \"base\": \"main\",
              \"body\": \"Automatikus kernel frissites.\n\n- Regi verzio: \`$CUR_VER\`\n- Uj verzio: \`$NEW_VER\`\n\nEllenorizd a config diff-et merge elott.\"
            }"
          echo "PR megnyitva: $BRANCH -> main"