Build void images #41
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: | ||
prepare: | ||
defaults: | ||
run: | ||
shell: bash | ||
outputs: | ||
datecode: ${{ steps.prep.outputs.datecode }} | ||
revision: ${{ steps.prep.outputs.revision }} | ||
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 | ||
build-live-isos: | ||
name: Build Live ISOs | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
if: ${{ inputs.live_archs != '' && inputs.live_flavors != '' }} | ||
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' | ||
DATECODE: "${{ needs.prepare.outputs.datecode }}" | ||
MKLIVE_REV: "${{ needs.prepare.outputs.revision }}" | ||
REPO: "${{ inputs.mirror }}" | ||
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|'"$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: Build live ISOs | ||
run: | | ||
make live-iso-all{-print,} \ | ||
SUDO= REPOSITORY="$REPO" DATECODE=$DATECODE \ | ||
LIVE_ARCHS="${{ inputs.live_archs }}" LIVE_FLAVORS="${{ inputs.live_flavors }}" | ||
- name: Prepare artifacts for upload | ||
run: | | ||
make dist checksum DATECODE=$DATECODE | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: void-live-${{ env.DATECODE }} | ||
path: | | ||
distdir-${{ env.DATECODE }}/* | ||
if-no-files-found: error | ||
build-rootfs: | ||
name: Build ROOTFSes | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
if: ${{ inputs.rootfs != '' }} | ||
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' | ||
DATECODE: "${{ needs.prepare.outputs.datecode }}" | ||
MKLIVE_REV: "${{ needs.prepare.outputs.revision }}" | ||
REPO: "${{ inputs.mirror }}" | ||
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|'"$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: Build ROOTFSes | ||
run: | | ||
make rootfs-all{-print,} \ | ||
SUDO= REPOSITORY="$REPO" DATECODE=$DATECODE \ | ||
ARCHS="${{ inputs.rootfs }}" | ||
- name: Prepare artifacts for upload | ||
run: | | ||
make dist checksum DATECODE="$DATECODE" | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: void-rootfs-${{ env.DATECODE }} | ||
path: | | ||
distdir-${{ env.DATECODE }}/* | ||
if-no-files-found: error | ||
build-platformfs: | ||
name: Build PLATFORMFSes | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
if: ${{ inputs.platformfs != '' }} | ||
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' | ||
DATECODE: "${{ needs.prepare.outputs.datecode }}" | ||
MKLIVE_REV: "${{ needs.prepare.outputs.revision }}" | ||
REPO: "${{ inputs.mirror }}" | ||
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|'"$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: Build PLATFORMFSes | ||
run: | | ||
make platformfs-all{-print,} \ | ||
SUDO= REPOSITORY="$REPO" DATECODE=$DATECODE \ | ||
PLATFORMS="${{ inputs.platformfs }}" | ||
- name: Prepare artifacts for upload | ||
run: | | ||
make dist checksum DATECODE="$DATECODE" | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: void-platformfs-${{ env.DATECODE }} | ||
path: | | ||
distdir-${{ env.DATECODE }}/* | ||
!distdir-${{ env.DATECODE }}/*ROOTFS* | ||
if-no-files-found: error | ||
build-sbc-img: | ||
name: Build SBC Images | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
if: ${{ inputs.sbc_imgs != '' }} | ||
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' | ||
DATECODE: "${{ needs.prepare.outputs.datecode }}" | ||
MKLIVE_REV: "${{ needs.prepare.outputs.revision }}" | ||
REPO: "${{ inputs.mirror }}" | ||
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|'"$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: Build SBC Images | ||
run: | | ||
make platformfs-all{-print,} \ | ||
SUDO= REPOSITORY="$REPO" DATECODE=$DATECODE \ | ||
SBC_IMGS="${{ inputs.sbc_imgs }}" | ||
- name: Prepare artifacts for upload | ||
run: | | ||
make dist checksum DATECODE="$DATECODE" | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: void-sbc-img-${{ env.DATECODE }} | ||
path: | | ||
distdir-${{ env.DATECODE }}/* | ||
!distdir-${{ env.DATECODE }}/*ROOTFS* | ||
!distdir-${{ env.DATECODE }}/*PLATFORMFS* | ||
if-no-files-found: error |