Skip to content

Commit 1beac2a

Browse files
committed
add: ci: build-packages
1 parent ad30e80 commit 1beac2a

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
name: Build Arch Repository
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches: [ main ]
7+
8+
env:
9+
REPO_NAME: qcom
10+
BUILD_DIR: ${{ github.workspace }}/build
11+
REPO_DIR: ${{ github.workspace }}/repo
12+
13+
jobs:
14+
build-packages:
15+
name: Build Package (${{ matrix.package }})
16+
runs-on: ubuntu-22.04-arm
17+
container: danhunsaker/archlinuxarm
18+
strategy:
19+
matrix:
20+
package: [
21+
'q6voiced',
22+
'soc-qcom-sdm845',
23+
'persistent-mac',
24+
'linux-firmware',
25+
'qbootctl',
26+
'bootmac',
27+
'alsa-ucm-oneplus',
28+
'device-oneplus-fajita',
29+
'device-lenovo-q706f',
30+
'mkbootimg',
31+
'linux-firmware-lenovo-sm8250',
32+
'linux-sdm845',
33+
'linux-sm8250',
34+
'sensors/iio-sensor-proxy',
35+
'sensors/hexagonrpcd',
36+
'sensors/libssc'
37+
]
38+
39+
steps:
40+
41+
- name: Install dependencies
42+
run: |
43+
curl -L -o /etc/pacman.conf https://github.com/silime/ArchlinuxARM-qcom-aarch64/raw/main/pacman.conf
44+
pacman-key --init && pacman-key --populate archlinuxarm
45+
pacman-key --recv-keys F60FD4C6D426DAB6
46+
pacman-key --lsign F60FD4C6D426DAB6
47+
pacman -Syyu --noconfirm --ask=4 arch-install-scripts cloud-guest-utils sudo binutils fakeroot base-devel git
48+
useradd -m alarm
49+
passwd -d alarm
50+
usermod -aG wheel alarm
51+
echo 'alarm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
52+
53+
- name: Checkout repository
54+
uses: actions/checkout@v4
55+
56+
- name: Build package
57+
working-directory: ${{ github.workspace }}/${{ matrix.package }}
58+
run: |
59+
# 构建参数配置
60+
export MAKEPKG_CONF="/etc/makepkg.conf"
61+
echo 'BUILDENV=(!distcc color !ccache check !sign)' | sudo tee -a $MAKEPKG_CONF
62+
# 清理并构建
63+
sudo chown alarm:alarm ./
64+
sudo -u alarm -E makepkg --cleanbuild --syncdeps --noconfirm
65+
66+
- name: Sign package
67+
env:
68+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
69+
working-directory: ${{ github.workspace }}/${{ matrix.package }}
70+
run: |
71+
# Import the GPG private key
72+
${{ env.BUILD_ALARM_SH }} 'echo "${{ secrets.GPG_PRIVATE_KEY }}" > private_key.asc'
73+
${{ env.BUILD_ALARM_SH }} 'gpg --import private_key.asc --passphrase "${{ secrets.GPG_PASSPHRASE }}" --pinentry-mode loopback'
74+
${{ env.BUILD_ALARM_SH }} 'rm private_key.asc'
75+
# Configure the GPG agent to use the passphrase
76+
${{ env.BUILD_ALARM_SH }} 'echo "default-cache-ttl 18000" > ~/.gnupg/gpg-agent.conf'
77+
${{ env.BUILD_ALARM_SH }} 'echo "max-cache-ttl 18000" >> ~/.gnupg/gpg-agent.conf'
78+
${{ env.BUILD_ALARM_SH }} 'gpgconf --reload gpg-agent'
79+
for pkg in *.pkg.tar.*; do
80+
[[ -f "$pkg" ]] || continue
81+
echo "Signing $pkg ..."
82+
gpg --batch --yes --pinentry-mode loopback \
83+
--passphrase "$GPG_PASSPHRASE" \
84+
--detach-sign --no-armor "$pkg"
85+
done
86+
87+
- name: Upload artifacts
88+
uses: actions/upload-artifact@v4
89+
with:
90+
name: ${{ matrix.package }}-pkg
91+
path: |
92+
${{ github.workspace }}/${{ matrix.package }}/*.pkg.tar.*
93+
${{ github.workspace }}/${{ matrix.package }}/*.sig
94+
95+
create-repository:
96+
name: Create Repository
97+
runs-on: ubuntu-22.04-arm
98+
needs: build-packages
99+
steps:
100+
- name: Download all artifacts
101+
uses: actions/download-artifact@v4
102+
with:
103+
path: ${{ env.BUILD_DIR }}
104+
105+
- name: Setup repository directory
106+
run: |
107+
mkdir -p ${{ env.REPO_DIR }}
108+
find ${{ env.BUILD_DIR }} -name '*.pkg.tar.*' -exec cp {} ${{ env.REPO_DIR }} \;
109+
find ${{ env.BUILD_DIR }} -name '*.sig' -exec cp {} ${{ env.REPO_DIR }} \;
110+
111+
- name: Generate repository database
112+
working-directory: ${{ env.REPO_DIR }}
113+
run: |
114+
repo-add -s -v ${{ env.REPO_NAME }}.db.tar.gz *.pkg.tar.zst
115+
ln -s ${{ env.REPO_NAME }}.db.tar.gz ${{ env.REPO_NAME }}.db
116+
ln -s ${{ env.REPO_NAME }}.files.tar.gz ${{ env.REPO_NAME }}.files
117+
118+
- name: Upload repository
119+
uses: actions/upload-artifact@v4
120+
with:
121+
name: ${{ env.REPO_NAME }}
122+
path: ${{ env.REPO_DIR }}/*
123+
124+
# - name: Deploy to GitHub Pages
125+
# if: github.ref == 'refs/heads/main'
126+
# uses: peaceiris/actions-gh-pages@v3
127+
# with:
128+
# github_token: ${{ secrets.GITHUB_TOKEN }}
129+
# publish_dir: ${{ env.REPO_DIR }}

0 commit comments

Comments
 (0)