File tree Expand file tree Collapse file tree 4 files changed +84
-5
lines changed Expand file tree Collapse file tree 4 files changed +84
-5
lines changed Original file line number Diff line number Diff line change 10
10
workflow_call :
11
11
inputs :
12
12
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
14
18
type : string
15
19
ref :
16
20
description : ' A ref for this workflow to check out its own repo'
17
- required : true
21
+ required : false
18
22
type : string
19
23
outputs :
20
24
zip-file-name :
28
32
outputs :
29
33
zip-file-name : ${{ steps.get-zip-filename.outputs.zip-file-name }}
30
34
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
31
40
- uses : actions/checkout@v4
32
41
if : ${{ !inputs.ref }}
33
42
- uses : actions/checkout@v4
36
45
repository : learningequality/pi-gen
37
46
ref : ${{ inputs.ref }}
38
47
- 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 }}
41
50
- name : Download the debfile from artifacts
42
51
if : ${{ inputs.deb-file-name }}
43
52
uses : actions/download-artifact@v4
46
55
path : dist
47
56
- name : Build the pi image
48
57
run : ./build-docker.sh
58
+ - name : Rename the pi image and zip file
59
+ run : make rename-zip
49
60
- name : Get ZIP filename
50
61
id : get-zip-filename
51
62
run : echo "::set-output name=zip-file-name::$(ls deploy | grep .zip | cat)"
Original file line number Diff line number Diff line change
1
+ name : Build Pi image for PRs
2
+
3
+ on :
4
+ pull_request :
5
+ branches :
6
+ - master
7
+
8
+ jobs :
9
+ pre_job :
10
+ name : Path match check
11
+ runs-on : ubuntu-latest
12
+ # Map a step output to a job output
13
+ outputs :
14
+ should_skip : ${{ steps.skip_check.outputs.should_skip }}
15
+ steps :
16
+ - id : skip_check
17
+ uses : fkirc/skip-duplicate-actions@master
18
+ with :
19
+ github_token : ${{ github.token }}
20
+ paths_ignore : ' ["**.po", "**.json"]'
21
+ latest_kolibri_release :
22
+ needs : pre_job
23
+ if : ${{ needs.pre_job.outputs.should_skip != 'true' }}
24
+ runs-on : ubuntu-latest
25
+ outputs :
26
+ deb-url : ${{ steps.get_latest_kolibri_release.outputs.result }}
27
+ steps :
28
+ - name : Get latest Kolibri release
29
+ id : get_latest_kolibri_release
30
+ uses : actions/github-script@v7
31
+ with :
32
+ result-encoding : string
33
+ script : |
34
+
35
+ const { data: releases } = await github.rest.repos.listReleases({
36
+ owner: 'learningequality',
37
+ repo: 'kolibri',
38
+ per_page: 1,
39
+ page: 1,
40
+ });
41
+
42
+ const latestRelease = releases[0];
43
+ const debAsset = latestRelease.assets.find(asset => asset.name.endsWith('.deb'));
44
+ const debUrl = debAsset.browser_download_url;
45
+ return debUrl;
46
+
47
+ build_zip :
48
+ name : Build Image
49
+ needs : [pre_job, latest_kolibri_release]
50
+ if : ${{ needs.pre_job.outputs.should_skip != 'true' }}
51
+ uses : ./.github/workflows/build_zip.yml
52
+ with :
53
+ deb-url : ${{ needs.latest_kolibri_release.outputs.deb-url }}
Original file line number Diff line number Diff line change 1
1
deploy /*
2
2
work /*
3
+ dist /*
3
4
postrun.sh
4
5
.pc
5
6
* -pc
Original file line number Diff line number Diff line change 1
- .PHONY : get-deb clean-deb
1
+ .PHONY : get-deb clean-deb rename-zip
2
2
3
3
DIST_DIR := dist
4
4
@@ -21,3 +21,17 @@ get-deb: clean-deb
21
21
unzip -d $(DIST_DIR)/ $(DIST_DIR)/$(DLFILE); \
22
22
rm $(DIST_DIR)/$(DLFILE); \
23
23
fi
24
+
25
+ rename-zip :
26
+ # Unzip the file so we can rename the image file
27
+ unzip -o deploy/image_Kolibri-lite.zip -d deploy
28
+ # Clean up the original zip file
29
+ rm deploy/image_Kolibri-lite.zip
30
+ # Get the version based on the debian file name kolibri_<version>-0ubuntu1_all.deb
31
+ $(eval VERSION=$(shell ls ${DIST_DIR} | grep kolibri | sed 's/kolibri_\(.*\)-0ubuntu1_all.deb/\1/'))
32
+ # Rename the image file to include the version
33
+ mv deploy/Kolibri-lite.img deploy/kolibri-pi-image-$(VERSION).img
34
+ # Zip the image file back up
35
+ zip -j deploy/kolibri-pi-image-$(VERSION).zip deploy/kolibri-pi-image-$(VERSION).img
36
+ # Clean up the extracted image file
37
+ rm deploy/kolibri-pi-image-$(VERSION).img
You can’t perform that action at this time.
0 commit comments