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