Skip to content

GPartedPlusPlus build #30

GPartedPlusPlus build

GPartedPlusPlus build #30

Workflow file for this run

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 }}