@@ -77,95 +77,126 @@ jobs:
7777 uses : actions/upload-artifact@v4
7878 with :
7979 name : static-youtubeUnblock-${{ matrix.arch }}
80- path : ./**/youtubeUnblock*.tar.gz
80+ path : ./**/static- youtubeUnblock*.tar.gz
8181
8282 build-kmod :
8383 needs : prepare
84- name : build-kmod ${{ matrix.arch }}
84+ name : build-kmod ${{ matrix.kernel_version }}
8585 runs-on : ubuntu-latest
8686 strategy :
8787 matrix :
88- arch : [x86_64]
89- branch : [latest-stable]
88+ include :
89+ - kernel_version : " 6.6.52"
90+ source : " https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.52.tar.xz"
91+ container_version : " 24.04"
92+
93+ - kernel_version : " 5.15.167"
94+ source : " https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.167.tar.xz"
95+ container_version : " 24.04"
96+
97+ - kernel_version : " 5.4.284"
98+ source : " https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.284.tar.xz"
99+ container_version : " 24.04"
100+
101+ - kernel_version : " 4.19.322"
102+ source : " https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.322.tar.xz"
103+ container_version : " 24.04"
104+
105+ - kernel_version : " 4.4.302"
106+ source : " https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.302.tar.xz"
107+ container_version : " 24.04"
108+
109+ - kernel_version : " 3.10.108"
110+ source : " https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.10.108.tar.xz"
111+ container_version : " 16.04"
112+
113+ - kernel_version : " 3.0.101"
114+ source : " https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.0.101.tar.xz"
115+ container_version : " 14.04"
90116 steps :
91117 - name : Checkout
92118 uses : actions/checkout@v4
93119
94- - name : Build
95- id : build
96- env :
97- ARCH : ${{ matrix.arch }}
98- VERSION : ${{ needs.prepare.outputs.version }}
99- SHA : ${{ needs.prepare.outputs.sha }}
100- shell : bash
101- run : |
102- make kmake
103- tar -czvf kmod-youtubeUnblock-$VERSION-$SHA-$PLATFORM-$(uname -r).tar.gz kyoutubeUnblock.ko
104-
105- - name : Upload artifacts
106- if : steps.build.outcome == 'success'
107- uses : actions/upload-artifact@v4
120+ - name : Restore builder from cache
121+ id : cache-restore
122+ uses : actions/cache/restore@v4
108123 with :
109- name : kmod-youtubeUnblock-${{ matrix.arch }}
110- path : ./**/kmod-youtubeUnblock*.tar.gz
124+ path : ~/builder.tar
125+ key : builder-${{ matrix.kernel_version }}
111126
112- build-kmod-20.04 :
113- needs : prepare
114- name : build-kmod ${{ matrix.arch }}
115- runs-on : ubuntu-latest
116- strategy :
117- matrix :
118- arch : [x86_64]
119- branch : [latest-stable]
120- steps :
121- - name : Checkout
122- uses : actions/checkout@v4
127+ - name : Load builder from cache
128+ if : steps.cache-restore.outputs.cache-hit == 'true'
129+ run : |
130+ docker import - builder < ~/builder.tar
123131
124- - name : prepare runner
125- shell : bash
132+ - name : Prepare build env
133+ if : steps.cache-restore.outputs.cache-hit != 'true'
126134 run : |
127- apt install -y \
128- bridge-utils \
129- qemu-kvm \
130- libvirt-daemon-system \
131- libvirt-clients \
132- virtinst \
133- libguestfs-tools \
134- wait-for-it \
135- whois \
136- sshpass
137-
138- - name : build virtual machine
139- shell : bash
135+ mkdir ~/linux
136+ pwd
137+ ls /
138+ ls ~
139+
140+ - name : Obtain kernel
141+ if : steps.cache-restore.outputs.cache-hit != 'true'
140142 run : |
141- virt-builder ubuntu-20.04 \
142- --network \
143- --format qcow2 -o "vm_ubuntu.qcow2" \
144- --update \
145- --install build-essential \
146- --run-command "useradd -p '' -s /bin/bash -m -G sudo ubuntu" \
147- --edit '/etc/sudoers:s/^%sudo.*/%sudo ALL=(ALL) NOPASSWD:ALL/' \
148- --edit '/etc/default/grub:s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"/' \
149- --run-command update-grub
150-
143+ cd ~/linux
144+ wget ${{ matrix.source }} -O kernel.tar.xz -q
145+ tar -xf kernel.tar.xz
146+ rm -f kernel.tar.xz
147+ /bin/bash -c "mv linux-* linux"
148+ ls
149+ ls linux
150+
151+ - name : Install docker
152+ if : steps.cache-restore.outputs.cache-hit != 'true'
153+ run : |
154+ cd ~/linux
155+ docker pull ubuntu:${{ matrix.container_version }}
156+ docker container create --name ubu_builder -w / ubuntu:${{ matrix.container_version }} tail -f /dev/null
157+ docker container start ubu_builder
158+ docker container exec ubu_builder bash -c "apt update && apt install -y build-essential flex bc bison libelf-dev elfutils libssl-dev"
159+ docker cp ./linux ubu_builder:/linux
160+
161+ - name : Build kernel
162+ if : steps.cache-restore.outputs.cache-hit != 'true'
163+ run : |
164+ cd ~/linux
165+ docker container exec -w /linux ubu_builder bash -c 'make defconfig'
166+ docker container exec -w /linux ubu_builder bash -c 'make -j $(nproc)'
151167
152-
168+ - name : Export container
169+ if : steps.cache-restore.outputs.cache-hit != 'true'
170+ run : |
171+ cd ~/linux
172+ docker container kill ubu_builder
173+ docker container export ubu_builder > ubu_builder.tar
174+ docker container rm ubu_builder
175+ mv ./ubu_builder.tar ~/builder.tar
176+ docker import - builder < ~/builder.tar
177+
178+ - name : Save kernel image to cache
179+ if : steps.cache-restore.outputs.cache-hit != 'true'
180+ id : cache-save
181+ uses : actions/cache/save@v4
182+ with :
183+ path : ~/builder.tar
184+ key : builder-${{ matrix.kernel_version }}
153185
154- - name : Build
186+ - name : Build kernel module
155187 id : build
156188 env :
157- ARCH : ${{ matrix.arch }}
158189 VERSION : ${{ needs.prepare.outputs.version }}
159190 SHA : ${{ needs.prepare.outputs.sha }}
160191 shell : bash
161192 run : |
162- make kmake
163- tar -czvf kmod-youtubeUnblock-$VERSION-$SHA-$PLATFORM-$(uname -r) .tar.gz kyoutubeUnblock.ko
193+ docker run --rm -v ./:/youtubeUnblock -w /youtubeUnblock builder make kmake KERNEL_BUILDER_MAKEDIR:=/linux
194+ tar -czvf kmod-youtubeUnblock-$VERSION-$SHA-linux-${{ matrix.kernel_version }} .tar.gz kyoutubeUnblock.ko
164195
165196 - name : Upload artifacts
166197 if : steps.build.outcome == 'success'
167198 uses : actions/upload-artifact@v4
168199 with :
169- name : kmod-youtubeUnblock-${{ matrix.arch }}
200+ name : kmod-youtubeUnblock-linux- ${{ matrix.kernel_version }}
170201 path : ./**/kmod-youtubeUnblock*.tar.gz
171202
0 commit comments