Browse Source

.github/workflows/gen-images.yml: create CI workflow

for creation of images
classabbyamp 2 years ago
parent
commit
d5ef9ec033
1 changed files with 130 additions and 0 deletions
  1. 130 0
      .github/workflows/gen-images.yml

+ 130 - 0
.github/workflows/gen-images.yml

@@ -0,0 +1,130 @@
+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:
+  build:
+    name: Build
+    runs-on: ubuntu-latest
+
+    defaults:
+      run:
+        shell: bash
+
+    container:
+      image: 'ghcr.io/void-linux/void-linux:20230204RC01-full-x86_64'
+      options: --privileged
+      volumes:
+        - /dev:/dev
+      env:
+        PATH: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/tmp/bin'
+        DATECODE: "${{ inputs.datecode }}"
+        LIVE_ARCHS: "${{ inputs.live_archs }}"
+        LIVE_FLAVORS: "${{ inputs.live_flavors }}"
+        ROOTFS_ARCHS: "${{ inputs.rootfs }}"
+        PLATFORMS: "${{ inputs.platformfs }}"
+        SBC_IMGS: "${{ inputs.sbc_imgs }}"
+        REPO: "${{ inputs.mirror }}"
+
+    steps:
+      - name: Prepare container
+        shell: sh
+        run: |
+          # Switch to repo-ci 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: Prepare environment
+        run: |
+          echo "DATECODE=$(date -u "+%Y%m%d")" >> $GITHUB_ENV
+          echo "MKLIVE_REV=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
+      - name: Build live ISOs
+        run: |
+          if ! [[ "$LIVE_ARCHS" = "none" || "$LIVE_FLAVORS" = "none" ]]; then
+              make live-iso-all{-print,} \
+                  LIVE_ARCHS="$LIVE_ARCHS" LIVE_FLAVORS="$LIVE_FLAVORS" \
+                  SUDO= REPOSITORY="$REPO" DATECODE=$DATECODE
+          else
+              echo "Nothing to do..."
+          fi
+      - name: Build ROOTFSes
+        run: |
+          if ! [ "$ROOTFS_ARCHS" = "none" ]; then
+              make rootfs-all{-print,} \
+                  SUDO= ARCHS="$ROOTFS_ARCHS" REPOSITORY="$REPO" DATECODE=$DATECODE
+          else
+              echo "Nothing to do..."
+          fi
+      - name: Build PLATFORMFSes
+        run: |
+          if ! [ "$PLATFORMS" = "none" ]; then
+              make platformfs-all{-print,} \
+                  SUDO= PLATFORMS="$PLATFORMS" REPOSITORY="$REPO" DATECODE=$DATECODE
+          else
+              echo "Nothing to do..."
+          fi
+      - name: Build SBC images
+        run: |
+          if ! [ "$SBC_IMGS" = "none" ]; then
+              make images-all-sbc{-print,} \
+                  SUDO= SBC_IMGS="$SBC_IMGS" REPOSITORY="$REPO" DATECODE=$DATECODE
+          else
+              echo "Nothing to do..."
+          fi
+      - name: Prepare artifacts for upload
+        run: |
+          make dist checksum DATECODE=$DATECODE
+      - name: Upload artifacts
+        uses: actions/upload-artifact@v3
+        with:
+          name: void-live-${{ env.DATECODE }}
+          path: distdir-${{ env.DATECODE }}/*
+          if-no-files-found: error