1- name : Build PPPwn Live ISO
1+ name : Build
22
33on :
4- workflow_call :
5- inputs :
6- config :
7- description : ' Buildroot configuration to use'
8- required : false
9- default : ' pppwn_defconfig'
10- type : string
11- architecture :
12- description : ' Target architecture'
13- required : false
14- default : ' x86_64'
15- type : string
16- upload-artifacts :
17- description : ' Whether to upload build artifacts'
18- required : false
19- default : true
20- type : boolean
4+ push :
215 workflow_dispatch :
22- inputs :
23- config :
24- description : ' Buildroot configuration to use'
25- required : false
26- default : ' pppwn_defconfig'
27- type : choice
28- options :
29- - pppwn_defconfig
30- architecture :
31- description : ' Target architecture'
32- required : false
33- default : ' x86_64'
34- type : choice
35- options :
36- - x86_64
37- upload-artifacts :
38- description : ' Upload build artifacts'
39- required : false
40- default : true
41- type : boolean
42-
43- env :
44- BUILDROOT_VERSION : " 2025.05"
45- BUILDROOT_REPO : " https://github.com/buildroot/buildroot"
466
477jobs :
488 build :
499 runs-on : ubuntu-latest
50- strategy :
51- matrix :
52- include :
53- - config : ${{ inputs.config || 'pppwn_defconfig' }}
54- architecture : ${{ inputs.architecture || 'x86_64' }}
55-
5610 steps :
57- - name : Checkout repository
58- uses : actions/checkout@v4
59- with :
60- submodules : recursive
61- fetch-depth : 0
62-
63- - name : Install build dependencies
11+ - uses : actions/checkout@v4
12+
13+ - name : Install deps
6414 run : |
6515 sudo apt-get update
66- sudo apt-get install -y \
67- build-essential \
68- libncurses5-dev \
69- rsync \
70- bc \
71- wget \
72- cpio \
73- python3 \
74- unzip \
75- file \
76- git \
77- cmake \
78- ninja-build \
79- pkg-config \
80- libtool \
81- autoconf \
82- automake \
83- gettext \
84- bison \
85- flex \
86- texinfo \
87- help2man \
88- gawk \
89- libtool-bin \
90- libglib2.0-dev \
91- libfdt-dev \
92- libpixman-1-dev \
93- zlib1g-dev \
94- libnfs-dev \
95- libiscsi-dev
96-
97- - name : Cache Buildroot source
98- id : cache-buildroot
99- uses : actions/cache@v4
100- with :
101- path : buildroot
102- key : buildroot-${{ env.BUILDROOT_VERSION }}-${{ hashFiles('.github/workflows/build.yml') }}
103- restore-keys : |
104- buildroot-${{ env.BUILDROOT_VERSION }}-
105-
106- - name : Clone Buildroot
107- if : steps.cache-buildroot.outputs.cache-hit != 'true'
108- run : |
109- git clone --depth 1 --branch ${{ env.BUILDROOT_VERSION }} ${{ env.BUILDROOT_REPO }} buildroot
110-
111- - name : Cache Buildroot downloads
112- uses : actions/cache@v4
113- with :
114- path : buildroot/dl
115- key : buildroot-dl-${{ hashFiles('br2-external/package/*/**.mk', 'br2-external/package/*/**.hash') }}
116- restore-keys : |
117- buildroot-dl-
118-
119- - name : Cache Buildroot build artifacts
120- uses : actions/cache@v4
121- with :
122- path : |
123- buildroot/output/build
124- buildroot/output/host
125- key : buildroot-build-${{ matrix.config }}-${{ matrix.architecture }}-${{ hashFiles('br2-external/**', 'configs/**') }}
126- restore-keys : |
127- buildroot-build-${{ matrix.config }}-${{ matrix.architecture }}-
128- buildroot-build-${{ matrix.config }}-
129- buildroot-build-
16+ sudo apt-get install -y build-essential libncurses5-dev rsync bc wget cpio python3 unzip
13017
131- - name : Configure Buildroot
132- run : |
133- cd buildroot
134- make BR2_EXTERNAL=../br2-external ${{ matrix.config }}
135-
136- - name : Build system
18+ - name : Build
13719 run : |
20+ git clone --depth 1 --branch 2025.05 https://github.com/buildroot/buildroot
13821 cd buildroot
22+ make BR2_EXTERNAL=../br2-external pppwn_defconfig
13923 make -j$(nproc)
24+ mv output/images/rootfs.iso9660 output/images/pppwn-live.iso
14025
141- - name : Verify build artifacts
142- run : |
143- cd buildroot
144- ls -la output/images/
145- if [ ! -f output/images/rootfs.iso9660 ]; then
146- echo "Error: ISO image not found"
147- exit 1
148- fi
149-
150- # Rename ISO to more descriptive name
151- mv output/images/rootfs.iso9660 output/images/pppwn-live-${{ matrix.architecture }}.iso
152-
153- # Check ISO size (should be reasonable for a minimal system)
154- ISO_SIZE=$(stat -c%s output/images/pppwn-live-${{ matrix.architecture }}.iso)
155- echo "ISO size: $((ISO_SIZE / 1024 / 1024)) MB"
156-
157- if [ $ISO_SIZE -gt 1073741824 ]; then # 1GB limit
158- echo "Warning: ISO size is larger than expected"
159- fi
160-
161- # Verify ISO can be mounted (basic integrity check)
162- mkdir -p /tmp/iso_test
163- sudo mount -o loop output/images/pppwn-live-${{ matrix.architecture }}.iso /tmp/iso_test || {
164- echo "Error: ISO cannot be mounted"
165- exit 1
166- }
167- sudo umount /tmp/iso_test
168-
169- - name : Generate build info
170- run : |
171- cd buildroot
172- echo "Build Information" > ../build-info.txt
173- echo "=================" >> ../build-info.txt
174- echo "Build Date: $(date -u)" >> ../build-info.txt
175- echo "Buildroot Version: ${{ env.BUILDROOT_VERSION }}" >> ../build-info.txt
176- echo "Configuration: ${{ matrix.config }}" >> ../build-info.txt
177- echo "Architecture: ${{ matrix.architecture }}" >> ../build-info.txt
178- echo "Commit SHA: ${{ github.sha }}" >> ../build-info.txt
179- echo "Branch: ${{ github.ref_name }}" >> ../build-info.txt
180- echo "" >> ../build-info.txt
181- echo "Package Versions:" >> ../build-info.txt
182- echo "=================" >> ../build-info.txt
183- make show-info >> ../build-info.txt 2>/dev/null || echo "Package info not available" >> ../build-info.txt
184-
185- - name : Upload build artifacts
186- if : ${{ inputs.upload-artifacts != false }}
187- uses : actions/upload-artifact@v4
188- with :
189- name : pppwn-live-iso-${{ matrix.config }}-${{ matrix.architecture }}-${{ github.sha }}
190- path : |
191- buildroot/output/images/pppwn-live-${{ matrix.architecture }}.iso
192- build-info.txt
193- retention-days : 30
194-
195- - name : Upload build logs on failure
196- if : failure()
26+ - name : Upload
19727 uses : actions/upload-artifact@v4
19828 with :
199- name : build-logs-${{ matrix.config }}-${{ matrix.architecture }}-${{ github.sha }}
200- path : |
201- buildroot/output/build/build-time.log
202- buildroot/output/build/packages-file-list.txt
203- retention-days : 7
29+ name : pppwn-live-iso
30+ path : buildroot/output/images/pppwn-live.iso
0 commit comments