Skip to content

Commit aadf3ca

Browse files
authored
Merge pull request #18 from learningequality/an_image_by_any_other_name_would_be_just_as_big
Update file naming to include version information
2 parents dd68525 + dbfe813 commit aadf3ca

File tree

4 files changed

+84
-5
lines changed

4 files changed

+84
-5
lines changed

.github/workflows/build_zip.yml

Lines changed: 15 additions & 4 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/pi-gen
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
@@ -46,6 +55,8 @@ jobs:
4655
path: dist
4756
- name: Build the pi image
4857
run: ./build-docker.sh
58+
- name: Rename the pi image and zip file
59+
run: make rename-zip
4960
- name: Get ZIP filename
5061
id: get-zip-filename
5162
run: echo "::set-output name=zip-file-name::$(ls deploy | grep .zip | cat)"

.github/workflows/pr_build.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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 }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
deploy/*
22
work/*
3+
dist/*
34
postrun.sh
45
.pc
56
*-pc

Makefile

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: get-deb clean-deb
1+
.PHONY: get-deb clean-deb rename-zip
22

33
DIST_DIR := dist
44

@@ -21,3 +21,17 @@ get-deb: clean-deb
2121
unzip -d $(DIST_DIR)/ $(DIST_DIR)/$(DLFILE); \
2222
rm $(DIST_DIR)/$(DLFILE); \
2323
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

0 commit comments

Comments
 (0)