diff --git a/.github/workflows/create_experimental_release.yml b/.github/workflows/create_experimental_release.yml new file mode 100644 index 0000000..91d0ca0 --- /dev/null +++ b/.github/workflows/create_experimental_release.yml @@ -0,0 +1,325 @@ +name: Experimental Release + +on: + workflow_dispatch: + inputs: + init_arm64: + type: boolean + default: false + description: "Create arm64 Init" + init_x64: + type: boolean + default: false + description: "Create x64 Init" + init_x86: + type: boolean + default: false + description: "Create x86 Init" + kernel_arm64: + type: boolean + default: false + description: "Create arm64 kernel" + kernel_x64: + type: boolean + default: false + description: "Create x64 kernel" + kernel_x86: + type: boolean + default: false + description: "Create x86 kernel" + +defaults: + run: + shell: bash + +jobs: + input_checks: + runs-on: ubuntu-22.04 + + steps: + - name: Make sure at least one workflow input is selected + run: | + init_arm64="${{ inputs.init_arm64 }}" + init_x64="${{ inputs.init_x64 }}" + init_x86="${{ inputs.init_x86 }}" + kernel_arm64="${{ inputs.kernel_arm64 }}" + kernel_x64="${{ inputs.kernel_x64 }}" + kernel_x86="${{ inputs.kernel_x86 }}" + if [[ "$init_arm64" == "false" && "$init_x64" == "false" && "$init_x86" == "false" && "$kernel_arm64" == "false" && "$kernel_x64" == "false" && "$kernel_x86" == "false" ]]; then + echo "No kernels or inits selected to build." + exit 1 + fi + + build_kernel_arm64: + needs: input_checks + + if: ${{ inputs.kernel_arm64 }} + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y + + - name: Build arm64 kernel + run: ./build.sh -nka arm64 + + - name: Run sha256 checksum + run: | + cd dist + sha256sum -c ./*.sha256 + if [[ $? -ne 0 ]]; then exit 1; fi + + - name: Save distribution files + uses: actions/upload-artifact@v4 + with: + name: distribution-files-kernel-arm64 + path: dist + retention-days: 1 + + build_kernel_x86: + needs: input_checks + + if: ${{ inputs.kernel_x86 }} + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y + + - name: Build x86 kernel + run: ./build.sh -nka x86 + + - name: Run sha256 checksum + run: | + cd dist + sha256sum -c ./*.sha256 + if [[ $? -ne 0 ]]; then exit 1; fi + + - name: Save distribution files + uses: actions/upload-artifact@v4 + with: + name: distribution-files-kernel-x86 + path: dist + retention-days: 1 + + build_kernel_x64: + needs: input_checks + + if: ${{ inputs.kernel_x64 }} + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y + + - name: Build x64 kernel + run: ./build.sh -nka x64 + + - name: Run sha256 checksum + run: | + cd dist + sha256sum -c ./*.sha256 + if [[ $? -ne 0 ]]; then exit 1; fi + + - name: Save distribution files + uses: actions/upload-artifact@v4 + with: + name: distribution-files-kernel-x64 + path: dist + retention-days: 1 + + build_initrd_arm64: + needs: input_checks + + if: ${{ inputs.init_arm64 }} + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y + + - name: Build arm64 initrd + run: ./build.sh -nfa arm64 + + - name: Run sha256 checksum + run: | + cd dist + sha256sum -c ./*.sha256 + if [[ $? -ne 0 ]]; then exit 1; fi + + - name: Save distribution files + uses: actions/upload-artifact@v4 + with: + name: distribution-files-initrd-arm64 + path: dist + retention-days: 1 + + - name: Save log file + uses: actions/upload-artifact@v4 + with: + name: Buildroot-logs-arm64 + path: fssourcearm64/buildrootarm64.log + retention-days: 30 + + build_initrd_x86: + needs: input_checks + + if: ${{ inputs.init_x86 }} + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y + + - name: Build x86 initrd + run: ./build.sh -nfa x86 + + - name: Run sha256 checksum + run: | + cd dist + sha256sum -c ./*.sha256 + if [[ $? -ne 0 ]]; then exit 1; fi + + - name: Save distribution files + uses: actions/upload-artifact@v4 + with: + name: distribution-files-initrd-x86 + path: dist + retention-days: 1 + + - name: Save log file + uses: actions/upload-artifact@v4 + with: + name: Buildroot-logs-x86 + path: fssourcex86/buildrootx86.log + retention-days: 30 + + build_initrd_x64: + needs: input_checks + + if: ${{ inputs.init_x64 }} + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y + + - name: Build x64 initrd + run: ./build.sh -nfa x64 + + - name: Run sha256 checksum + run: | + cd dist + sha256sum -c ./*.sha256 + if [[ $? -ne 0 ]]; then exit 1; fi + + - name: Save distribution files + uses: actions/upload-artifact@v4 + with: + name: distribution-files-initrd-x64 + path: dist + retention-days: 1 + + - name: Save log file + uses: actions/upload-artifact@v4 + with: + name: Buildroot-logs-x64 + path: fssourcex64/buildrootx64.log + retention-days: 30 + + release: + needs: + [ + build_kernel_arm64, + build_kernel_x86, + build_kernel_x64, + build_initrd_arm64, + build_initrd_x86, + build_initrd_x64, + ] + + if: | + always() && + !contains(needs.*.result, 'failure') && + !contains(needs.*.result, 'cancelled') + + runs-on: ubuntu-22.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download distribution files + uses: actions/download-artifact@v4 + with: + pattern: distribution-files-* + merge-multiple: true + path: distribution-files + + - name: Set release name variable + run: | + echo "RELEASE_NAME=Experimental release from $(date '+%Y-%m-%d')" >> $GITHUB_ENV + + - name: Set tag name variable + run: | + echo "TAG_NAME=EXP_$(date '+%Y%m%d')" >> $GITHUB_ENV + + - name: Get Linux Kernel version from build.sh + run: | + echo "LINUX_KERNEL_VER=$(cat build.sh | sed -n -e 's/^.*KERNEL_VERSION=//p' | cut -d\' -f 2)" >> $GITHUB_ENV + + - name: Get Buildroot version from build.sh + run: | + echo "BUILDROOT_VER=$(cat build.sh | sed -n -e 's/^.*BUILDROOT_VERSION=//p' | cut -d\' -f 2)" >> $GITHUB_ENV + + - name: Run sha256 checksum on all files + run: | + cd distribution-files + sha256sum -c ./*.sha256 + if [[ $? -ne 0 ]]; then exit 1; fi + + - name: Create release body + run: | + release_body_text="WARNING! This is an experimental releases. Backup your previous kernels/inits before installing these.\n\n" + # + if [[ "${{ inputs.kernel_arm64 }}" == "true" || "${{ inputs.kernel_x64 }}" == "true" || "${{ inputs.kernel_x86 }}" == "true" ]]; then + release_body_text+="Linux kernel ${{ env.LINUX_KERNEL_VER}}\n" + fi + # + if [[ "${{ inputs.init_arm64 }}" == "true" || "${{ inputs.init_x64 }}" == "true" || "${{ inputs.init_x86 }}" == "true" ]]; then + release_body_text+="Buildroot ${{ env.BUILDROOT_VER}}" + fi + # GH Actions way of making a multiline text environment variable + { + echo 'RELEASE_BODY_TEXT<> "$GITHUB_ENV" + + - name: Create release + uses: softprops/action-gh-release@v2 + with: + name: ${{ env.RELEASE_NAME }} + body: ${{ env.RELEASE_BODY_TEXT }} + tag_name: ${{ env.TAG_NAME }} + prerelease: true + files: | + distribution-files/* diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 16dc5fc..936f146 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -1,4 +1,4 @@ -name: Create Release +name: Create Latest/Official Release on: workflow_dispatch: @@ -42,7 +42,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y @@ -57,9 +57,9 @@ jobs: if [[ $? -ne 0 ]]; then exit 1; fi - name: Save distribution files - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: distribution-files + name: distribution-files-kernel-arm64 path: dist retention-days: 1 @@ -70,7 +70,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y @@ -85,9 +85,9 @@ jobs: if [[ $? -ne 0 ]]; then exit 1; fi - name: Save distribution files - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: distribution-files + name: distribution-files-kernel-x86 path: dist retention-days: 1 @@ -98,7 +98,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y @@ -113,9 +113,9 @@ jobs: if [[ $? -ne 0 ]]; then exit 1; fi - name: Save distribution files - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: distribution-files + name: distribution-files-kernel-x64 path: dist retention-days: 1 @@ -126,7 +126,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y @@ -141,16 +141,16 @@ jobs: if [[ $? -ne 0 ]]; then exit 1; fi - name: Save distribution files - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: distribution-files + name: distribution-files-initrd-arm64 path: dist retention-days: 1 - name: Save log file - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: Buildroot-logs + name: Buildroot-logs-arm64 path: fssourcearm64/buildrootarm64.log retention-days: 30 @@ -161,7 +161,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y @@ -176,16 +176,16 @@ jobs: if [[ $? -ne 0 ]]; then exit 1; fi - name: Save distribution files - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: distribution-files + name: distribution-files-initrd-x86 path: dist retention-days: 1 - name: Save log file - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: Buildroot-logs + name: Buildroot-logs-x86 path: fssourcex86/buildrootx86.log retention-days: 30 @@ -196,7 +196,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: sudo apt update && sudo apt install meld build-essential libncurses5-dev bison flex gcc-aarch64-linux-gnu libelf-dev -y @@ -211,16 +211,16 @@ jobs: if [[ $? -ne 0 ]]; then exit 1; fi - name: Save distribution files - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: distribution-files + name: distribution-files-initrd-x64 path: dist retention-days: 1 - name: Save log file - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: Buildroot-logs + name: Buildroot-logs-x64 path: fssourcex64/buildrootx64.log retention-days: 30 @@ -239,11 +239,16 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Download distribution files - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 + with: + pattern: distribution-files-* + merge-multiple: true + path: distribution-files + # DO NOT change the release name. FOG uses this format to grab the releases for the Kernel Update page. - name: Set release name variable run: | echo "RELEASE_NAME=Latest from $(date '+%Y-%m-%d')" >> $GITHUB_ENV @@ -260,6 +265,7 @@ jobs: run: | echo "BUILDROOT_VER=$(cat build.sh | sed -n -e 's/^.*BUILDROOT_VERSION=//p' | cut -d\' -f 2)" >> $GITHUB_ENV + # DO NOT change the release name. FOG uses this format to grab the releases for the Kernel Update page. - name: Set release name and tag name variable if it is an Official FOG release run: | is_official="${{ inputs.is_official_release }}" @@ -276,7 +282,7 @@ jobs: if [[ $? -ne 0 ]]; then exit 1; fi - name: Create release - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: name: ${{ env.RELEASE_NAME }} body: |