Build ISO #25
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build ISO | |
on: | |
schedule: | |
- cron: "0 0 1 * *" # Build & upload ISO every month | |
workflow_dispatch: | |
branches: | |
- main | |
paths: | |
- '.github/workflows/build_iso.yml' | |
env: | |
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build-iso: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
id-token: write | |
strategy: | |
fail-fast: false | |
matrix: | |
image_name: [gidro-os] | |
major_version: [40] | |
image_tag: [latest] | |
steps: | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/free-disk-space@v1.3.1 | |
- name: Fetch current date | |
shell: bash | |
run: | | |
TIMESTAMP="$(date +%d-%m-%Y)" | |
echo "TIMESTAMP=${TIMESTAMP}" >> $GITHUB_ENV | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
- name: yq - portable yaml processor | |
uses: mikefarah/yq@v4.43.1 | |
- name: Determine Flatpak Dependencies | |
id: flatpak_dependencies | |
shell: bash | |
run: | | |
set -ex | |
readarray -t FLATPAK_LIST < <(yq '.system.install[]' < ${{ github.workspace }}/config/common-modules/default-flatpaks.yml) | |
for ((i=0; i<${#FLATPAK_LIST[@]}; i++)); do | |
FLATPAK_LIST[i]="app/${FLATPAK_LIST[i]}/x86_64/stable" | |
done | |
image="${{ env.IMAGE_REGISTRY }}/${{ matrix.image_name }}:${{ matrix.image_tag }}" | |
# Make temp space | |
TEMP_FLATPAK_INSTALL_DIR=$(mktemp -d -p ${{ github.workspace }} flatpak.XXX) | |
# Get list of refs from directory | |
FLATPAK_REFS_DIR_LIST=$(echo ${FLATPAK_LIST[@]} | tr '\n' ' ' ) | |
# Generate install script | |
cat << EOF > ${TEMP_FLATPAK_INSTALL_DIR}/script.sh | |
cat /temp_flatpak_install_dir/script.sh | |
mkdir -p /flatpak/flatpak /flatpak/triggers | |
mkdir /var/tmp || true | |
chmod -R 1777 /var/tmp | |
flatpak config --system --set languages "*" | |
flatpak remote-add --system flathub-system https://flathub.org/repo/flathub.flatpakrepo | |
flatpak install --system -y ${FLATPAK_REFS_DIR_LIST} | |
ostree refs --repo=\${FLATPAK_SYSTEM_DIR}/repo | grep '^deploy/' | grep -v 'org\.freedesktop\.Platform\.openh264' | sed 's/^deploy\///g' > /output/flatpaks_with_deps | |
EOF | |
docker run --rm --privileged \ | |
--entrypoint bash \ | |
-e FLATPAK_SYSTEM_DIR=/flatpak/flatpak \ | |
-e FLATPAK_TRIGGERSDIR=/flatpak/triggers \ | |
--volume ${FLATPAK_REFS_DIR}:/output \ | |
--volume ${TEMP_FLATPAK_INSTALL_DIR}:/temp_flatpak_install_dir \ | |
${image} /temp_flatpak_install_dir/script.sh | |
docker rmi ${image} | |
- name: Build ISO | |
uses: jasonn3/build-container-installer@v1.2.0 | |
id: build | |
with: | |
arch: x86_64 | |
version: ${{ matrix.major_version }} | |
image_repo: ${{ env.IMAGE_REGISTRY }} | |
image_name: ${{ matrix.image_name }} | |
image_tag: ${{ matrix.image_tag }} | |
variant: 'Kinoite' | |
enrollment_password: 'ublue-os' | |
secure_boot_key_url: 'https://github.com/ublue-os/akmods/raw/main/certs/public_key.der' | |
iso_name: ${{ matrix.image_name }}_${{ env.TIMESTAMP }}.iso | |
enable_cache_dnf: "false" | |
enable_cache_skopeo: "false" | |
enable_flatpak_dependencies: "false" | |
flatpak_remote_refs_dir: ${{ steps.generate-flatpak-dir-shortname.outputs.flatpak-dir-shortname }} | |
flatpak_remote_name: "flathub-system" | |
- name: Move ISO to Upload Directory | |
id: upload-directory | |
shell: bash | |
run: | | |
ISO_UPLOAD_DIR=${{ github.workspace }}/upload | |
mkdir ${ISO_UPLOAD_DIR} | |
mv ${{ steps.build.outputs.iso_path }}/${{ steps.build.outputs.iso_name }} ${ISO_UPLOAD_DIR} | |
mv ${{ steps.build.outputs.iso_path }}/${{ steps.build.outputs.iso_name }}-CHECKSUM ${ISO_UPLOAD_DIR} | |
echo "iso-upload-dir=${ISO_UPLOAD_DIR}" >> $GITHUB_OUTPUT | |
- name: Upload ISO to archive.org | |
uses: qoijjj/internet-archive-upload@v7 | |
with: | |
access-key: ${{ secrets.IA_ACCESS_KEY }} | |
secret-key: ${{ secrets.IA_SECRET_KEY }} | |
identifier: ${{ matrix.image_name }}_test | |
files: ${{ steps.upload-directory.outputs.iso-upload-dir }} |