Ver Fonte

🔄ci: add the build workflow

Naz há 2 semanas atrás
pai
commit
70c80a943b
2 ficheiros alterados com 40 adições e 408 exclusões
  1. 0 92
      .github/workflows/container.yaml
  2. 40 316
      .github/workflows/gen-images.yml

+ 0 - 92
.github/workflows/container.yaml

@@ -1,92 +0,0 @@
----
-name: 'Build container'
-
-on:
-  workflow_dispatch:
-  pull_request:
-    branches:
-      - master
-    paths:
-      - container/**
-  push:
-    branches:
-      - master
-    paths:
-      - container/**
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-jobs:
-  build:
-    runs-on: ubuntu-latest
-
-    permissions:
-      contents: read
-      packages: write
-
-    steps:
-      - name: Checkout
-        uses: classabbyamp/treeless-checkout-action@v1
-
-      - name: Get image release
-        id: release
-        run: |
-          # gets the list of all date-shaped tags for the image, finds the most recent one
-          tag="$(skopeo list-tags "docker://ghcr.io/${{ github.repository_owner }}/void-mklive" | \
-            jq -r '.Tags | sort | reverse | map(select(test("^[0-9]{8}(R[0-9]+)?$")))[0]')"
-          # tags from a different day or pre-YYYYMMDDRN
-          if [ "${tag%R*}" != "$(date -u +%Y%m%d)" ] || [ "${tag%R*}" = "${tag}" ]; then
-            rel=1
-          else
-            rel=$(( ${tag##*R} + 1 ))
-          fi
-          echo "rel=${rel}" >> "${GITHUB_OUTPUT}"
-
-      - name: Docker metadata
-        id: meta
-        uses: docker/metadata-action@v4
-        with:
-          images: |
-            ghcr.io/${{ github.repository_owner }}/void-mklive
-          tags: |
-            type=sha,prefix=
-            type=raw,value=latest,enable={{is_default_branch}}
-            type=raw,value={{date 'YYYYMMDD'}}R${{ steps.release.outputs.rel }},enable={{is_default_branch}},priority=1000
-          flavor: latest=false
-          labels: |
-            org.opencontainers.image.authors=Void Linux team and contributors
-            org.opencontainers.image.url=https://voidlinux.org
-            org.opencontainers.image.documentation=https://github.com/${{ github.repository }}
-            org.opencontainers.image.source=https://github.com/${{ github.repository }}
-            org.opencontainers.image.vendor=Void Linux
-            org.opencontainers.image.title=Void Linux mklive container
-            org.opencontainers.image.description=Image for building mklive images
-
-      - name: Set up QEMU
-        uses: docker/setup-qemu-action@v2
-
-      - name: Set up Docker Buildx
-        uses: docker/setup-buildx-action@v2
-
-      - name: Login to GCHR
-        if: github.event_name != 'pull_request'
-        uses: docker/login-action@v2
-        with:
-          registry: ghcr.io
-          username: ${{ github.actor }}
-          password: ${{ secrets.GITHUB_TOKEN }}
-
-      - name: Build and push images
-        id: build_and_push
-        uses: docker/bake-action@v5
-        with:
-          push: ${{ github.event_name != 'pull_request' }}
-          targets: void-mklive
-          files: |
-            container/docker-bake.hcl
-            ${{ steps.meta.outputs.bake-file }}
-          set: |
-            _common.cache-to=type=gha
-            _common.cache-from=type=gha

+ 40 - 316
.github/workflows/gen-images.yml

@@ -1,339 +1,63 @@
-name: Build void images
+name: Build noid 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 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:
-  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
-    needs: prepare
-    if: ${{ inputs.live_iso_flag }}
-
-    strategy:
-      matrix:
-        arch: ${{ fromJson(needs.prepare.outputs.live_archs) }}
-        flavor: ${{ fromJson(needs.prepare.outputs.live_flavors) }}
-
     container:
-      image: 'ghcr.io/void-linux/void-mklive:20250116R1'
+      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 live ISOs
+      - name: Install required packages
         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: |
-          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: |
-          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: |
-          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: |
-          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: |
-          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:
-          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 }}