ci: debug why final image does not contain root partition #39
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 Pi-DJ OS | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
# TODO: configure a cache for the apt packages that are downloaded during the build. | |
# Copilot generated the following code, but I'm not sure yet if it'll work. | |
# - name: Cache apt packages | |
# uses: actions/cache@v2 | |
# with: | |
# path: /var/cache/apt | |
# key: ${{ runner.os }}-apt-${{ hashFiles('**/apt.txt') }} | |
# restore-keys: | | |
# ${{ runner.os }}-apt- | |
- uses: pguyot/arm-runner-action@v2 | |
id: build_image | |
with: | |
base_image: dietpi:rpi_armv8_bullseye | |
cpu: cortex-a53 | |
image_additional_mb: 338 # produces a total disk image size of about 1024 MiB | |
optimize_image: false | |
commands: | | |
set +x | |
echo | |
echo ">--------------------------------------------------------------------------------------------------<" | |
echo "> Building Pi-DJ " | |
echo ">--------------------------------------------------------------------------------------------------<" | |
echo | |
./dietpi/build.sh | |
# TODO: for some reason, the resulting image only has one partition, namely the boot partition. | |
# TODO: There's no secondary ext4 partition... | |
# Seems to be because of an error during resizing the rootfs partition: https://github.com/pguyot/arm-runner-action/issues/87 | |
loopdev="/dev/loop3" | |
rootdev=$(ls "${loopdev}"*${rootfs_partnum}) | |
rootfs_partnum=2 | |
rootfs_blocksize=$(tune2fs -l ${rootdev} | grep "^Block size" | awk '{print $NF}') | |
rootfs_blockcount=$(tune2fs -l ${rootdev} | grep "^Block count" | awk '{print $NF}') | |
rootfs_partstart=$(parted -m --script "${loopdev}" unit B print | grep "^${rootfs_partnum}:" | awk -F ":" '{print $2}' | tr -d 'B') | |
rootfs_partsize=$((${rootfs_blockcount} * ${rootfs_blocksize})) | |
rootfs_partend=$((${rootfs_partstart} + ${rootfs_partsize})) | |
echo "----------------------------" | |
echo "Full tune2fs output" | |
echo "----------------------------" | |
tune2fs -l | |
echo "----------------------------" | |
echo "----------------------------" | |
echo "Rootfs: | |
echo " block size: ${rootfs_blocksize}" | |
echo " block count: ${rootfs_blockcount}" | |
echo " part start: ${rootfs_partstart}" | |
echo " part size: ${rootfs_partsize}" | |
echo " part end: ${rootfs_partend}" | |
echo "----------------------------" | |
df -h | |
echo | |
echo ">--------------------------------------------------------------------------------------------------<" | |
echo "> Done! " | |
echo ">--------------------------------------------------------------------------------------------------<" | |
echo | |
- name: Compress the release image | |
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/arm-runner' | |
run: | | |
mv ${{ steps.build_image.outputs.image }} pi-dj-${{ github.ref_name }}.img | |
xz -0 -T 0 -v pi-dj-${{ github.ref_name }}.img | |
- name: Upload release image | |
uses: actions/upload-artifact@v2 | |
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/arm-runner' | |
with: | |
name: pi-dj-${{ github.ref_name }}.img.xz | |
path: pi-dj-${{ github.ref_name }}.img.xz | |
- name: Create GitHub Release | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
prerelease: true | |
# body: "" # TODO | |
files: | | |
# TODO: update files after building | |
Release.txt | |
LICENSE |