115 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
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
 | 
						|
          # note: version 2023-12-11 seems to have issues with the kernel and gpio
 | 
						|
          base_image: https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2023-05-03/2023-05-03-raspios-bullseye-armhf-lite.img.xz
 | 
						|
          image_additional_mb: 3072 # enlarge free space to 3 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
 | 
						|
            # temporarily disabled due to unmounting issues
 | 
						|
            # 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
 |