|
@@ -1,339 +1,63 @@
|
|
-name: Build void images
|
|
|
|
|
|
+name: Build noid images
|
|
|
|
|
|
on:
|
|
on:
|
|
workflow_dispatch:
|
|
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 aarch64 aarch64-musl asahi asahi-musl"
|
|
|
|
- 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:
|
|
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 }}
|
|
|
|
- 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
|
|
|
|
- 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
|
|
|
|
-
|
|
|
|
- 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
|
|
|
|
|
|
+ build-iso:
|
|
runs-on: ubuntu-latest
|
|
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:
|
|
container:
|
|
- image: 'ghcr.io/void-linux/void-mklive:20250116R1'
|
|
|
|
|
|
+ image: ghcr.io/void-linux/void-mklive:20250116R1
|
|
options: --privileged
|
|
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:
|
|
steps:
|
|
- - name: Prepare container
|
|
|
|
- shell: sh
|
|
|
|
- run: xbps-install -Syu xbps && xbps-install -yu
|
|
|
|
-
|
|
|
|
- - name: Clone and checkout
|
|
|
|
- uses: classabbyamp/treeless-checkout-action@v1
|
|
|
|
-
|
|
|
|
- - name: Build live ISOs
|
|
|
|
|
|
+ - name: Install required packages
|
|
run: |
|
|
run: |
|
|
- make live-iso-all-print live-iso-all \
|
|
|
|
- SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
|
|
|
|
- DATECODE="${{ needs.prepare.outputs.datecode }}" \
|
|
|
|
- LIVE_ARCHS="${{ matrix.arch }}" LIVE_FLAVORS="${{ matrix.flavor }}"
|
|
|
|
|
|
+ xbps-install -Syu
|
|
|
|
+ xbps-install -y git bash make cdrtools qemu-user-static liblz4 squashfs-tools xorriso xmlto python3 python3-Markdown
|
|
|
|
|
|
- - name: Prepare artifacts for upload
|
|
|
|
|
|
+ - name: Clone void-mklive repository
|
|
run: |
|
|
run: |
|
|
- make dist DATECODE="${{ needs.prepare.outputs.datecode }}"
|
|
|
|
- - name: Upload artifacts
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
|
|
- with:
|
|
|
|
- name: void-iso-${{ matrix.arch }}-${{ matrix.flavor }}-${{ 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 }}
|
|
|
|
-
|
|
|
|
- strategy:
|
|
|
|
- matrix:
|
|
|
|
- arch: ${{ fromJson(needs.prepare.outputs.rootfs) }}
|
|
|
|
-
|
|
|
|
- container:
|
|
|
|
- image: 'ghcr.io/void-linux/void-mklive:20250116R1'
|
|
|
|
- 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: xbps-install -Syu xbps && xbps-install -yu
|
|
|
|
-
|
|
|
|
- - 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="${{ matrix.arch }}"
|
|
|
|
-
|
|
|
|
- - 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-${{ matrix.arch }}-${{ 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 }}
|
|
|
|
|
|
+ git clone https://github.com/ndpm13/void-mklive.git
|
|
|
|
+ cd void-mklive
|
|
|
|
|
|
- strategy:
|
|
|
|
- matrix:
|
|
|
|
- platform: ${{ fromJson(needs.prepare.outputs.platformfs) }}
|
|
|
|
-
|
|
|
|
- container:
|
|
|
|
- image: 'ghcr.io/void-linux/void-mklive:20250116R1'
|
|
|
|
- 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: xbps-install -Syu xbps && xbps-install -yu
|
|
|
|
-
|
|
|
|
- - name: Clone and checkout
|
|
|
|
- uses: classabbyamp/treeless-checkout-action@v1
|
|
|
|
-
|
|
|
|
- - name: Build PLATFORMFSes
|
|
|
|
|
|
+ - name: Set up permissions
|
|
run: |
|
|
run: |
|
|
- make platformfs-all-print platformfs-all \
|
|
|
|
- SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
|
|
|
|
- DATECODE="${{ needs.prepare.outputs.datecode }}" \
|
|
|
|
- PLATFORMS="${{ matrix.platform }}"
|
|
|
|
|
|
+ cd void-mklive
|
|
|
|
+ chmod +x ./mkiso.sh
|
|
|
|
+ chmod +x ./mklive.sh
|
|
|
|
+ chmod +x ./mkrootfs.sh
|
|
|
|
+ chmod +x ./installer.sh
|
|
|
|
|
|
- - name: Prepare artifacts for upload
|
|
|
|
|
|
+ - name: Create output directory
|
|
run: |
|
|
run: |
|
|
- make dist DATECODE="${{ needs.prepare.outputs.datecode }}"
|
|
|
|
- - name: Upload artifacts
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
|
|
- with:
|
|
|
|
- name: void-platformfs-${{ matrix.platform }}-${{ 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 }}
|
|
|
|
-
|
|
|
|
- strategy:
|
|
|
|
- matrix:
|
|
|
|
- platform: ${{ fromJson(needs.prepare.outputs.sbc_imgs) }}
|
|
|
|
-
|
|
|
|
- container:
|
|
|
|
- image: 'ghcr.io/void-linux/void-mklive:20250116R1'
|
|
|
|
- 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: xbps-install -Syu xbps && xbps-install -yu
|
|
|
|
|
|
+ mkdir -p /github/workspace/images
|
|
|
|
|
|
- - name: Clone and checkout
|
|
|
|
- uses: classabbyamp/treeless-checkout-action@v1
|
|
|
|
-
|
|
|
|
- - name: Build SBC Images
|
|
|
|
|
|
+ - name: Build Noid Linux ISO
|
|
run: |
|
|
run: |
|
|
- make images-all-sbc-print images-all-sbc \
|
|
|
|
- SUDO= REPOSITORY="${{ needs.prepare.outputs.mirror }}" \
|
|
|
|
- DATECODE="${{ needs.prepare.outputs.datecode }}" \
|
|
|
|
- SBC_IMGS="${{ matrix.platform }}"
|
|
|
|
|
|
+ cd void-mklive
|
|
|
|
+ yes | ./mkiso.sh -a x86_64 -b xfce-wayland -r "https://github.com/ndpm13/xbps-repo/releases/latest/download" -- -p "neovim alacritty starship brave" -I noid -C "live.autologin" -T "Noid Linux" -v "linux-lts" -o /github/workspace/images/noid.iso
|
|
|
|
|
|
- - name: Prepare artifacts for upload
|
|
|
|
|
|
+ - name: Create release tag
|
|
|
|
+ id: create_tag
|
|
run: |
|
|
run: |
|
|
- make dist DATECODE="${{ needs.prepare.outputs.datecode }}"
|
|
|
|
- - name: Upload artifacts
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
|
|
- with:
|
|
|
|
- name: void-sbc-img-${{ matrix.platform }}-${{ 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-mklive:20250116R1'
|
|
|
|
- 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: xbps-install -Syu xbps && xbps-install -yu
|
|
|
|
|
|
+ # Get current date in YYYYMMDD format
|
|
|
|
+ DATE=$(date +"%Y%m%d")
|
|
|
|
+ echo "release_tag=noid-linux-${DATE}" >> $GITHUB_OUTPUT
|
|
|
|
|
|
- - 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
|
|
|
|
|
|
+ - name: Create GitHub Release
|
|
|
|
+ id: create_release
|
|
|
|
+ uses: softprops/action-gh-release@v1
|
|
with:
|
|
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 dl ${{ 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
|
|
|
|
|
|
+ tag_name: ${{ steps.create_tag.outputs.release_tag }}
|
|
|
|
+ name: Noid Linux Release ${{ steps.create_tag.outputs.release_tag }}
|
|
|
|
+ body: |
|
|
|
|
+ Noid Linux ISO Build
|
|
|
|
+ - Based on Void Linux (XFCE Wayland)
|
|
|
|
+ - Pre-installed packages: neovim, alacritty, starship, brave
|
|
|
|
+ - Linux kernel: linux-lts
|
|
|
|
+ files: /github/workspace/images/noid.iso
|
|
|
|
+ draft: true
|
|
|
|
+ prerelease: false
|
|
|
|
+ env:
|
|
|
|
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|