Skip to content

Update raspberrypi.yml #6

Update raspberrypi.yml

Update raspberrypi.yml #6

Workflow file for this run

on:
push:
tags:
- 'v*'
name: Create Release
env:
CUSTOM_IMAGE_NAME: misogihagi_ubuntu
CUSTOM_IMAGE_ISO: ubuntu-misogihagi-20.04.3-desktop-amd64.iso
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: pull base image
run: curl -LO https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
- name: install essential package
run: sudo apt install -y squashfs-tools genisoimage
- name: mount base image
run: mkdir mnt && sudo mount -o loop ./ubuntu-20.04.3-desktop-amd64.iso mnt
- name: rsync
run: mkdir extract-cd && rsync --exclude=mnt/casper/filesystem.squashfs -a mnt/ extract-cd
- name: unsquash
run: sudo unsquashfs mnt/casper/filesystem.squashfs && mv squashfs-root edit
- name: copy network
run: sudo cp /etc/resolv.conf edit/etc/resolv.conf && sudo cp /etc/hosts edit/etc/
- name: bind
run: sudo mount -o bind /run/ edit/run && sudo mount --bind /dev/ edit/dev
- name: under chroot environment
run: |
cat << EOF | script -e -c 'sudo chroot edit'
sudo mount -t proc none /proc && sudo mount -t devpts none /dev/pts
export HOME=/root && export LC_ALL=C
dbus-uuidgen | sudo tee /var/lib/dbus/machine-id && sudo dpkg-divert --local --rename --add /sbin/initctl && sudo ln -s /bin/true /sbin/initctl
sudo mv /etc/apt/apt.conf.d/90_zsys_system_autosnapshot /etc/apt/apt.conf.d/90_zsys_system_autosnapshot.disabled
sudo apt upgrade -y && sudo apt update -y
echo -e "\n" | sudo apt install -y git curl ca-certificates gnupg lsb-release
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
curl https://sh.rustup.rs -sSf | sudo sh -y
mv .cargo /etc/skel
curl -OL https://go.dev/dl/go1.17.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.17.6.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
curl -Lo vscode.deb "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64 -o vscode.deb"
sudo apt-get update
echo -e "\n" | sudo apt install -y git curl nodejs docker-ce docker-ce-cli containerd.io ./vscode.deb
sudo apt clean && sudo rm -rf /tmp/* ~/.bash_history && sudo rm /etc/resolv.conf && sudo rm /var/lib/dbus/machine-id && sudo rm /sbin/initctl && sudo dpkg-divert --rename --remove /sbin/initctl
sudo umount /proc || sudo umount -lf /proc && sudo umount /dev/pts
exit
EOF
- name: chmod
run: chmod +w extract-cd/casper/filesystem.manifest
- name: renew manifest
run: sudo dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
- name: modify file
run: sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop && sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop && sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
- name: remove file
run: sudo rm extract-cd/casper/filesystem.squashfs
- name: mksquashfs
run: sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -b 4096
- name: file size
run: printf $(du -sx --block-size=1 edit | cut -f1) | sudo tee extract-cd/casper/filesystem.size
- name: md5sum
run: sudo rm md5sum.txt && find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
working-directory: ./extract-cd
- name: mkisofs
run: sudo mkisofs -D -r -V ${{ env.CUSTOM_IMAGE_NAME }} -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../${{ env.CUSTOM_IMAGE_ISO }} .
working-directory: ./extract-cd
- name: split iso
run: split -b 1G -d ${{ env.CUSTOM_IMAGE_ISO }} ${{ env.CUSTOM_IMAGE_ISO }}-
- name: Create Release
run: |
gh release create ${GITHUB_REF##*/} -t "Releases ${GITHUB_REF##*/}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Release Asset
run: |
gh release upload ${GITHUB_REF##*/} ./${{ env.CUSTOM_IMAGE_ISO }}-*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}