Build nightly images #203
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build nightly images | |
on: | |
push: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 0 * * 5' # Run every friday at midnight | |
jobs: | |
build-image: | |
strategy: | |
matrix: | |
version: ["next", "v6.6.1"] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out build configurations | |
uses: actions/checkout@v4 | |
- name: Substitute placeholders in configs | |
run: | | |
#sudo apt update | |
#sudo apt-get install -y gcc-aarch64-linux-gnu | |
#sudo apt-get install -y binutils-aarch64-linux-gnu | |
find . -type f -name "*.cfg" -exec sed -i "s|HOME|$(echo $HOME)|;s|NPROC|$(nproc)|" {} + | |
echo "KERNEL_BRANCH=$DEFAULT_BRANCH" >> $GITHUB_ENV | |
- name: Install pmbootstrap from git | |
run: | | |
git clone --depth=1 https://gitlab.com/postmarketOS/pmbootstrap.git | |
#py3-dt-schema only avail for edge channel | |
sed -i '/py3-dt-schema/d' pmbootstrap/helpers/envkernel.sh | |
mkdir -p ~/.local/bin | |
ln -s "$PWD/pmbootstrap/pmbootstrap.py" ~/.local/bin/pmbootstrap | |
pmbootstrap --version | |
- name: Set up pmaports | |
run: | | |
echo -e '\nedge\nfairphone\nfp4\n\n\nphosh\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' | pmbootstrap init || true | |
# Since v23.06 do not have testing folder, create it. | |
mkdir -p ~/.local/var/pmbootstrap/cache_git/pmaports/device/testing | |
cd ~/.local/var/pmbootstrap/cache_git/pmaports | |
echo "merging local pmaport device files to upstream aport...." | |
git config user.name "Your Name" | |
git config user.email "[email protected]" | |
git remote add 99degree https://github.com/99degree/pmaports.git | |
git fetch origin master | |
git fetch 99degree next | |
#git fetch 99degree v23.06 | |
#Currently edge channel is not working... | |
git checkout origin/master -f | |
git merge -m "merge upstreaam master with local changes" 99degree/next | |
#git checkout 99degree/v23.06 -f | |
git clean -fdx | |
- name: Choose any SM7125 device in pmbootstrap to build kernel | |
run: | | |
cp xiaomi-miatoll.cfg ~/.config/pmbootstrap.cfg | |
- name: Clone kernel sources | |
run: | | |
git clone https://github.com/99degree/linux.git --single-branch --branch ${{ matrix.version }} --depth 1 | |
- name: Compile kernel with envkernel | |
run: | | |
# there are many intermediate file generated and deleted by gcc, | |
# use tmpfs to hold and speed up the process. | |
# in case pmbootstrap or envkernel.sh have such thing this hack can removed. | |
# sounds like running mount non-root not allowed | |
# unshare is not working as well | |
# unshare -m | |
# mount -t tmpfs none ~/.local/var/pmbootstrap/chroot_native/tmp | |
# mount -t tmpfs none /tmp | |
cd linux | |
shopt -s expand_aliases | |
source ../pmbootstrap/helpers/envkernel.sh | |
# fetch local config | |
git fetch origin config | |
git branch config FETCH_HEAD | |
git checkout config -- arch/arm64/configs/sm71xx-xiaomi.config | |
# apply local config | |
make defconfig sm71xx-xiaomi.config | |
# make it | |
make -j$(nproc) | |
#to failsafe for private build... | |
pmbootstrap build --envkernel linux-postmarketos-qcom-sm7125 | |
- name: Create artifact directory | |
run: | | |
mkdir out | |
mkdir out_raw | |
- name: Build xiaomi-miatoll | |
run: | | |
#cp xiaomi-miatoll.cfg ~/.config/pmbootstrap.cfg | |
#pmbootstrap config boot_size 256 | |
pmbootstrap update --non-existing | |
pmbootstrap build adbd-linux | |
pmbootstrap build firmware-xiaomi-miatoll | |
pmbootstrap chroot apk add qcam | |
pmbootstrap -v install --password 147147 --no-sparse --split | |
#pmbootstrap chroot apk add qcam | |
pmbootstrap export out_raw/ | |
ls -la out_raw/ | |
cp -R -u -p -L out_raw/* out/ | true | |
# pmbootstrap export do not work atm, cp manually | |
ls -la $HOME/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/* | |
cp $HOME/.local/var/pmbootstrap/chroot_native/home/pmos/rootfs/* out/ | |
# zip them all | |
xz -T0 -9e -v out/*.img | |
ls -la out/ | |
echo -e "n\nn\ny\n" | pmbootstrap zap | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: xiaomi-miatoll-${{ matrix.version }} | |
path: out/* | |
retention-days: 7 |