-
-
Notifications
You must be signed in to change notification settings - Fork 63
154 lines (132 loc) · 4.96 KB
/
full-distro-build-and-test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
name: "Full distro test builds"
on:
schedule:
- cron: '00 5 * * *'
workflow_dispatch:
inputs:
branch:
description: 'Framework build branch'
default: 'main'
type: string
jobs:
prepare:
name: "JSON"
runs-on: ubuntu-latest
outputs:
matrix: ${{steps.json.outputs.JSON_CONTENT}}
steps:
- name: "Checkout Armbian build Framework"
uses: actions/checkout@v4
with:
repository: armbian/build
ref: ${{ inputs.ref || inputs.branch || 'main' }}
clean: false
fetch-depth: 1
path: build
- name: "Install SSH key"
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.KEY_UPLOAD }}
known_hosts: ${{ secrets.KNOWN_HOSTS_ARMBIAN_UPLOAD }}
if_key_exists: replace
- name: "Cleanup upload folder"
run: |
ssh [email protected] "rm -rf /var/www/netcup.armbian.com/html/qemutestbuilds/*"
- name: "Make JSON"
id: json
run: |
echo 'JSON_CONTENT<<EOF' >> $GITHUB_OUTPUT
releases=($(grep "supported\|csc" build/config/distributions/*/support | cut -d"/" -f4))
for i in ${releases[@]}; do
desktops=($(grep "supported\|csc" build/config/desktop/${i}/environments/*/support | cut -d"/" -f6))
desktops+=(cli minimal)
for j in ${desktops[@]}; do
echo "{\"release\":\"${i}\",\"desktop\":\"$j\"}"
done
done | jq -s >> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
gradle:
needs: prepare
strategy:
fail-fast: false
max-parallel: 64
matrix:
include: ${{ fromJson(needs.prepare.outputs.matrix) }}
name: "Build Qemu"
timeout-minutes: 60
runs-on: [ images, X64 ]
steps:
# Cleaning self hosted runners
- name: Runner clean
uses: armbian/actions/runner-clean@main
# Login to ghcr.io, for later uploading rootfs to ghcr.io
- name: Docker Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: "${{ github.repository_owner }}" # GitHub username or org
password: "${{ secrets.GITHUB_TOKEN }}" # GitHub actions builtin token. repo has to have pkg access.
- name: "Install SSH key"
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.KEY_UPLOAD }}
known_hosts: ${{ secrets.KNOWN_HOSTS_ARMBIAN_UPLOAD }}
if_key_exists: replace
#- name: Free Github Runner
# uses: descriptinc/free-disk-space@main
# with:
# android: true
# dotnet: true
# haskell: true
# large-packages: true
# docker-images: true
# swap-storage: true
# clone the build system repo (`armbian/build`)
- name: Checkout build repo
uses: actions/checkout@v4
with:
repository: armbian/build
ref: ${{ inputs.ref || inputs.branch || 'main' }}
fetch-depth: 0
clean: false
path: build
# clone the userpatches repo (`armbian/os`)
- name: "Checkout userpatches repo"
uses: actions/checkout@v4
with:
repository: armbian/os
fetch-depth: 0
clean: false
path: userpatches
- name: "Put userpatches in place, and remove userpatches repo"
run: |
mkdir -pv build/userpatches
rsync -av userpatches/userpatches/. build/userpatches/
- name: "Release => ${{ matrix.release }} Desktop => ${{ matrix.desktop}})"
run: |
cd build
BUILD_DESKTOP=yes
BUILD_MINIMAL=no
DESKTOP_ENVIRONMENT=${{ matrix.desktop }}
[[ "${{ matrix.desktop }}" == minimal ]] && BUILD_MINIMAL=yes && BUILD_DESKTOP=no && unset DESKTOP_ENVIRONMENT
[[ "${{ matrix.desktop }}" == cli ]] && BUILD_MINIMAL=no && BUILD_DESKTOP=no && unset DESKTOP_ENVIRONMENT
bash ./compile.sh armbian-images \
IMAGE_XZ_COMPRESSION_RATIO=1 \
BOARD=uefi-x86 \
BRANCH=current \
BUILD_DESKTOP="${BUILD_DESKTOP}" \
BUILD_MINIMAL="${BUILD_MINIMAL}" \
DESKTOP_APPGROUPS_SELECTED= \
DESKTOP_ENVIRONMENT="${DESKTOP_ENVIRONMENT}" \
DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base \
ENABLE_EXTENSIONS=image-output-qcow2,v4l2loopback-dkms \
EXPERT=yes \
KERNEL_CONFIGURE=no \
RELEASE=${{ matrix.release }} \
SHARE_LOG=yes \
SHOW_DEBUB=yes \
UPLOAD_TO_OCI_ONLY=yes
# To do:
# - test deploy images and take screenshots
# - upload to server for executing run test
#rsync -arvc --rsync-path="mkdir -p /var/www/netcup.armbian.com/html/qemutestbuilds/ && rsync" output/images/ ${{ secrets.HOST_UPLOAD_USER }}@${{ secrets.HOST_UPLOAD }}:"/var/www/netcup.armbian.com/html/qemutestbuilds/"