Build void images #56
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 | |
live_iso_flag: | |
description: "Build live ISOs" | |
default: true | |
required: true | |
type: boolean | |
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_flag: | |
description: "Build ROOTFSes" | |
default: true | |
required: true | |
type: boolean | |
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_flag: | |
description: "Build PLATFORMFSes" | |
default: true | |
required: true | |
type: boolean | |
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_img_flag: | |
description: "Build SBC Images" | |
default: true | |
required: true | |
type: boolean | |
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 | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
prepare: | |
name: Prepare Environment | |
runs-on: ubuntu-latest | |
outputs: | |
datecode: ${{ steps.prep.outputs.datecode }} | |
revision: ${{ steps.prep.outputs.revision }} | |
mirror: ${{ steps.prep.outputs.mirror }} | |
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 | |
build-live-isos: | |
name: Build Live ISOs | |
runs-on: ubuntu-latest | |
needs: prepare | |
if: ${{ inputs.live_iso_flag }} | |
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 | |
# 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 live-iso-all \ | |
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \ | |
DATECODE="${{ needs.prepare.outputs.datecode }}" \ | |
LIVE_ARCHS="${{ inputs.live_archs }}" LIVE_FLAVORS="${{ inputs.live_flavors }}" | |
- name: Prepare artifacts for upload | |
run: | | |
make dist DATECODE="${{ needs.prepare.outputs.datecode }}" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: void-iso-${{ needs.prepare.outputs.datecode }} | |
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 }} | |
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 | |
# 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 rootfs-all \ | |
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \ | |
DATECODE="${{ needs.prepare.outputs.datecode }}" \ | |
ARCHS="${{ inputs.rootfs }}" | |
- name: Prepare artifacts for upload | |
run: | | |
make dist DATECODE="${{ needs.prepare.outputs.datecode }}" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: void-rootfs-${{ needs.prepare.outputs.datecode }} | |
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 }} | |
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 | |
# 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 platformfs-all \ | |
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \ | |
DATECODE="${{ needs.prepare.outputs.datecode }}" \ | |
PLATFORMS="${{ inputs.platformfs }}" | |
- name: Prepare artifacts for upload | |
run: | | |
make dist DATECODE="${{ needs.prepare.outputs.datecode }}" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: void-platformfs-${{ needs.prepare.outputs.datecode }} | |
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 }} | |
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 | |
# 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 images-all-sbc-print images-all-sbc \ | |
SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \ | |
DATECODE="${{ needs.prepare.outputs.datecode }}" \ | |
SBC_IMGS="${{ inputs.sbc_imgs }}" | |
- name: Prepare artifacts for upload | |
run: | | |
make dist DATECODE="${{ needs.prepare.outputs.datecode }}" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: void-sbc-img-${{ needs.prepare.outputs.datecode }} | |
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 | |
- name: Prepare artifacts for upload | |
run: | | |
make checksum DATECODE="${{ needs.prepare.outputs.datecode }}" | |
- name: Upload artifacts | |
id: upload | |
uses: actions/upload-artifact@v4 | |
with: | |
name: void-live-${{ needs.prepare.outputs.datecode }} | |
path: | | |
distdir-${{ needs.prepare.outputs.datecode }}/* | |
if-no-files-found: error | |
- name: Generate summary | |
run: | | |
cat << EOF >> "$GITHUB_STEP_SUMMARY" | |
## Images generated successfully! | |
### Download | |
Download the result of this run with `./release.sh "${{ github.run_id }}" -- -R "${{ github.repository }}"` | |
or [use this url](${{ steps.upload.outputs.artifact-url }}). | |
### Checksums | |
``` | |
$(cat distdir-${{ needs.prepare.outputs.datecode }}/sha256sum.txt) | |
``` | |
EOF |