Skip to content

Commit 421a9c0

Browse files
authored
chore: rework build workflow with source image cache (#146)
* chore: add github runner cache to ReleaseRaspiOS.yml Signed-off-by: Stefan Dej <meteyou@gmail.com> * chore: add github runner cache to BuildRaspiOS.yml Signed-off-by: Stefan Dej <meteyou@gmail.com> Signed-off-by: Stefan Dej <meteyou@gmail.com>
1 parent f16ad6b commit 421a9c0

File tree

2 files changed

+89
-13
lines changed

2 files changed

+89
-13
lines changed

.github/workflows/BuildRaspiOS.yml

+63-9
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ on:
1818

1919
workflow_dispatch:
2020

21+
22+
# Allow to stop obsolete workflows
23+
concurrency:
24+
group: ci-buildraspios-${{ github.ref }}-1
25+
cancel-in-progress: true
26+
27+
env:
28+
DOWNLOAD_URL_CHECKSUM: "https://downloads.raspberrypi.org/raspios_lite_armhf_latest.sha256"
29+
DOWNLOAD_URL_IMAGE: "https://downloads.raspberrypi.org/raspios_lite_armhf_latest.torrent"
30+
FILENAME_CHECKSUM: "raspios_lite_armhf_latest.sha256"
31+
2132
jobs:
2233
raspiosbuild:
2334
runs-on: ubuntu-latest
@@ -39,27 +50,70 @@ jobs:
3950
path: repository
4051
submodules: true
4152

53+
- name: Raspberry Pi OS Checksum
54+
id: raspios-checksum
55+
run: |
56+
cd repository/src/image
57+
wget -O $FILENAME_CHECKSUM $DOWNLOAD_URL_CHECKSUM
58+
FILE_CONTENT=$(head -n 1 $FILENAME_CHECKSUM)
59+
CHECKSUM=$(echo $FILE_CONTENT | cut -d' ' -f1)
60+
echo "::set-output name=CHECKSUM::$CHECKSUM"
61+
62+
- name: Cache Raspberry Pi OS Source Image
63+
id: cache-source-image
64+
uses: actions/cache@v3
65+
with:
66+
path: repository/src/image/*.img.xz
67+
key: ${{ runner.os }}-${{ steps.raspios-checksum.outputs.CHECKSUM }}
68+
4269
- name: Download Raspberry Pi OS Source Image
43-
run: aria2c -d repository/src/image/ --seed-time=0 https://downloads.raspberrypi.org/raspios_oldstable_lite_armhf_latest.torrent
70+
if: steps.cache-source-image.outputs.cache-hit != 'true'
71+
run: aria2c -d repository/src/image --seed-time=0 $DOWNLOAD_URL_IMAGE
4472

4573
- name: Comparing Checksums
4674
run: |
4775
cd repository/src/image
48-
curl -JL https://downloads.raspberrypi.org/raspios_oldstable_lite_armhf_latest.sha256 | awk '{print $1" "$2}' | sha256sum -c
76+
cat $FILENAME_CHECKSUM | awk '{print $1" "$2}' | sha256sum -c
4977
5078
- name: Update CustomPiOS Paths
5179
run: cd repository/src && ../../CustomPiOS/src/update-custompios-paths
5280

5381
- name: Build Image
5482
run: sudo modprobe loop && cd repository/src && sudo bash -x ./build_dist
5583

56-
- name: Copy output image
57-
run: cp ${{ github.workspace }}/repository/src/workspace/*-raspios-*-lite.img mainsailos-raspios-lite-latest.img
84+
- name: Copy output
85+
id: copy-image
86+
run: |
87+
source repository/src/config
88+
NOW=$(date +"%Y-%m-%d")
89+
IMAGE=$NOW-mainsailos-$DIST_VERSION
5890
59-
- name: Compress the image
60-
run: zip mainsailos-raspios-lite-latest.zip mainsailos-raspios-lite-latest.img
91+
cp repository/src/workspace/*.img $IMAGE.img
92+
93+
echo "::set-output name=image::$IMAGE"
94+
95+
- name: Compressing Image
96+
run: xz -efkvz ${{ steps.copy-image.outputs.image }}.img
97+
98+
- name: Calculating checksums
99+
run: |
100+
sha256sum ${{ steps.copy-image.outputs.image }}.img > ${{ steps.copy-image.outputs.image }}.img.sha256
101+
sha256sum ${{ steps.copy-image.outputs.image }}.img.xz > ${{ steps.copy-image.outputs.image }}.img.xz.sha256
102+
103+
- name: Upload Compressed Image
104+
uses: actions/upload-artifact@v3
105+
with:
106+
name: ${{ steps.copy-image.outputs.image }}.img.xz
107+
path: ${{ steps.copy-image.outputs.image }}.img.xz
108+
109+
- name: Upload Compressed Image Checksum
110+
uses: actions/upload-artifact@v3
111+
with:
112+
name: ${{ steps.copy-image.outputs.image }}.img.xz.sha256
113+
path: ${{ steps.copy-image.outputs.image }}.img.xz.sha256
61114

62-
- uses: actions/upload-artifact@v2
115+
- name: Upload Image Checksum
116+
uses: actions/upload-artifact@v3
63117
with:
64-
name: mainsailos-raspios-lite-latest.zip
65-
path: mainsailos-raspios-lite-latest.zip
118+
name: ${{ steps.copy-image.outputs.image }}.img.sha256
119+
path: ${{ steps.copy-image.outputs.image }}.img.sha256

.github/workflows/ReleaseRaspiOS.yml

+26-4
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,23 @@ on:
33
release:
44
types: [ published ]
55

6+
env:
7+
DOWNLOAD_URL_CHECKSUM: "https://downloads.raspberrypi.org/raspios_lite_armhf_latest.sha256"
8+
DOWNLOAD_URL_IMAGE: "https://downloads.raspberrypi.org/raspios_lite_armhf_latest.torrent"
9+
FILENAME_CHECKSUM: "raspios_lite_armhf_latest.sha256"
10+
611
jobs:
712
raspiosbuild:
813
runs-on: ubuntu-latest
914

1015
steps:
1116
- name: Install Dependencies
12-
run: sudo apt install coreutils p7zip-full qemu-user-static zip
17+
run: sudo apt update; sudo apt install --yes coreutils p7zip-full qemu-user-static zip
1318

1419
- name: Checkout CustomPiOS
1520
uses: actions/checkout@v2
1621
with:
17-
repository: 'guysoft/CustomPiOS'
22+
repository: "guysoft/CustomPiOS"
1823
path: CustomPiOS
1924

2025
- name: Checkout MainsailOS Project
@@ -24,13 +29,30 @@ jobs:
2429
path: repository
2530
submodules: true
2631

32+
- name: Raspberry Pi OS Checksum
33+
id: raspios-checksum
34+
run: |
35+
cd repository/src/image
36+
wget -O $FILENAME_CHECKSUM $DOWNLOAD_URL_CHECKSUM
37+
FILE_CONTENT=$(head -n 1 $FILENAME_CHECKSUM)
38+
CHECKSUM=$(echo $FILE_CONTENT | cut -d' ' -f1)
39+
echo "::set-output name=CHECKSUM::$CHECKSUM"
40+
41+
- name: Cache Raspberry Pi OS Source Image
42+
id: cache-source-image
43+
uses: actions/cache@v3
44+
with:
45+
path: repository/src/image/*.img.xz
46+
key: ${{ runner.os }}-${{ steps.raspios-checksum.outputs.CHECKSUM }}
47+
2748
- name: Download Raspberry Pi OS Source Image
28-
run: aria2c -d repository/src/image/ --seed-time=0 https://downloads.raspberrypi.org/raspios_oldstable_lite_armhf_latest.torrent
49+
if: steps.cache-source-image.outputs.cache-hit != 'true'
50+
run: aria2c -d repository/src/image --seed-time=0 $DOWNLOAD_URL_IMAGE
2951

3052
- name: Comparing Checksums
3153
run: |
3254
cd repository/src/image
33-
curl -JL https://downloads.raspberrypi.org/raspios_oldstable_lite_armhf_latest.sha256 | awk '{print $1" "$2}' | sha256sum -c
55+
cat $FILENAME_CHECKSUM | awk '{print $1" "$2}' | sha256sum -c
3456
3557
- name: Update CustomPiOS Paths
3658
run: cd repository/src && ../../CustomPiOS/src/update-custompios-paths

0 commit comments

Comments
 (0)