···
- name: Checkout repository
uses: actions/checkout@v3
16
-
- name: Create custom stage
18
-
# Create custom stage directory
19
-
mkdir -p camera-stage
21
-
# Create packages list
22
-
cat << EOF > camera-stage/00-packages
16
+
- name: Modify Raspberry Pi OS Image
17
+
uses: dtcooper/rpi-image-modifier@v1
20
+
base-image-url: https://downloads.raspberrypi.org/raspios_lite_armhf_latest
21
+
image-path: raspios-camera-ssh-usb.img
22
+
compress-with-xz: true
24
+
mount-repository: true
26
+
# Set locale and timezone
27
+
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
29
+
update-locale LANG=en_US.UTF-8
30
+
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
27
-
# Create setup script
28
-
cat << 'EOF' > camera-stage/01-run-chroot.sh
32
+
# Create inky user first
33
+
useradd -m -s /bin/bash -G sudo,adm,dialout,cdrom,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi inky
34
+
echo "inky:inkycamera" | chpasswd
32
-
useradd -m -s /bin/bash -G sudo,adm,dialout,cdrom,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi inky
33
-
echo "inky:inkycamera" | chpasswd
37
+
echo "inky" > /etc/hostname
38
+
sed -i 's/raspberrypi/inky/' /etc/hosts
36
-
cp /tmp/camera_server.py /home/inky/
37
-
cp /tmp/camera.service /etc/systemd/system/
40
+
# Now copy camera files since /home/inky exists
41
+
cp -v /mounted-github-repo/src/camera_server.py /home/inky/camera_server.py
42
+
cp -v /mounted-github-repo/src/camera.service /etc/systemd/system/camera.service
40
-
chown -R inky:inky /home/inky
45
+
chown -R inky:inky /home/inky
43
-
systemctl enable camera.service
45
-
chmod +x camera-stage/01-run-chroot.sh
47
+
# Configure SSH over USB
48
+
echo "dtoverlay=dwc2" >> /boot/config.txt
49
+
sed -i 's/rootwait/rootwait modules-load=dwc2,g_ether/' /boot/cmdline.txt
47
-
# Create copy files script
48
-
mkdir -p camera-stage/files
49
-
cp ./src/camera_server.py camera-stage/files/
50
-
cp ./src/camera.service camera-stage/files/
52
+
# Create setup script
53
+
cat << 'EEOF' > /home/inky/setup.sh
55
+
sudo systemctl daemon-reload
56
+
sudo systemctl enable camera.service
57
+
sudo systemctl start camera.service
59
+
chmod +x /home/inky/setup.sh
52
-
cat << 'EOF' > camera-stage/02-run.sh
54
-
cp files/camera_server.py "${ROOTFS_DIR}/tmp/"
55
-
cp files/camera.service "${ROOTFS_DIR}/tmp/"
57
-
chmod +x camera-stage/02-run.sh
61
+
# Create and configure rc.local
62
+
cat << 'EOF' > /etc/rc.local
67
+
chmod +x /etc/rc.local
60
-
uses: usimd/pi-gen-action@v1
62
-
image-name: raspios-camera-ssh-usb
63
-
stage-list: stage0 stage1 stage2 ./camera-stage
67
-
password: inkycamera
69
+
# Install required packages
71
+
apt-get install -y python3-picamera2 python3-websockets
- name: Upload image as artifact
uses: actions/upload-artifact@v4
name: raspberry-pi-camera-image
74
-
path: pi-gen/deploy/*.img.xz
78
+
path: ${{ steps.create-image.outputs.image-path }}
- name: Upload Release Asset
uses: softprops/action-gh-release@v1
79
-
files: pi-gen/deploy/*.img.xz
83
+
files: ${{ steps.create-image.outputs.image-path }}
81
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
85
+
GITHUB_TOKEN: ${{ secrets.PERSONAL_GITHUB_TOKEN }}