name: build on: workflow_dispatch: jobs: test-on-arm: name: Update OS runs-on: ubuntu-latest permissions: contents: write steps: - name: Build Raspberry Pi OS uses: pguyot/arm-runner-action@v2 id: build_image env: INKY_INITAL_PASSWORD: ${{ secrets.INKY_INITAL_PASSWORD }} OPENWEATHERMAP_API_KEY: ${{ secrets.OPENWEATHERMAP_API_KEY }} SAMPLE_ICAL_URL: ${{ secrets.SAMPLE_ICAL_URL }} TEST_ICAL_URL: ${{ secrets.TEST_ICAL_URL }} TODOIST_API_KEY: ${{ secrets.TODOIST_API_KEY }} TINDIE_API_KEY: ${{ secrets.TINDIE_API_KEY }} TINDIE_USERNAME: ${{ secrets.TINDIE_USERNAME }} with: # Set the base_image to the desired Raspberry Pi OS version base_image: https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2024-03-15/2024-03-15-raspios-bookworm-armhf-lite.img.xz image_additional_mb: 3584 # enlarge free space to 3.5 GB optimize_image: true commands: | cd /home sudo useradd -m -p "$(openssl passwd -1 $INKY_INITAL_PASSWORD)" inky sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi inky sudo su inky echo $HOME # get kernel info uname -srm cd /home/inky sudo apt-get update -y # sudo apt-get dist-upgrade -y sudo apt-get install -y python3-pip sudo apt-get install git zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python3-dev scons libssl-dev python3-venv python3-pip git libfreetype6-dev wkhtmltopdf libopenblas-dev libxml2-dev libxslt-dev python-dev-is-python3 -y # #334 & #335 git clone https://github.com/WiringPi/WiringPi cd WiringPi ./build cd .. echo $PWD && ls git clone https://github.com/aceinnolab/Inkycal cd Inkycal python3 -m venv venv . venv/bin/activate python -m pip install --upgrade pip pip install wheel pip install -e ./ pip install RPi.GPIO==0.7.1 spidev==3.5 gpiozero==2.0 wget https://raw.githubusercontent.com/aceinnolab/Inkycal/assets/tests/settings.json pip install pytest python -m pytest # install deps for 12.48" display wget https://github.com/aceinnolab/Inkycal/raw/assets/tests/bcm2835-1.71.tar tar -xf bcm2835-1.71.tar cd bcm2835-1.71/ sudo ./configure && sudo make && sudo make check && sudo make install cd .. echo $CWD # increase swap-size sudo dphys-swapfile swapoff sudo sed -i -E '/^CONF_SWAPSIZE=/s/=.*/=512/' /etc/dphys-swapfile sudo dphys-swapfile setup sudo dphys-swapfile swapon # enable SPI sudo sed -i s/#dtparam=spi=on/dtparam=spi=on/ /boot/config.txt # enable inkycal start at boot sudo -u inky bash -c 'echo "@reboot sleep 60 && cd /home/inky/Inkycal && venv/bin/python inky_run.py &" | crontab -' sudo chown inky:crontab /var/spool/cron/crontabs/inky # fix permissions of Inkycal folder recursively sudo chown -R inky:inky /home/inky/Inkycal # make all users require a password for sudo commands (improves security) # temporarily disabled to allow pisugar support # echo 'ALL ALL=(ALL:ALL) PASSWD: ALL' | sudo tee -a /etc/sudoers.d/010_require_sudo_password # allow some time to unmount sleep 10 - name: Compress the release image run: | # allow some time to unmount sleep 10 mv ${{ steps.build_image.outputs.image }} InkycalOS_Lite.img xz -0 -T 0 -v InkycalOS_Lite.img - name: Get latest release version run: | export tag="$(curl -s https://api.github.com/repos/aceinnolab/Inkycal/releases/latest | jq -r '.tag_name')" echo "version=${tag}" >> $GITHUB_ENV - name: Upload Raspberry Pi OS Image if: success() # Only upload the image if the tests were successful uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.version }} files: InkycalOS_Lite.img.xz