Skip to content

12

12 #31

name: Build Arch Repository
on:
workflow_dispatch:
push:
branches: [ main ]
env:
REPO_NAME: qcom
BUILD_DIR: ./build
REPO_DIR: ./repo
jobs:
build-packages:
name: Build Package (${{ matrix.package }})
runs-on: ubuntu-22.04-arm
container: danhunsaker/archlinuxarm
env:
BUILD_ALARM_SH: 'sudo su - alarm -c'
strategy:
matrix:
package: [
'q6voiced',
'soc-qcom-sdm845',
'persistent-mac',
# 'linux-firmware',
'qbootctl',
'bootmac',
'alsa-ucm-oneplus',
'device-oneplus-fajita',
'device-lenovo-q706f',
'mkbootimg',
# 'linux-firmware-lenovo-sm8250',
# 'linux-sdm845',
# 'linux-sm8250',
'sensors/iio-sensor-proxy',
'sensors/hexagonrpcd',
'sensors/libssc',
'tinyalsa-git'
]
steps:
- name: Install dependencies
run: |
curl -L -o /etc/pacman.conf https://github.com/silime/ArchlinuxARM-qcom-aarch64/raw/main/pacman.conf
pacman-key --init && pacman-key --populate archlinuxarm
pacman-key --recv-keys F60FD4C6D426DAB6
pacman-key --lsign F60FD4C6D426DAB6
pacman -Syyu --noconfirm --ask=4 arch-install-scripts cloud-guest-utils sudo binutils fakeroot base-devel git bc distcc ccache meson libqmi protobuf-c glib2
useradd -m alarm
passwd -d alarm
usermod -aG wheel alarm
echo 'alarm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
mkdir /home/alarm/ -p
chown alarm /home/alarm/
- name: Setup GPG
run: |
# Import the GPG private key
echo 1
${{ env.BUILD_ALARM_SH }} 'echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --import --passphrase "${{ secrets.GPG_PASSPHRASE }}" --pinentry-mode loopback'
# Configure the GPG agent to use the passphrase
echo 2
${{ env.BUILD_ALARM_SH }} 'echo "default-cache-ttl 18000" > ~/.gnupg/gpg-agent.conf'
echo 3
${{ env.BUILD_ALARM_SH }} 'echo "max-cache-ttl 18000" >> ~/.gnupg/gpg-agent.conf'
echo 4
${{ env.BUILD_ALARM_SH }} 'gpgconf --reload gpg-agent'
echo 5
- name: Checkout repository
uses: actions/checkout@v4
- name: Build package
working-directory: ${{ github.workspace }}/${{ matrix.package }}
run: |
# 构建参数配置
export MAKEPKG_CONF="/etc/makepkg.conf"
echo 'BUILDENV=(!distcc color !ccache check !sign)' | sudo tee -a $MAKEPKG_CONF
# 清理并构建
sudo chown alarm:alarm ./
echo RELEASE=$(echo ${{ matrix.package }} | sed 's/\//_/g')
echo RELEASE=$(echo ${{ matrix.package }} | sed 's/\//_/g') >> $GITHUB_ENV
cp ./* /home/alarm/
${{ env.BUILD_ALARM_SH }} '(makepkg --cleanbuild --syncdeps --noconfirm)'
- name: Sign package
working-directory: ${{ github.workspace }}/${{ matrix.package }}
run: |
${{ env.BUILD_ALARM_SH }} '
for pkg in /home/alarm/*.pkg.tar.*; do
[[ -f "$pkg" ]] || continue
echo "Signing $pkg ..."
gpg --batch --yes --pinentry-mode loopback \
--passphrase ${{ secrets.GPG_PASSPHRASE }}\
--detach-sign --no-armor "$pkg"
done'
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ env.RELEASE }}-pkg
path: |
/home/alarm/*.pkg.tar.*
/home/alarm/*.sig
create-repository:
name: Create Repository
runs-on: ubuntu-22.04-arm
needs: build-packages
container: danhunsaker/archlinuxarm
env:
BUILD_ALARM_SH: 'sudo su - alarm -c'
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ${{ env.BUILD_DIR }}
- name: Setup repository directory
run: |
mkdir -p ${{ env.REPO_DIR }}
pacman -Syyu --noconfirm --ask=4 arch-install-scripts cloud-guest-utils sudo binutils fakeroot base-devel git bc distcc
useradd -m alarm
passwd -d alarm
usermod -aG wheel alarm
echo 'alarm ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
mkdir /home/alarm/ -p
chown alarm /home/alarm/
find ./ -mindepth 2 -name '*.pkg.tar.*' -exec cp {} ${{ env.REPO_DIR }} \;
find ./ -mindepth 2 -name '*.sig' -exec cp {} ${{ env.REPO_DIR }} \;
- name: Setup GPG
run: |
# Import the GPG private key
${{ env.BUILD_ALARM_SH }} 'echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --import --passphrase "${{ secrets.GPG_PASSPHRASE }}" --pinentry-mode loopback'
# Configure the GPG agent to use the passphrase
${{ env.BUILD_ALARM_SH }} 'echo "default-cache-ttl 18000" > ~/.gnupg/gpg-agent.conf'
${{ env.BUILD_ALARM_SH }} 'echo "max-cache-ttl 18000" >> ~/.gnupg/gpg-agent.conf'
${{ env.BUILD_ALARM_SH }} 'gpgconf --reload gpg-agent'
- name: Generate repository database
run: |
cd ${{ env.REPO_DIR }}
repo-add -s -v -n ${{ env.REPO_NAME }}.db.tar.xz *.pkg.tar.xz
- name: Upload repository
uses: actions/upload-artifact@v4
with:
name: ${{ env.REPO_NAME }}
path: ./*
# - name: create release
# uses: softprops/action-gh-release@v2
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# body: ${{ env.RELEASE }}
# tag_name: ${{ env.RELEASE }}
# draft: false
# prerelease: false
# files: |
# ${{ env.REPO_DIR }}