GPartedPlusPlus build #30
This file contains hidden or 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: GPartedPlusPlus build | |
| on: workflow_dispatch | |
| #schedule: | |
| # * is a special character in YAML so you have to quote this string | |
| #- cron: '10 00 * * *' | |
| # permissions: | |
| # contents: write | |
| env: | |
| APT: sudo apt -y -qq -o=Dpkg::Use-Pty=0 | |
| APT_CHROOT: apt -y -q -o=Dpkg::Use-Pty=0 -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold | |
| ROOT_DIR: "/tmp" | |
| ZIP_TMP: "/tmp/zip-tmp" | |
| SQUASHFS_TMP: "/tmp/squashfs-tmp" | |
| SQUASHFS_FILESYSTEM: "/tmp/zip-tmp/live/filesystem.squashfs" | |
| FS_PKGS: "/tmp/zip-tmp/live/filesystem.packages.txt" | |
| SHA256SUM_TXT: "/tmp/sha256sum_iso.txt" | |
| GPARTED_BASE_ZIP_URL: "https://pilotfiber.dl.sourceforge.net/project/gparted/gparted-live-stable/1.8.0-2/gparted-live-1.8.0-2-amd64.zip" | |
| GPARTED_CHECKSUMS: "https://gparted.org/gparted-live/stable/CHECKSUMS.TXT" | |
| GPARTED_CHECKSUMS_GPG: "https://gparted.org/gparted-live/stable/CHECKSUMS.TXT.gpg" | |
| GPARTED_GPG_KEY: "8E94C9CD163E3FB0" | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install prerequisites | |
| run: | | |
| set -xe | |
| $APT update && $APT install squashfs-tools isolinux xorriso unzip zip | |
| - name: Get GParted Live zip | |
| run: | | |
| set -xe | |
| cd $ROOT_DIR | |
| ls -al $ROOT_DIR | |
| GPARTED_BASE_FULL_FNAME=$(basename $GPARTED_BASE_ZIP_URL) | |
| GPARTED_BASE_NAME=$(basename $GPARTED_BASE_FULL_FNAME .zip) | |
| GPARTED_BASE_FPATH=$(realpath $GPARTED_BASE_FULL_FNAME) | |
| ISO_OUT_FNAME="$GPARTED_BASE_NAME-maaaaz-edition-$(date '+%Y%m%d').iso" | |
| ISO_OUT_PATH="$ROOT_DIR/$ISO_OUT_FNAME" | |
| echo "GPARTED_BASE_FULL_FNAME=$GPARTED_BASE_FULL_FNAME" >> $GITHUB_ENV | |
| echo "GPARTED_BASE_NAME=$GPARTED_BASE_NAME" >> $GITHUB_ENV | |
| echo "GPARTED_BASE_FPATH=$GPARTED_BASE_FPATH" >> $GITHUB_ENV | |
| echo "ISO_OUT_FNAME=$ISO_OUT_FNAME" >> $GITHUB_ENV | |
| echo "ISO_OUT_PATH=$ISO_OUT_PATH" >> $GITHUB_ENV | |
| wget -nv "$GPARTED_CHECKSUMS" | |
| wget -nv "$GPARTED_CHECKSUMS_GPG" | |
| gpg --keyserver hkps://keys.openpgp.org --recv-key "$GPARTED_GPG_KEY" | |
| gpg --verify CHECKSUMS.TXT.gpg CHECKSUMS.TXT | |
| time wget -nv "$GPARTED_BASE_ZIP_URL" | |
| grep -i sha256sums -A 2 CHECKSUMS.TXT | sha256sum -c --ignore-missing | |
| ls -al $GPARTED_BASE_FPATH | |
| - name: Prepare custom env | |
| run: | | |
| set -xe | |
| cd $ROOT_DIR | |
| mkdir "$ZIP_TMP" "$SQUASHFS_TMP" | |
| unzip -q "$GPARTED_BASE_FPATH" -d "$ZIP_TMP" | |
| cp "$SQUASHFS_FILESYSTEM" "$SQUASHFS_TMP" | |
| cd "$SQUASHFS_TMP" && sudo unsquashfs -n filesystem.squashfs | |
| SQUASHFS_ROOT=$(realpath ./squashfs-root) | |
| echo "SQUASHFS_ROOT=$SQUASHFS_ROOT" >> $GITHUB_ENV | |
| sudo mount --bind /proc $SQUASHFS_ROOT/proc/ | |
| sudo mount --bind /sys $SQUASHFS_ROOT/sys/ | |
| sudo mount --bind /dev $SQUASHFS_ROOT/dev/ | |
| sudo mount --bind /dev/pts $SQUASHFS_ROOT/dev/pts/ | |
| - name: Upgrade current builtin GParted packages | |
| run: | | |
| set -xe | |
| ls -al $SQUASHFS_TMP | |
| cd $SQUASHFS_TMP | |
| echo nameserver 8.8.8.8| sudo tee $SQUASHFS_ROOT/etc/resolv.conf | |
| CHROOT_PARAMS="env DEBIAN_FRONTEND=noninteractive sudo chroot $SQUASHFS_ROOT/" | |
| echo "CHROOT_PARAMS=$CHROOT_PARAMS" >> $GITHUB_ENV | |
| $CHROOT_PARAMS $APT_CHROOT update | |
| $CHROOT_PARAMS $APT_CHROOT --reinstall install libc6 | |
| #wget -nv "http://free.nchc.org.tw/debian/pool/main/l/linux/linux-libc-dev_6.5.13-1_amd64.deb" -O "$SQUASHFS_ROOT/tmp/linux-libc-dev_6.5.13-1_amd64.deb" | |
| #DEBIAN_FRONTEND=noninteractive sudo chroot $SQUASHFS_ROOT/ dpkg -i "/tmp/linux-libc-dev_6.5.13-1_amd64.deb" | |
| #$CHROOT_PARAMS dpkg -i "/tmp/linux-libc-dev_6.5.13-1_amd64.deb" | |
| $CHROOT_PARAMS $APT_CHROOT autoremove --purge xrdp | |
| #$CHROOT_PARAMS $APT_CHROOT full-upgrade | |
| - name: Customize env with additional packages | |
| run: | | |
| set -xe | |
| sudo cp "$GITHUB_WORKSPACE/_resources/customization.chroot" "$SQUASHFS_ROOT/tmp/customization.chroot" | |
| $CHROOT_PARAMS chmod o+x "/tmp/customization.chroot" | |
| $CHROOT_PARAMS "/tmp/customization.chroot" | |
| sudo rm -f "$SQUASHFS_ROOT/etc/resolv.conf" | |
| - name: List installed packages | |
| run: | | |
| set -xe | |
| ($CHROOT_PARAMS dpkg-query -W -f='${Package} ${Version} ${Installed-Size;8}\n' | sort -n | column -t) > $FS_PKGS | |
| - name: Unprep the custom env | |
| run: | | |
| set -xe | |
| cd $SQUASHFS_TMP | |
| echo "[+] findmnt before unmount" | |
| findmnt | |
| sleep 2 | |
| sudo umount $SQUASHFS_ROOT/sys/firmware/efi/efivars | |
| sudo umount $SQUASHFS_ROOT/sys/ | |
| sudo umount $SQUASHFS_ROOT/proc/ | |
| sudo umount $SQUASHFS_ROOT/dev/pts/ | |
| sudo umount $SQUASHFS_ROOT/dev/ | |
| echo "[+] findmnt after unmount" | |
| findmnt | |
| echo | |
| - name: Build custom ISO | |
| run: | | |
| set -xe | |
| sudo cp -f "$GITHUB_WORKSPACE/_resources/Gsplash.png" "$ZIP_TMP/syslinux/Gsplash.png" | |
| sudo cp -f "$GITHUB_WORKSPACE/_resources/Gsplash.png" "$ZIP_TMP/boot/grub/Gsplash.png" | |
| cd $SQUASHFS_TMP | |
| sudo mksquashfs "$SQUASHFS_ROOT" "filesystem.squashfs.new" -b 1024k -comp xz -Xbcj x86 -e boot | |
| sudo cp "filesystem.squashfs.new" "$ZIP_TMP/live/filesystem.squashfs" | |
| sudo find $ZIP_TMP -type f -exec sha256sum {} \; 1>/tmp/sha256sum.txt | |
| sudo cp -f "/tmp/sha256sum.txt" "$ZIP_TMP/sha256sum.txt" | |
| #cd $ZIP_TMP && sudo zip -r ../gparted-live.new.zip ./* | |
| cd $ZIP_TMP && xorriso -as mkisofs -R -r -J -joliet-long -l -cache-inodes -iso-level 3 -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 -A 'GParted live CD' -b syslinux/isolinux.bin -c syslinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot --efi-boot boot/grub/efi.img -isohybrid-gpt-basdat -isohybrid-apm-hfsplus ./ > "$ISO_OUT_PATH" | |
| ls -al $ISO_OUT_PATH | |
| - name: Build custom ISO | |
| run: | | |
| set -xe | |
| #SHA256SUM="$ROOT_DIR/sha256sum_iso.txt" | |
| #echo "SHA256SUM=$SHA256SUM" >> $GITHUB_ENV | |
| cd $ROOT_DIR | |
| sha256sum --tag $ISO_OUT_FNAME | tee $SHA256SUM_TXT | |
| - name: Create a new release | |
| uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b #v2.5.0 | |
| with: | |
| make_latest: true | |
| body_path: ${{ env.SHA256SUM_TXT }} | |
| name: ${{ env.ISO_OUT_FNAME }} | |
| tag_name: ${{ env.ISO_OUT_FNAME }} | |
| files: | | |
| ${{ env.ISO_OUT_PATH }} | |
| ${{ env.FS_PKGS }} |