Skip to content

Build

Build #59

Workflow file for this run

name: Build
on:
workflow_dispatch:
inputs:
device:
description: "Device"
required: true
default: Raspberry-Pi-5:64-bit
type: choice
options:
- Raspberry-Pi-5:64-bit
- Raspberry-Pi-5:32-bit
- Raspberry-Pi-4:64-bit
- Raspberry-Pi-4:32-bit
distribution:
description: "Distribution"
required: true
default: raspbian
type: choice
options:
- raspbian
- ubuntu
host_name:
description: "Hostname"
default: raspberrypi
required: true
user:
description: "Username"
required: true
default: pi
password:
description: "Password"
required: true
default: raspberrypi
wifi_cc:
description: "WiFi Country Code"
required: true
default: "US"
type: choice
options:
- US
- GB
- DE
- FR
- IT
- ES
- CA
- AU
- JP
- CN
- KR
- TW
- SG
- IN
- BR
- RU
- ZA
- SA
- AE
- EG
- IL
- TR
- ID
- TH
- VN
- PH
- MY
- MX
- AR
- CL
- CO
- PE
- UY
- EC
- BO
- PY
- CR
- PA
- GT
- HN
- SV
- NI
- DO
- JM
- HT
- CU
- VE
wifi_ssid:
description: "Additional Network SSID"
required: false
wifi_password:
description: "Additional Network Password"
required: false
wpa_ssid:
description: "Access Point SSID"
required: true
default: RPiAccessPoint
wpa_password:
description: "Access Point Password"
required: true
default: raspberrypi
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check secrets and inputs
run: |
# Assign inputs to variables
PASSWORD="${{ github.event.inputs.password }}"
WPA_PASSWORD="${{ github.event.inputs.wpa_password }}"
WIFI_SSID="${{ github.event.inputs.wifi_ssid }}"
WIFI_PASSWORD="${{ github.event.inputs.wifi_password }}"
EMAIL_ADDRESS="${{ secrets.EMAIL_ADDRESS }}"
ENTNETWORK_SSID="${{ secrets.ENTNETWORK_SSID }}"
ENTNETWORK_IDENTITY="${{ secrets.ENTNETWORK_IDENTITY }}"
ENTNETWORK_PRIORITY="${{ secrets.ENTNETWORK_PRIORITY }}"
ENTNETWORK_PASSWORD="${{ secrets.ENTNETWORK_PASSWORD }}"
SMTP_SERVER="${{ secrets.SMTP_SERVER }}"
SMTP_USERNAME="${{ secrets.SMTP_USERNAME }}"
SMTP_PASSWORD="${{ secrets.SMTP_PASSWORD }}"
# Check if EMAIL_ADDRESS secret is set
if [[ -z "$EMAIL_ADDRESS" ]]; then
echo "EMAIL_ADDRESS secret is not set, please refer to the README.md for more information. Exiting."
exit 1
fi
# Check if SMTP_SERVER, SMTP_USERNAME, and SMTP_PASSWORD secrets are set
if [[ -z "$SMTP_SERVER" || -z "$SMTP_USERNAME" || -z "$SMTP_PASSWORD" ]]; then
echo "SMTP_SERVER, SMTP_USERNAME, and SMTP_PASSWORD secrets are not set, please refer to the README.md for more information. Exiting."
exit 1
fi
# Check required inputs and secrets
if [[ (-z "$WIFI_SSID" || -z "$WIFI_PASSWORD") && ( -z "$ENTNETWORK_SSID" || -z "$ENTNETWORK_IDENTITY" || -z "$ENTNETWORK_PASSWORD" ) ]]; then
echo "Please ensure that all required secrets (ENTNETWORK_SSID, ENTNETWORK_IDENTITY, and ENTNETWORK_PASSWORD) are set for the enterprise network. If you do not want to connect to an enterprise network, please provide information for the home network. Exiting."
exit 1
fi
# Correctly validate password length
if [[ ${#PASSWORD} -lt 8 ]]; then
echo "Password must be at least 8 characters long. Exiting."
exit 1
fi
if [[ ${#WPA_PASSWORD} -lt 8 ]]; then
echo "Access Point password must be at least 8 characters long. Exiting."
exit 1
fi
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Write env variables
run: |
cat <<EOF > $(dirname main.Pifile)/.env
DEVICE="${{ github.event.inputs.device }}"
DISTRIBUTION="${{ github.event.inputs.distribution }}"
HOSTNAME="${{ github.event.inputs.host_name }}"
USER="${{ github.event.inputs.user }}"
USERPASSWORD="${{ github.event.inputs.password }}"
ENTNETWORK_SSID="${{ secrets.ENTNETWORK_SSID }}"
ENTNETWORK_PRIORITY="${{ secrets.ENTNETWORK_PRIORITY }}"
ENTNETWORK_IDENTITY="${{ secrets.ENTNETWORK_IDENTITY }}"
ENTNETWORK_PASSWORD="${{ secrets.ENTNETWORK_PASSWORD }}"
WIFI_CC="${{ github.event.inputs.wifi_cc }}"
HOMENETWORK_SSID="${{ github.event.inputs.wifi_ssid }}"
HOMENETWORK_PASSWORD="${{ github.event.inputs.wifi_password }}"
AP_SSID="${{ github.event.inputs.wpa_ssid }}"
AP_PASSWORD="${{ github.event.inputs.wpa_password }}"
EMAIL_ADDRESS="${{ secrets.EMAIL_ADDRESS }}"
SMTP_SERVER="${{ secrets.SMTP_SERVER }}"
SMTP_USERNAME="${{ secrets.SMTP_USERNAME }}"
SMTP_PASSWORD="${{ secrets.SMTP_PASSWORD }}"
EOF
- name: Build image
uses: Nature40/pimod@master
with:
pifile: main.Pifile
- name: Set Timestamp
id: timestamp
run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT
- name: Set Artifact Name
id: artifact_name
run: |
echo "name=$(echo '${{ github.event.inputs.device }}-${{ steps.timestamp.outputs.timestamp }}' | sed 's/[:"<>|*?\r\n\\\/]/-/g')" >> $GITHUB_OUTPUT
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ steps.artifact_name.outputs.name }}
path: main.img
compression-level: 9
retention-days: 5