1
1
name : Update CARCH PKGBUILD
2
2
3
3
on :
4
- workflow_dispatch :
4
+ workflow_dispatch : # Allow manual triggering
5
5
schedule :
6
- - cron : ' 0 */12 * * *'
6
+ - cron : ' 0 */12 * * *' # Check twice a day for new releases
7
7
8
8
jobs :
9
9
update-pkgbuild :
10
10
runs-on : ubuntu-latest
11
11
container :
12
12
image : archlinux:latest
13
13
permissions :
14
- contents : write
14
+ contents : write # Needed for pushing changes
15
15
16
16
steps :
17
17
- name : Install necessary packages
18
18
run : |
19
19
pacman -Syu --noconfirm
20
- pacman -S --noconfirm git wget base-devel make pacman-contrib less
20
+ pacman -S --noconfirm git wget base-devel sudo
21
+
22
+ # Create a non-root user for building packages
23
+ - name : Setup build user
24
+ run : |
25
+ useradd -m builder
26
+ echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
27
+ mkdir -p /home/builder/work
28
+ chown -R builder:builder /home/builder
21
29
22
30
- name : Checkout pkgs repository
23
31
uses : actions/checkout@v4
24
32
with :
25
33
token : ${{ secrets.GITHUB_TOKEN }}
34
+ path : /home/builder/work/pkgs
26
35
27
- - name : Get latest release from harilvfs/carch
28
- id : latest_release
36
+ - name : Get latest release info from harilvfs/carch
29
37
run : |
38
+ cd /home/builder/work
30
39
LATEST_RELEASE=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
31
40
"https://api.github.com/repos/harilvfs/carch/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
32
41
echo "RELEASE=$LATEST_RELEASE" >> $GITHUB_ENV
33
42
echo "Latest release: $LATEST_RELEASE"
34
43
35
44
- name : Extract version number
36
- id : version
37
45
run : |
38
46
VERSION="${{ env.RELEASE }}"
39
47
VERSION="${VERSION#v}" # Remove the 'v' prefix
@@ -42,20 +50,22 @@ jobs:
42
50
43
51
- name : Download latest release tar file
44
52
run : |
53
+ cd /home/builder/work
45
54
TAR_URL="https://github.com/harilvfs/carch/archive/refs/tags/v$VERSION.tar.gz"
46
55
echo "Downloading from: $TAR_URL"
47
56
wget -q "$TAR_URL" -O "carch-$VERSION.tar.gz"
57
+ chown builder:builder "carch-$VERSION.tar.gz"
48
58
49
59
- name : Calculate SHA256 checksum
50
- id : checksum
51
60
run : |
61
+ cd /home/builder/work
52
62
NEW_CHECKSUM=$(sha256sum "carch-$VERSION.tar.gz" | awk '{print $1}')
53
63
echo "NEW_CHECKSUM=$NEW_CHECKSUM" >> $GITHUB_ENV
54
64
echo "New checksum: $NEW_CHECKSUM"
55
65
56
- - name : Check PKGBUILD
57
- id : check_pkgbuild
66
+ - name : Check PKGBUILD file
58
67
run : |
68
+ cd /home/builder/work/pkgs
59
69
CURRENT_VERSION=$(grep -P "^pkgver=.*$" carch/PKGBUILD | cut -d'=' -f2)
60
70
CURRENT_CHECKSUM=$(grep -P "^sha256sums=.*$" carch/PKGBUILD | grep -oP "'[^']*'" | tr -d "'")
61
71
@@ -70,20 +80,26 @@ jobs:
70
80
71
81
- name : Update PKGBUILD and generate SRCINFO
72
82
if : env.UPDATE_NEEDED == 'true'
73
- working-directory : carch
74
83
run : |
84
+ cd /home/builder/work/pkgs/carch
85
+
86
+ # Update the version
75
87
sed -i "s/^pkgver=.*$/pkgver=$VERSION/" PKGBUILD
76
88
89
+ # Update the checksum
77
90
sed -i "s/^sha256sums=.*$/sha256sums=('$NEW_CHECKSUM')/" PKGBUILD
78
91
79
- makepkg --printsrcinfo > .SRCINFO
92
+ # Set permissions and generate .SRCINFO as non-root user
93
+ chown -R builder:builder .
94
+ su - builder -c "cd /home/builder/work/pkgs/carch && makepkg --printsrcinfo > .SRCINFO"
80
95
81
96
echo "PKGBUILD updated with new version $VERSION and checksum $NEW_CHECKSUM"
82
97
echo "Generated .SRCINFO file"
83
98
84
99
- name : Commit and push changes
85
100
if : env.UPDATE_NEEDED == 'true'
86
101
run : |
102
+ cd /home/builder/work/pkgs
87
103
git config --local user.email "[email protected] "
88
104
git config --local user.name "GitHub Action"
89
105
git add carch/PKGBUILD carch/.SRCINFO
0 commit comments