Skip to content

build-gablue-isos

build-gablue-isos #11

name: build-gablue-isos
permissions:
contents: write
on:
schedule:
- cron: "0 0 */5 * *"
workflow_dispatch:
jobs:
build-and-upload-isos:
name: build-gablue-isos
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
iso:
- name: "gablue-main"
repo: "ghcr.io/elgabo86"
tag: "latest"
version: "41"
variant: "Kinoite"
- name: "gablue-nvidia"
repo: "ghcr.io/elgabo86"
tag: "latest"
version: "41"
variant: "Kinoite"
- name: "gablue-nvidia-open"
repo: "ghcr.io/elgabo86"
tag: "latest"
version: "41"
variant: "Kinoite"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build ISO
uses: jasonn3/build-container-installer@main
id: build
with:
arch: "x86_64"
image_name: ${{ matrix.iso.name }}
image_repo: ${{ matrix.iso.repo }}
image_tag: ${{ matrix.iso.tag }}
version: ${{ matrix.iso.version }}
variant: ${{ matrix.iso.variant }}
iso_name: ${{ matrix.iso.name }}-${{ matrix.iso.tag }}-${{ matrix.iso.version }}.iso
- name: Generate Checksum
id: checksum
run: |
ISO_PATH="${{ matrix.iso.name }}-${{ matrix.iso.tag }}-${{ matrix.iso.version }}.iso"
CHECKSUM_FILE="${{ matrix.iso.name }}-${{ matrix.iso.tag }}-${{ matrix.iso.version }}.iso.sha256"
sha256sum "$ISO_PATH" > "$CHECKSUM_FILE"
echo "Checksum generated: $CHECKSUM_FILE"
echo "checksum_file=$CHECKSUM_FILE" >> $GITHUB_OUTPUT
- name: Upload ISO to GoFile.io
id: upload
run: |
ISO_PATH="${{ matrix.iso.name }}-${{ matrix.iso.tag }}-${{ matrix.iso.version }}.iso"
ISO_NAME="${{ matrix.iso.name }}"
echo "Uploading $ISO_NAME from $ISO_PATH..."
RESPONSE=$(curl -F "file=@$ISO_PATH" https://store1.gofile.io/uploadFile)
LINK=$(echo "$RESPONSE" | grep -o 'https://gofile.io/d/[a-zA-Z0-9]\+' | head -n 1)
if [ -n "$LINK" ]; then
echo "Download link for $ISO_NAME: $LINK"
echo "download_link_$ISO_NAME=$LINK" >> $GITHUB_OUTPUT
else
echo "Échec de l’upload : $RESPONSE"
exit 1
fi
- name: Upload Checksum as Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.iso.name }}-checksum
path: ${{ steps.checksum.outputs.checksum_file }}
outputs:
gablue_main_link: ${{ steps.upload.outputs.download_link_gablue-main }}
gablue_nvidia_link: ${{ steps.upload.outputs.download_link_gablue-nvidia }}
gablue_nvidia_open_link: ${{ steps.upload.outputs.download_link_gablue-nvidia-open }}
create-release:
needs: build-and-upload-isos
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download Checksum Artifacts
uses: actions/download-artifact@v4
with:
path: checksums
- name: Delete previous release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
RELEASE_ID=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/releases/tags/latest-iso" | jq -r '.id')
if [ "$RELEASE_ID" != "null" ]; then
curl -s -X DELETE -H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID"
echo "Previous release deleted"
else
echo "No previous release found"
fi
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: "latest-iso"
release_name: "Latest ISO Release"
body: |
Téléchargez les ISOs ici :
- **gablue-main**: ${{ needs.build-and-upload-isos.outputs.gablue_main_link }}
- **gablue-nvidia**: ${{ needs.build-and-upload-isos.outputs.gablue_nvidia_link }}
- **gablue-nvidia-open**: ${{ needs.build-and-upload-isos.outputs.gablue_nvidia_open_link }}
draft: false
prerelease: false
- name: Upload Checksum Files to Release (gablue-main)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: checksums/gablue-main-checksum/gablue-main-latest-41.iso.sha256
asset_name: gablue-main-latest-41.iso.sha256
asset_content_type: text/plain
- name: Upload Checksum Files to Release (gablue-nvidia)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: checksums/gablue-nvidia-checksum/gablue-nvidia-latest-41.iso.sha256
asset_name: gablue-nvidia-latest-41.iso.sha256
asset_content_type: text/plain
- name: Upload Checksum Files to Release (gablue-nvidia-open)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: checksums/gablue-nvidia-open-checksum/gablue-nvidia-open-latest-41.iso.sha256
asset_name: gablue-nvidia-open-latest-41.iso.sha256
asset_content_type: text/plain