Skip to content

Commit 77347d1

Browse files
authored
Merge pull request #5 from learningequality/fix-pr-builds
Bring build action up to date
2 parents 007695b + de03b7b commit 77347d1

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

.github/workflows/build_img.yml

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,15 @@ on:
1010
workflow_call:
1111
inputs:
1212
deb-file-name:
13-
required: true
13+
required: false
14+
type: string
15+
deb-url:
16+
description: 'URL for Kolibri deb file'
17+
required: false
1418
type: string
1519
ref:
1620
description: 'A ref for this workflow to check out its own repo'
17-
required: true
21+
required: false
1822
type: string
1923
outputs:
2024
zip-file-name:
@@ -28,6 +32,11 @@ jobs:
2832
outputs:
2933
zip-file-name: ${{ steps.get-zip-filename.outputs.zip-file-name }}
3034
steps:
35+
- name: Validate deb reference inputs
36+
if: ${{ (inputs.deb-file-name && inputs.deb-url) || (!inputs.deb-file-name && !inputs.deb-url) }}
37+
run: |
38+
echo "Must specify only one reference for the deb file to build the image with."
39+
exit 1
3140
- uses: actions/checkout@v4
3241
if: ${{ !inputs.ref }}
3342
- uses: actions/checkout@v4
@@ -36,8 +45,8 @@ jobs:
3645
repository: learningequality/kolibri-image-pi
3746
ref: ${{ inputs.ref }}
3847
- name: Download the debfile from URL and install
39-
if: ${{ github.event.inputs.deb-url }}
40-
run: make get-deb deb=${{ github.event.inputs.deb-url }}
48+
if: ${{ inputs.deb-url }}
49+
run: make get-deb deb=${{ inputs.deb-url }}
4150
- name: Download the debfile from artifacts
4251
if: ${{ inputs.deb-file-name }}
4352
uses: actions/download-artifact@v4
@@ -55,7 +64,7 @@ jobs:
5564
uses: actions/cache@v4
5665
with:
5766
path: 'images/base.img'
58-
key: ${{ runner.OS }}-base-${{ hashFiles('base.Pifle', 'files/*') }}
67+
key: ${{ runner.OS }}-base-${{ hashFiles('base.Pifile', 'files/*') }}
5968
restore-keys: |
6069
${{ runner.OS }}-base-
6170
- name: Cache pimod
@@ -66,13 +75,11 @@ jobs:
6675
restore-keys: |
6776
${{ runner.OS }}-pimod-
6877
- name: Build Pi image
69-
run: |
70-
make images
71-
zip Kolibri.zip images/Kolibri.img
78+
run: make zipfile
7279
- name: Get ZIP filename
7380
id: get-zip-filename
74-
run: echo "zip-file-name=Kolibri.zip" >> $GITHUB_OUTPUT
81+
run: echo "zip-file-name=$(ls dist | grep .zip | cat)" >> $GITHUB_OUTPUT
7582
- uses: actions/upload-artifact@v4
7683
with:
7784
name: ${{ steps.get-zip-filename.outputs.zip-file-name }}
78-
path: ${{ steps.get-zip-filename.outputs.zip-file-name }}
85+
path: dist/${{ steps.get-zip-filename.outputs.zip-file-name }}

Makefile

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
.PHONY: get-deb clean-deb clean-images clean-tools clean install-dependencies
22

3+
DIST_DIR := dist
4+
35
SOURCE_FILE = images/source.xz
46
SOURCE_URL = https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-10-28/2024-10-22-raspios-bookworm-arm64-lite.img.xz
57

@@ -13,13 +15,13 @@ clean-tools:
1315
rm -rf pimod
1416

1517
clean-deb:
16-
rm -rf dist
17-
mkdir dist
18+
rm -rf $(DIST_DIR)
19+
mkdir $(DIST_DIR)
1820

1921
get-deb: clean-deb
2022
# The eval and shell commands here are evaluated when the recipe is parsed, so we put the cleanup
2123
# into a prerequisite make step, in order to ensure they happen prior to the download.
22-
$(eval DLFILE = $(shell wget --content-disposition -P dist/ "${deb}" 2>&1 | grep "Saving to: " | sed 's/Saving to: ‘//' | sed 's/’//'))
24+
$(eval DLFILE = $(shell wget --content-disposition -P $(DIST_DIR)/ "${deb}" 2>&1 | grep "Saving to: " | sed 's/Saving to: ‘//' | sed 's/’//'))
2325
$(eval DEBFILE = $(shell echo "${DLFILE}" | sed "s/\?.*//"))
2426
[ "${DLFILE}" = "${DEBFILE}" ] || mv "${DLFILE}" "${DEBFILE}"
2527

@@ -54,3 +56,13 @@ images: install-dependencies
5456
$(MAKE) images/source.img
5557
$(MAKE) images/base.img
5658
$(MAKE) images/Kolibri.img
59+
60+
zipfile: images
61+
# Get the version based on the debian file name kolibri_<version>-Xubuntu1_all.deb
62+
$(eval VERSION=$(shell ls ${DIST_DIR} | grep kolibri | sed -r 's/kolibri_(.*)-[0-9]+ubuntu1_all.deb/\1/'))
63+
# Rename the image file to include the version
64+
mv images/Kolibri.img images/kolibri-pi-image-$(VERSION).img
65+
# Zip the image file
66+
zip -j $(DIST_DIR)/kolibri-pi-image-$(VERSION).zip images/kolibri-pi-image-$(VERSION).img
67+
# Clean up the final image file
68+
rm images/kolibri-pi-image-$(VERSION).img

0 commit comments

Comments
 (0)