.github/workflows/gen-images: add aarch64* live isos, matrixify jobs
also simplify environment prep and fix qemu dependencies the matrix should ensure we never run out of space while building unfortunately, github limits us to 10 inputs so we can't add a selector for live iso platforms
This commit is contained in:
parent
3d239df517
commit
71fabc67f8
|
@ -14,7 +14,7 @@ on:
|
|||
type: boolean
|
||||
live_archs:
|
||||
description: "Archs to build live ISOs for"
|
||||
default: "x86_64 x86_64-musl i686"
|
||||
default: "x86_64 x86_64-musl i686 aarch64 aarch64-musl"
|
||||
required: false
|
||||
type: string
|
||||
live_flavors:
|
||||
|
@ -69,6 +69,11 @@ jobs:
|
|||
datecode: ${{ steps.prep.outputs.datecode }}
|
||||
revision: ${{ steps.prep.outputs.revision }}
|
||||
mirror: ${{ steps.prep.outputs.mirror }}
|
||||
live_archs: ${{ steps.prep.outputs.live_archs }}
|
||||
live_flavors: ${{ steps.prep.outputs.live_flavors }}
|
||||
rootfs: ${{ steps.prep.outputs.rootfs }}
|
||||
platformfs: ${{ steps.prep.outputs.platformfs }}
|
||||
sbc_imgs: ${{ steps.prep.outputs.sbc_imgs }}
|
||||
|
||||
steps:
|
||||
- name: Prepare Environment
|
||||
|
@ -82,12 +87,28 @@ jobs:
|
|||
echo "revision=${GITHUB_SHA:0:8}" >> $GITHUB_OUTPUT
|
||||
echo "mirror=https://repo-ci.voidlinux.org/current" >> $GITHUB_OUTPUT
|
||||
|
||||
jsonify() {
|
||||
sed 's/\s\+/ /g' | jq -Rrc 'split(" ")'
|
||||
}
|
||||
|
||||
echo "live_archs=$(echo "${{ inputs.live_archs }}" | jsonify)" >> $GITHUB_OUTPUT
|
||||
echo "live_flavors=$(echo "${{ inputs.live_flavors }}" | jsonify)" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "rootfs=$(echo "${{ inputs.rootfs }}" | jsonify)" >> $GITHUB_OUTPUT
|
||||
echo "platformfs=$(echo "${{ inputs.platformfs }}" | jsonify)" >> $GITHUB_OUTPUT
|
||||
echo "sbc_imgs=$(echo "${{ inputs.sbc_imgs }}" | jsonify)" >> $GITHUB_OUTPUT
|
||||
|
||||
build-live-isos:
|
||||
name: Build Live ISOs
|
||||
runs-on: ubuntu-latest
|
||||
needs: prepare
|
||||
if: ${{ inputs.live_iso_flag }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: ${{ fromJson(needs.prepare.outputs.live_archs) }}
|
||||
flavor: ${{ fromJson(needs.prepare.outputs.live_flavors) }}
|
||||
|
||||
container:
|
||||
image: 'ghcr.io/void-linux/void-glibc-full:20231230R1'
|
||||
options: --privileged
|
||||
|
@ -105,12 +126,8 @@ jobs:
|
|||
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
|
||||
sed -i 's|https://repo-default.voidlinux.org/current|'"${{ needs.prepare.outputs.mirror }}"'|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
|
||||
xbps-install -Syu xbps && xbps-install -yu
|
||||
xbps-install -yu bash make git kmod xz lzo qemu-user-aarch64 binfmt-support outils dosfstools e2fsprogs
|
||||
- name: Clone and checkout
|
||||
uses: classabbyamp/treeless-checkout-action@v1
|
||||
|
||||
|
@ -119,7 +136,7 @@ jobs:
|
|||
make live-iso-all-print live-iso-all \
|
||||
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
|
||||
DATECODE="${{ needs.prepare.outputs.datecode }}" \
|
||||
LIVE_ARCHS="${{ inputs.live_archs }}" LIVE_FLAVORS="${{ inputs.live_flavors }}"
|
||||
LIVE_ARCHS="${{ matrix.arch }}" LIVE_FLAVORS="${{ matrix.flavor }}"
|
||||
|
||||
- name: Prepare artifacts for upload
|
||||
run: |
|
||||
|
@ -127,7 +144,7 @@ jobs:
|
|||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: void-iso-${{ needs.prepare.outputs.datecode }}
|
||||
name: void-iso-${{ matrix.arch }}-${{ matrix.flavor }}-${{ needs.prepare.outputs.datecode }}
|
||||
path: |
|
||||
distdir-${{ needs.prepare.outputs.datecode }}/*
|
||||
if-no-files-found: error
|
||||
|
@ -138,6 +155,10 @@ jobs:
|
|||
needs: prepare
|
||||
if: ${{ inputs.rootfs_flag }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: ${{ fromJson(needs.prepare.outputs.rootfs) }}
|
||||
|
||||
container:
|
||||
image: 'ghcr.io/void-linux/void-glibc-full:20231230R1'
|
||||
options: --privileged
|
||||
|
@ -155,12 +176,8 @@ jobs:
|
|||
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
|
||||
sed -i 's|https://repo-default.voidlinux.org/current|'"${{ needs.prepare.outputs.mirror }}"'|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
|
||||
xbps-install -Syu xbps && xbps-install -yu
|
||||
xbps-install -yu bash make git kmod xz lzo qemu-user-arm qemu-user-aarch64 binfmt-support outils dosfstools e2fsprogs
|
||||
- name: Clone and checkout
|
||||
uses: classabbyamp/treeless-checkout-action@v1
|
||||
|
||||
|
@ -169,7 +186,7 @@ jobs:
|
|||
make rootfs-all-print rootfs-all \
|
||||
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
|
||||
DATECODE="${{ needs.prepare.outputs.datecode }}" \
|
||||
ARCHS="${{ inputs.rootfs }}"
|
||||
ARCHS="${{ matrix.arch }}"
|
||||
|
||||
- name: Prepare artifacts for upload
|
||||
run: |
|
||||
|
@ -177,7 +194,7 @@ jobs:
|
|||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: void-rootfs-${{ needs.prepare.outputs.datecode }}
|
||||
name: void-rootfs-${{ matrix.arch }}-${{ needs.prepare.outputs.datecode }}
|
||||
path: |
|
||||
distdir-${{ needs.prepare.outputs.datecode }}/*
|
||||
if-no-files-found: error
|
||||
|
@ -188,6 +205,10 @@ jobs:
|
|||
needs: prepare
|
||||
if: ${{ inputs.platformfs_flag }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
platform: ${{ fromJson(needs.prepare.outputs.platformfs) }}
|
||||
|
||||
container:
|
||||
image: 'ghcr.io/void-linux/void-glibc-full:20231230R1'
|
||||
options: --privileged
|
||||
|
@ -205,12 +226,8 @@ jobs:
|
|||
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
|
||||
sed -i 's|https://repo-default.voidlinux.org/current|'"${{ needs.prepare.outputs.mirror }}"'|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
|
||||
xbps-install -Syu xbps && xbps-install -yu
|
||||
xbps-install -yu bash make git kmod xz lzo qemu-user-arm qemu-user-aarch64 binfmt-support outils dosfstools e2fsprogs
|
||||
- name: Clone and checkout
|
||||
uses: classabbyamp/treeless-checkout-action@v1
|
||||
|
||||
|
@ -219,7 +236,7 @@ jobs:
|
|||
make platformfs-all-print platformfs-all \
|
||||
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
|
||||
DATECODE="${{ needs.prepare.outputs.datecode }}" \
|
||||
PLATFORMS="${{ inputs.platformfs }}"
|
||||
PLATFORMS="${{ matrix.platform }}"
|
||||
|
||||
- name: Prepare artifacts for upload
|
||||
run: |
|
||||
|
@ -227,7 +244,7 @@ jobs:
|
|||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: void-platformfs-${{ needs.prepare.outputs.datecode }}
|
||||
name: void-platformfs-${{ matrix.platform }}-${{ needs.prepare.outputs.datecode }}
|
||||
path: |
|
||||
distdir-${{ needs.prepare.outputs.datecode }}/*
|
||||
!distdir-${{ needs.prepare.outputs.datecode }}/*ROOTFS*
|
||||
|
@ -239,6 +256,10 @@ jobs:
|
|||
needs: prepare
|
||||
if: ${{ inputs.sbc_img_flag }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
platform: ${{ fromJson(needs.prepare.outputs.sbc_imgs) }}
|
||||
|
||||
container:
|
||||
image: 'ghcr.io/void-linux/void-glibc-full:20231230R1'
|
||||
options: --privileged
|
||||
|
@ -256,12 +277,8 @@ jobs:
|
|||
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
|
||||
sed -i 's|https://repo-default.voidlinux.org/current|'"${{ needs.prepare.outputs.mirror }}"'|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
|
||||
xbps-install -Syu xbps && xbps-install -yu
|
||||
xbps-install -yu bash make git kmod xz lzo qemu-user-arm qemu-user-aarch64 binfmt-support outils dosfstools e2fsprogs
|
||||
- name: Clone and checkout
|
||||
uses: classabbyamp/treeless-checkout-action@v1
|
||||
|
||||
|
@ -270,7 +287,7 @@ jobs:
|
|||
make images-all-sbc-print images-all-sbc \
|
||||
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
|
||||
DATECODE="${{ needs.prepare.outputs.datecode }}" \
|
||||
SBC_IMGS="${{ inputs.sbc_imgs }}"
|
||||
SBC_IMGS="${{ matrix.platform }}"
|
||||
|
||||
- name: Prepare artifacts for upload
|
||||
run: |
|
||||
|
@ -278,7 +295,7 @@ jobs:
|
|||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: void-sbc-img-${{ needs.prepare.outputs.datecode }}
|
||||
name: void-sbc-img-${{ matrix.platform }}-${{ needs.prepare.outputs.datecode }}
|
||||
path: |
|
||||
distdir-${{ needs.prepare.outputs.datecode }}/*
|
||||
!distdir-${{ needs.prepare.outputs.datecode }}/*ROOTFS*
|
||||
|
|
Loading…
Reference in New Issue