-
Notifications
You must be signed in to change notification settings - Fork 19
130 lines (123 loc) · 4.4 KB
/
gen-images.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
name: Build void images
on:
workflow_dispatch:
inputs:
datecode:
description: "Override datecode for images"
required: false
type: string
mirror:
description: "Mirror to use"
default: "https://repo-ci.voidlinux.org/current"
required: false
type: string
live_archs:
description: "Archs to build live ISOs for"
default: "x86_64 x86_64-musl i686"
required: false
type: string
live_flavors:
description: "Flavors to build live ISOs for"
default: "base xfce"
required: false
type: string
rootfs:
description: "Archs to build ROOTFSes for"
default: "x86_64 x86_64-musl i686 armv6l armv6l-musl armv7l armv7l-musl aarch64 aarch64-musl"
required: false
type: string
platformfs:
description: "Platforms to build PLATFORMFSes for"
default: "rpi-armv6l rpi-armv6l-musl rpi-armv7l rpi-armv7l-musl rpi-aarch64 rpi-aarch64-musl"
required: false
type: string
sbc_imgs:
description: "Platforms to build SBC images for"
default: "rpi-armv6l rpi-armv6l-musl rpi-armv7l rpi-armv7l-musl rpi-aarch64 rpi-aarch64-musl"
required: false
type: string
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build
runs-on: ubuntu-latest
defaults:
run:
shell: bash
container:
image: 'ghcr.io/void-linux/void-linux:20230204RC01-full-x86_64'
options: --privileged
volumes:
- /dev:/dev
env:
PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
DATECODE: "${{ inputs.datecode }}"
LIVE_ARCHS: "${{ inputs.live_archs }}"
LIVE_FLAVORS: "${{ inputs.live_flavors }}"
ROOTFS_ARCHS: "${{ inputs.rootfs }}"
PLATFORMS: "${{ inputs.platformfs }}"
SBC_IMGS: "${{ inputs.sbc_imgs }}"
REPO: "${{ inputs.mirror }}"
steps:
- name: Prepare container
shell: sh
run: |
# Switch to repo-ci mirror
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sed -i 's|https://repo-default.voidlinux.org/current|'"$REPO"'|g' /etc/xbps.d/*-repository-*.conf
# Sync and upgrade once, assume error comes from xbps update
xbps-install -Syu || xbps-install -yu xbps
# Upgrade again (in case there was a xbps update)
xbps-install -yu
# Install depedencies
xbps-install -yu bash make git kmod xz lzo qemu-user-static outils dosfstools e2fsprogs
- name: Clone and checkout
uses: classabbyamp/treeless-checkout-action@v1
- name: Prepare environment
run: |
echo "DATECODE=$(date -u "+%Y%m%d")" >> $GITHUB_ENV
echo "MKLIVE_REV=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
- name: Build live ISOs
run: |
if ! [[ "$LIVE_ARCHS" = "none" || "$LIVE_FLAVORS" = "none" ]]; then
make live-iso-all{-print,} \
LIVE_ARCHS="$LIVE_ARCHS" LIVE_FLAVORS="$LIVE_FLAVORS" \
SUDO= REPOSITORY="$REPO" DATECODE=$DATECODE
else
echo "Nothing to do..."
fi
- name: Build ROOTFSes
run: |
if ! [ "$ROOTFS_ARCHS" = "none" ]; then
make rootfs-all{-print,} \
SUDO= ARCHS="$ROOTFS_ARCHS" REPOSITORY="$REPO" DATECODE=$DATECODE
else
echo "Nothing to do..."
fi
- name: Build PLATFORMFSes
run: |
if ! [ "$PLATFORMS" = "none" ]; then
make platformfs-all{-print,} \
SUDO= PLATFORMS="$PLATFORMS" REPOSITORY="$REPO" DATECODE=$DATECODE
else
echo "Nothing to do..."
fi
- name: Build SBC images
run: |
if ! [ "$SBC_IMGS" = "none" ]; then
make images-all-sbc{-print,} \
SUDO= SBC_IMGS="$SBC_IMGS" REPOSITORY="$REPO" DATECODE=$DATECODE
else
echo "Nothing to do..."
fi
- name: Prepare artifacts for upload
run: |
make dist checksum DATECODE=$DATECODE
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: void-live-${{ env.DATECODE }}
path: distdir-${{ env.DATECODE }}/*
if-no-files-found: error