Select Git revision
.gitlab-ci.yml 4.42 KiB
stages:
- build
build-zynthbox-image-armhf:
tags:
- arm64
image: ubuntu:22.04@sha256:cb6ce0db39adc371523a22a0031aa978ad3efbb13a279b7608010c82f8ab214e
stage: build
# Run pipeline only via Run Pipeline button via web
rules:
- if: $CI_PIPELINE_SOURCE == "web"
script:
- set -x
- image_name="zynthbox_rpi4_bullseye_$(date "+%F_%H%M").img"
- image_name_miko="zynthbox_miko_bullseye_$(date "+%F_%H%M").img"
- log_file_name="$image_name.build.log"
# Ensuring key security
- echo "Ensuring key security"
- chmod 600 ${SSH_KEY_PUB_ZYNTHBOX_IO}
# Update and install dependencies
- echo "# Update and install dependencies"
- apt-get update
- apt-get install -y coreutils p7zip-full qemu-user-static sudo git wget python3 lsof fdisk xz-utils openssh-client
# Clone repositories required to generate image
- echo "# Clone repositories required to generate image"
- git clone https://github.com/zynthbox/CustomPiOS.git
- git clone https://github.com/zynthbox/ZynthianOS.git -b dev-bullseye
# Setup Zynthbox Repo sourceline
- echo "# Setup Zynthbox Repo sourceline"
- echo "ZYNTHIANOS_ZYNTHBOX_REPO_KEY_URL='https://repo.zynthbox.io/repo_key.pub'" >> ZynthianOS/src/modules/zynthianos/config
- echo "ZYNTHIANOS_ZYNTHBOX_REPO_SOURCELINE='deb http://repo.zynthbox.io/testing-bullseye bullseye main'" >> ZynthianOS/src/modules/zynthianos/config
# Download prebuilt realtime kernel
- echo "# Download prebuilt realtime kernel"
# - wget "http://unofficialpi.org/Distros/RealtimePi/2021-06-15_2021-05-07-realtimepi-buster-armhf-lite-0.5.0.zip" -P ./ZynthianOS/src/image
# - wget "https://github.com/zynthbox/dependencies/releases/download/v0.5/2023-01-11_2020-02-13-realtimepi-buster-armhf-lite-kernel_5.15.65-llat-v7l+_0.6.0.zip" -P ./ZynthianOS/src/image
- wget "http://unofficialpi.org/Distros/RealtimePi/nightly/2022-03-07_2022-01-28-realtimepi-bullseye-armhf-lite-0.6.0.zip" -P ./ZynthianOS/src/image
# Build rpi4 image
- echo "# Build rpi4 image"
- cd ./ZynthianOS/src
- ../../CustomPiOS/src/update-custompios-paths
- bash -x ./build_dist
- mv ./workspace/*.img ./workspace/$image_name
- echo "Image Size -> $(du -h ./workspace/$image_name)"
### Compress rpi4 image
## - echo "# Compress image"
## - xz -kzv --threads=12 --memory=100% ./workspace/$image_name
## - echo "Compressed rpi4 Image Size -> $(du -h ./workspace/$image_name.xz)"
### Push compressed rpi4 image to pub.zynthbox.io
##- echo "# Push compressed rpi4 image to pub.zynthbox.io"
##- scp -P 3138 -i "$SSH_KEY_PUB_ZYNTHBOX_IO" -o "StrictHostKeyChecking no" "./workspace/$image_name.xz" zynthbox@pub.zynthbox.io:/mnt/pub_zynthbox_io_volume/ISOs/.ci-testing-isos/
# Build miko image
- echo "# Build Miko image"
- cp -v ./workspace/$image_name ./workspace/$image_name_miko
- fdisk -lu ./workspace/$image_name_miko
- root_start=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}2 | awk '{print $2}')
- root_size=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}2 | awk '{print $4}')
- boot_start=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}1 | awk '{print $2}')
- boot_size=$(fdisk -lu ./workspace/$image_name_miko | grep ${image_name_miko}1 | awk '{print $4}')
- mountdir=$(mktemp -d)
- sudo mount -o loop,offset=$(($root_start * 512)),sizelimit=$(($root_size * 512)) ./workspace/$image_name_miko $mountdir
- sudo mount -o loop,offset=$(($boot_start * 512)),sizelimit=$(($boot_size * 512)) ./workspace/$image_name_miko $mountdir/boot
- sudo mount --bind /dev $mountdir/dev