forked from onlaj/Piano-LED-Visualizer
-
Notifications
You must be signed in to change notification settings - Fork 0
140 lines (116 loc) · 4.58 KB
/
main.yml
File metadata and controls
140 lines (116 loc) · 4.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: Build Piano LED Visualizer Image
on:
workflow_dispatch:
jobs:
build-image:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Set up QEMU
run: |
sudo apt-get update
sudo apt-get install -y qemu-user-static
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- name: Download base image
run: |
wget https://downloads.raspberrypi.com/raspios_lite_armhf/images/raspios_lite_armhf-2024-11-19/2024-11-19-raspios-bookworm-armhf-lite.img.xz
unxz 2024-11-19-raspios-bookworm-armhf-lite.img.xz
mv 2024-11-19-raspios-bookworm-armhf-lite.img raspi.img
- name: Prepare image
run: |
# Expand image by 1GB
dd if=/dev/zero bs=1G count=1 >> raspi.img
sudo losetup -fP raspi.img
LOOPDEV=$(sudo losetup -j raspi.img | cut -d: -f1)
sudo parted $LOOPDEV resizepart 2 100%
sudo e2fsck -y -f ${LOOPDEV}p2 # Added "-y" for auto-repair
sudo resize2fs ${LOOPDEV}p2
- name: Mount image
run: |
mkdir -p rootfs
sudo mount ${LOOPDEV}p2 rootfs
sudo mount ${LOOPDEV}p1 rootfs/boot
- name: Basic configuration
run: |
# Set hostname
echo "pianoledvisualizer" | sudo tee rootfs/etc/hostname
sudo sed -i 's/raspberrypi/pianoledvisualizer.local/g' rootfs/etc/hosts
# Create user
sudo chroot rootfs useradd -m -G sudo -s /bin/bash plv
echo "plv:visualizer" | sudo chroot rootfs chpasswd
# Remove pi user
sudo chroot rootfs userdel -r pi
- name: Install dependencies
run: |
sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/
sudo mount -t proc /proc rootfs/proc
sudo mount -t sysfs /sys rootfs/sys
sudo mount -o bind /dev rootfs/dev
sudo chroot rootfs /bin/bash -c " \
apt-get update && \
apt-get upgrade -y && \
apt-get install -y git wget python3-pip libopenblas-dev \
libatlas-base-dev libavahi-client-dev libasound2-dev \
libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev \
libical-dev libreadline-dev fonts-freefont-ttf \
libopenjp2-7 libtiff6 libjack0 libjack-dev autoconf \
libtool make gcc build-essential scons swig abcmidi && \
systemctl mask ssh switch-root.service && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*"
- name: Install RTP-MIDI
run: |
sudo chroot rootfs /bin/bash -c " \
cd /tmp && \
wget https://github.com/davidmoreno/rtpmidid/releases/download/v24.12/rtpmidid_24.12.2_armhf.deb && \
dpkg -i rtpmidid_24.12.2_armhf.deb && \
apt -f install -y && \
systemctl enable rtpmidid && \
rm rtpmidid_24.12.2_armhf.deb"
- name: Configure system
run: |
# Disable audio
sudo sed -i 's/dtparam=audio=on/#dtparam=audio=on/' rootfs/boot/config.txt
echo "blacklist snd_bcm2835" | sudo tee rootfs/etc/modprobe.d/snd-blacklist.conf
# Enable SPI
echo "dtparam=spi=on" | sudo tee -a rootfs/boot/config.txt
# Create autoconnect script
sudo cp -v connectall.py rootfs/usr/local/bin/connectall.py
sudo chmod +x rootfs/usr/local/bin/connectall.py
- name: Install Piano LED Visualizer
run: |
sudo chroot rootfs /bin/bash -c " \
git clone https://github.com/onlaj/Piano-LED-Visualizer /home/plv/Piano-LED-Visualizer && \
pip3 install -r /home/plv/Piano-LED-Visualizer/requirements.txt"
# Configure service
echo "[Unit]
Description=Piano LED Visualizer
After=network-online.target
Wants=network-online.target
[Install]
WantedBy=multi-user.target
[Service]
ExecStart=sudo python3 /home/plv/Piano-LED-Visualizer/visualizer.py
Restart=always
Type=simple
User=plv
Group=plv" | sudo tee rootfs/etc/systemd/system/visualizer.service
sudo chroot rootfs systemctl enable visualizer.service
- name: Clean up
run: |
sudo umount rootfs/dev
sudo umount rootfs/sys
sudo umount rootfs/proc
sudo umount rootfs/boot
sudo umount rootfs
sudo losetup -d $LOOPDEV
- name: Shrink image
run: |
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
chmod +x pishrink.sh
sudo ./pishrink.sh -z raspi.img plv.img
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: plv
path: plv.img