2023-04-08 12:08:07 +00:00
name : Build void images
on :
workflow_dispatch :
inputs :
datecode :
description : "Override datecode for images"
required : false
type : string
2024-02-16 04:08:50 -01:00
live_iso_flag :
description : "Build live ISOs"
default : true
required : true
type : boolean
2023-04-08 12:08:07 +00:00
live_archs :
description : "Archs to build live ISOs for"
2024-12-27 18:55:46 -01:00
default : "x86_64 x86_64-musl i686 aarch64 aarch64-musl"
2023-04-08 12:08:07 +00:00
required : false
type : string
live_flavors :
description : "Flavors to build live ISOs for"
default : "base xfce"
required : false
type : string
2024-02-16 04:08:50 -01:00
rootfs_flag :
description : "Build ROOTFSes"
default : true
required : true
type : boolean
2023-04-08 12:08:07 +00:00
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
2024-02-16 04:08:50 -01:00
platformfs_flag :
description : "Build PLATFORMFSes"
default : true
required : true
type : boolean
2023-04-08 12:08:07 +00:00
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
2024-02-16 04:08:50 -01:00
sbc_img_flag :
description : "Build SBC Images"
default : true
required : true
type : boolean
2023-04-08 12:08:07 +00:00
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
2024-02-16 04:08:50 -01:00
defaults :
run :
shell : bash
2023-04-08 12:08:07 +00:00
jobs :
2024-02-16 04:08:50 -01:00
prepare :
name : Prepare Environment
2023-04-08 12:08:07 +00:00
runs-on : ubuntu-latest
2024-02-16 04:08:50 -01:00
outputs :
datecode : ${{ steps.prep.outputs.datecode }}
revision : ${{ steps.prep.outputs.revision }}
mirror : ${{ steps.prep.outputs.mirror }}
2024-12-27 18:55:46 -01:00
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 }}
2023-04-08 12:08:07 +00:00
2024-02-16 04:08:50 -01:00
steps :
- name : Prepare Environment
id : prep
run : |
if [ -z "${{ inputs.datecode }}" ]; then
echo "datecode=$(date -u "+%Y%m%d")" >> $GITHUB_OUTPUT
else
echo "datecode=${{ inputs.datecode }}" >> $GITHUB_OUTPUT
fi
echo "revision=${GITHUB_SHA:0:8}" >> $GITHUB_OUTPUT
echo "mirror=https://repo-ci.voidlinux.org/current" >> $GITHUB_OUTPUT
2024-12-27 18:55:46 -01:00
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
2024-02-16 04:08:50 -01:00
build-live-isos :
name : Build Live ISOs
runs-on : ubuntu-latest
needs : prepare
if : ${{ inputs.live_iso_flag }}
2023-04-08 12:08:07 +00:00
2024-12-27 18:55:46 -01:00
strategy :
matrix :
arch : ${{ fromJson(needs.prepare.outputs.live_archs) }}
flavor : ${{ fromJson(needs.prepare.outputs.live_flavors) }}
2023-04-08 12:08:07 +00:00
container :
2024-02-16 04:08:50 -01:00
image : 'ghcr.io/void-linux/void-glibc-full:20231230R1'
2023-04-08 12:08:07 +00:00
options : --privileged
volumes :
- /dev:/dev
env :
PATH : '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
2024-02-16 04:08:50 -01:00
MKLIVE_REV : "${{ needs.prepare.outputs.revision }}"
2023-04-08 12:08:07 +00:00
steps :
- name : Prepare container
shell : sh
run : |
2024-02-16 04:08:50 -01:00
# Switch to mirror
2023-04-08 12:08:07 +00:00
mkdir -p /etc/xbps.d && cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
2024-02-16 04:08:50 -01:00
sed -i 's|https://repo-default.voidlinux.org/current|'"${{ needs.prepare.outputs.mirror }}"'|g' \
/etc/xbps.d/*-repository-*.conf
2024-12-27 18:55:46 -01:00
xbps-install -Syu xbps && xbps-install -yu
xbps-install -yu bash make git kmod xz lzo qemu-user-aarch64 binfmt-support outils dosfstools e2fsprogs
2023-04-08 12:08:07 +00:00
- name : Clone and checkout
uses : classabbyamp/treeless-checkout-action@v1
2024-02-16 04:08:50 -01:00
2023-04-08 12:08:07 +00:00
- name : Build live ISOs
run : |
2024-02-16 04:08:50 -01:00
make live-iso-all-print live-iso-all \
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
DATECODE="${{ needs.prepare.outputs.datecode }}" \
2024-12-27 18:55:46 -01:00
LIVE_ARCHS="${{ matrix.arch }}" LIVE_FLAVORS="${{ matrix.flavor }}"
2024-02-16 04:08:50 -01:00
- name : Prepare artifacts for upload
run : |
make dist DATECODE="${{ needs.prepare.outputs.datecode }}"
- name : Upload artifacts
uses : actions/upload-artifact@v4
with :
2024-12-27 18:55:46 -01:00
name : void-iso-${{ matrix.arch }}-${{ matrix.flavor }}-${{ needs.prepare.outputs.datecode }}
2024-02-16 04:08:50 -01:00
path : |
distdir-${{ needs.prepare.outputs.datecode }}/*
if-no-files-found : error
build-rootfs :
name : Build ROOTFSes
runs-on : ubuntu-latest
needs : prepare
if : ${{ inputs.rootfs_flag }}
2024-12-27 18:55:46 -01:00
strategy :
matrix :
arch : ${{ fromJson(needs.prepare.outputs.rootfs) }}
2024-02-16 04:08:50 -01:00
container :
image : 'ghcr.io/void-linux/void-glibc-full:20231230R1'
options : --privileged
volumes :
- /dev:/dev
env :
PATH : '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
MKLIVE_REV : "${{ needs.prepare.outputs.revision }}"
steps :
- name : Prepare container
shell : sh
run : |
# Switch to 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|'"${{ needs.prepare.outputs.mirror }}"'|g' \
/etc/xbps.d/*-repository-*.conf
2024-12-27 18:55:46 -01:00
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
2024-02-16 04:08:50 -01:00
- name : Clone and checkout
uses : classabbyamp/treeless-checkout-action@v1
2023-04-08 12:08:07 +00:00
- name : Build ROOTFSes
run : |
2024-02-16 04:08:50 -01:00
make rootfs-all-print rootfs-all \
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
DATECODE="${{ needs.prepare.outputs.datecode }}" \
2024-12-27 18:55:46 -01:00
ARCHS="${{ matrix.arch }}"
2024-02-16 04:08:50 -01:00
- name : Prepare artifacts for upload
run : |
make dist DATECODE="${{ needs.prepare.outputs.datecode }}"
- name : Upload artifacts
uses : actions/upload-artifact@v4
with :
2024-12-27 18:55:46 -01:00
name : void-rootfs-${{ matrix.arch }}-${{ needs.prepare.outputs.datecode }}
2024-02-16 04:08:50 -01:00
path : |
distdir-${{ needs.prepare.outputs.datecode }}/*
if-no-files-found : error
build-platformfs :
name : Build PLATFORMFSes
runs-on : ubuntu-latest
needs : prepare
if : ${{ inputs.platformfs_flag }}
2024-12-27 18:55:46 -01:00
strategy :
matrix :
platform : ${{ fromJson(needs.prepare.outputs.platformfs) }}
2024-02-16 04:08:50 -01:00
container :
image : 'ghcr.io/void-linux/void-glibc-full:20231230R1'
options : --privileged
volumes :
- /dev:/dev
env :
PATH : '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
MKLIVE_REV : "${{ needs.prepare.outputs.revision }}"
steps :
- name : Prepare container
shell : sh
run : |
# Switch to 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|'"${{ needs.prepare.outputs.mirror }}"'|g' \
/etc/xbps.d/*-repository-*.conf
2024-12-27 18:55:46 -01:00
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
2024-02-16 04:08:50 -01:00
- name : Clone and checkout
uses : classabbyamp/treeless-checkout-action@v1
2023-04-08 12:08:07 +00:00
- name : Build PLATFORMFSes
run : |
2024-02-16 04:08:50 -01:00
make platformfs-all-print platformfs-all \
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
DATECODE="${{ needs.prepare.outputs.datecode }}" \
2024-12-27 18:55:46 -01:00
PLATFORMS="${{ matrix.platform }}"
2024-02-16 04:08:50 -01:00
- name : Prepare artifacts for upload
2023-04-08 12:08:07 +00:00
run : |
2024-02-16 04:08:50 -01:00
make dist DATECODE="${{ needs.prepare.outputs.datecode }}"
- name : Upload artifacts
uses : actions/upload-artifact@v4
with :
2024-12-27 18:55:46 -01:00
name : void-platformfs-${{ matrix.platform }}-${{ needs.prepare.outputs.datecode }}
2024-02-16 04:08:50 -01:00
path : |
distdir-${{ needs.prepare.outputs.datecode }}/*
!distdir-${{ needs.prepare.outputs.datecode }}/*ROOTFS*
if-no-files-found : error
build-sbc-img :
name : Build SBC Images
runs-on : ubuntu-latest
needs : prepare
if : ${{ inputs.sbc_img_flag }}
2024-12-27 18:55:46 -01:00
strategy :
matrix :
platform : ${{ fromJson(needs.prepare.outputs.sbc_imgs) }}
2024-02-16 04:08:50 -01:00
container :
image : 'ghcr.io/void-linux/void-glibc-full:20231230R1'
options : --privileged
volumes :
- /dev:/dev
env :
PATH : '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
MKLIVE_REV : "${{ needs.prepare.outputs.revision }}"
steps :
- name : Prepare container
shell : sh
run : |
# Switch to 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|'"${{ needs.prepare.outputs.mirror }}"'|g' \
/etc/xbps.d/*-repository-*.conf
2024-12-27 18:55:46 -01:00
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
2024-02-16 04:08:50 -01:00
- name : Clone and checkout
uses : classabbyamp/treeless-checkout-action@v1
- name : Build SBC Images
run : |
make images-all-sbc-print images-all-sbc \
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
DATECODE="${{ needs.prepare.outputs.datecode }}" \
2024-12-27 18:55:46 -01:00
SBC_IMGS="${{ matrix.platform }}"
2024-02-16 04:08:50 -01:00
- name : Prepare artifacts for upload
run : |
make dist DATECODE="${{ needs.prepare.outputs.datecode }}"
- name : Upload artifacts
uses : actions/upload-artifact@v4
with :
2024-12-27 18:55:46 -01:00
name : void-sbc-img-${{ matrix.platform }}-${{ needs.prepare.outputs.datecode }}
2024-02-16 04:08:50 -01:00
path : |
distdir-${{ needs.prepare.outputs.datecode }}/*
!distdir-${{ needs.prepare.outputs.datecode }}/*ROOTFS*
!distdir-${{ needs.prepare.outputs.datecode }}/*PLATFORMFS*
if-no-files-found : error
merge-artifacts :
name : Combine artifacts
runs-on : ubuntu-latest
if : ${{ always() }}
needs :
- prepare
- build-live-isos
- build-rootfs
- build-platformfs
- build-sbc-img
container :
image : 'ghcr.io/void-linux/void-glibc-full:20231230R1'
env :
PATH : '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
MKLIVE_REV : "${{ needs.prepare.outputs.revision }}"
steps :
- name : Prepare container
shell : sh
run : |
# Switch to 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|'"${{ 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 outils
- name : Clone and checkout
uses : classabbyamp/treeless-checkout-action@v1
- name : Download artifacts
uses : actions/download-artifact@v4
with :
path : distdir-${{ needs.prepare.outputs.datecode }}
merge-multiple : true
2023-04-08 12:08:07 +00:00
- name : Prepare artifacts for upload
run : |
2024-02-16 04:08:50 -01:00
make checksum DATECODE="${{ needs.prepare.outputs.datecode }}"
2023-04-08 12:08:07 +00:00
- name : Upload artifacts
2024-03-12 10:29:25 -01:00
id : upload
2024-02-16 04:08:50 -01:00
uses : actions/upload-artifact@v4
2023-04-08 12:08:07 +00:00
with :
2024-02-16 04:08:50 -01:00
name : void-live-${{ needs.prepare.outputs.datecode }}
path : |
distdir-${{ needs.prepare.outputs.datecode }}/*
2023-04-08 12:08:07 +00:00
if-no-files-found : error
2024-03-12 10:29:25 -01:00
- name : Generate summary
run : |
cat << EOF >> "$GITHUB_STEP_SUMMARY"
## Images generated successfully!
### Download
2024-03-13 19:00:55 -01:00
Download the result of this run with \`./release.sh dl ${{ github.run_id }} -- -R ${{ github.repository }}\` or use [this url](${{ steps.upload.outputs.artifact-url }}).
2024-03-12 10:29:25 -01:00
### Checksums
\`\`\`
$(cat distdir-${{ needs.prepare.outputs.datecode }}/sha256sum.txt)
\`\`\`
EOF