mirror of
https://github.com/get-aurora-dev/iso.git
synced 2026-11-03 21:49:46 -09:00
* chore: add ublue-os. pub key * add runner-keys script * modify the workflows * rename the ublue-os key * fix * Apply batched suggestions from code review Co-authored-by: renner <80410025+renner0e@users.noreply.github.com> --------- Co-authored-by: renner <80410025+renner0e@users.noreply.github.com>
175 lines
6.2 KiB
YAML
175 lines
6.2 KiB
YAML
---
|
|
name: Reusable Build
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
upload_artifacts:
|
|
description: 'Upload ISOs as job artifacts'
|
|
type: boolean
|
|
default: false
|
|
upload_r2:
|
|
description: 'Upload ISOs to Cloudflare R2'
|
|
type: boolean
|
|
default: true
|
|
image_version:
|
|
description: 'Image version/tag to build (e.g. stable, testing)'
|
|
type: string
|
|
default: stable
|
|
hook_script:
|
|
description: 'Path to the ISO post-rootfs hook script'
|
|
type: string
|
|
default: iso_files/configure_iso_anaconda.sh
|
|
|
|
env:
|
|
IMAGE_REGISTRY: "ghcr.io/ublue-os"
|
|
IMAGE_NAME: "aurora"
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
permissions: {}
|
|
|
|
jobs:
|
|
build:
|
|
name: Build ISOs
|
|
runs-on: ${{ matrix.platform == 'amd64' && 'ubuntu-26.04' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
platform: [amd64]
|
|
flavor: ["main", "nvidia-open"]
|
|
image_version: ["${{ inputs.image_version }}"]
|
|
permissions:
|
|
contents: read
|
|
packages: read
|
|
id-token: write
|
|
attestations: write
|
|
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
|
|
- name: Maximize build space
|
|
uses: ublue-os/remove-unwanted-software@695eb75bc387dbcd9685a8e72d23439d8686cba6 # v10
|
|
|
|
- name: Configure containers policy for build
|
|
run: |
|
|
sudo ./.github/setup-runner-keys.sh
|
|
|
|
- name: Checkout common repo
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
with:
|
|
repository: get-aurora-dev/common
|
|
path: common
|
|
|
|
- name: Format image ref
|
|
id: image_ref
|
|
env:
|
|
FLAVOR: ${{ matrix.flavor }}
|
|
IMAGE_VERSION: ${{ matrix.image_version }}
|
|
run: |
|
|
set -eoux pipefail
|
|
if [[ "${FLAVOR}" =~ main ]]; then
|
|
image_name="aurora"
|
|
else
|
|
image_name="aurora-${FLAVOR}"
|
|
fi
|
|
image_ref="${IMAGE_REGISTRY}/${image_name}"
|
|
KARGS="NONE"
|
|
echo "image_ref=$image_ref" >> "${GITHUB_OUTPUT}"
|
|
echo "artifact_format=${image_name}-${IMAGE_VERSION}-webui-$(uname -m)" >> "${GITHUB_OUTPUT}"
|
|
echo "kargs=$KARGS" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Generate titanoboa-compatible file list
|
|
id: flatpak_list
|
|
run: |
|
|
set -eoux pipefail
|
|
mkdir -p iso_files
|
|
cat common/system_files/shared/usr/share/ublue-os/homebrew/system-flatpaks.Brewfile | grep -v '#' | grep -F -e "flatpak" | sed 's/flatpak //' | tr -d '"' | tee iso_files/flatpaks.list
|
|
|
|
- name: Pull base image
|
|
env:
|
|
IMAGE_REF: ${{ steps.image_ref.outputs.image_ref }}
|
|
IMAGE_VERSION: ${{ matrix.image_version }}
|
|
run: |
|
|
sudo podman pull "${IMAGE_REF}:${IMAGE_VERSION}"
|
|
|
|
- name: Build Live Container Image
|
|
id: build-container
|
|
env:
|
|
FLAVOR: ${{ matrix.flavor }}
|
|
IMAGE_VERSION: ${{ matrix.image_version }}
|
|
BASE_IMAGE_REF: ${{ steps.image_ref.outputs.image_ref }}
|
|
run: |
|
|
CONTAINER_IMAGE_NAME="aurora-live-${FLAVOR}:${IMAGE_VERSION}"
|
|
sudo podman build \
|
|
--cap-add sys_admin \
|
|
--security-opt label=disable \
|
|
--build-arg BASE_IMAGE=${BASE_IMAGE_REF}:${IMAGE_VERSION} \
|
|
--tag "${CONTAINER_IMAGE_NAME}" \
|
|
-f Containerfile \
|
|
.
|
|
echo "image_name=${CONTAINER_IMAGE_NAME}" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Build ISO
|
|
id: build
|
|
uses: ublue-os/titanoboa@5c457c3d0518bd17e754be0fd98a60d29d26abb4
|
|
with:
|
|
image-ref: ${{ steps.build-container.outputs.image_name }}
|
|
|
|
- name: Rename ISO
|
|
id: rename
|
|
env:
|
|
OUTPUT_PATH: ${{ steps.build.outputs.iso-dest }}
|
|
FLAVOR: ${{ matrix.flavor }}
|
|
OUTPUT_NAME: ${{ steps.image_ref.outputs.artifact_format }}
|
|
IMAGE_VERSION: ${{ matrix.image_version }}
|
|
run: |
|
|
set -x
|
|
mkdir -p output
|
|
OUTPUT_DIRECTORY="$(realpath output)"
|
|
mv "${OUTPUT_PATH}" "${OUTPUT_DIRECTORY}/${OUTPUT_NAME}.iso"
|
|
(cd "${OUTPUT_DIRECTORY}" && sha256sum "${OUTPUT_NAME}.iso" | tee "${OUTPUT_NAME}.iso-CHECKSUM")
|
|
echo "output_directory=$OUTPUT_DIRECTORY" >> "${GITHUB_OUTPUT}"
|
|
|
|
- name: Attestation
|
|
uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4.2.2
|
|
if: inputs.upload_r2 || (inputs.upload_artifacts && github.event_name != 'pull_request')
|
|
with:
|
|
subject-path: ${{ steps.rename.outputs.output_directory }}/${{ steps.image_ref.outputs.artifact_format }}.iso
|
|
|
|
- name: Upload ISO to Job Artifacts
|
|
if: inputs.upload_artifacts
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
if-no-files-found: error
|
|
path: ${{ steps.rename.outputs.output_directory }}/${{ steps.image_ref.outputs.artifact_format }}.iso
|
|
archive: false
|
|
|
|
- name: Upload Checksum to Job Artifacts
|
|
if: inputs.upload_artifacts
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
if-no-files-found: error
|
|
path: ${{ steps.rename.outputs.output_directory }}/${{ steps.image_ref.outputs.artifact_format }}.iso-CHECKSUM
|
|
archive: false
|
|
|
|
- name: Install rclone
|
|
if: inputs.upload_r2
|
|
run: /home/linuxbrew/.linuxbrew/bin/brew install rclone
|
|
|
|
- name: Upload to CloudFlare test bucket
|
|
if: inputs.upload_r2
|
|
shell: bash
|
|
env:
|
|
RCLONE_CONFIG_R2_TYPE: s3
|
|
RCLONE_CONFIG_R2_PROVIDER: Cloudflare
|
|
RCLONE_CONFIG_R2_ACCESS_KEY_ID: ${{ secrets.AURORA_DL_TEST_R2_ACCESS_KEY_ID }}
|
|
RCLONE_CONFIG_R2_SECRET_ACCESS_KEY: ${{ secrets.AURORA_DL_TEST_R2_ACCESS_KEY_SECRET }}
|
|
RCLONE_CONFIG_R2_REGION: auto
|
|
RCLONE_CONFIG_R2_ENDPOINT: ${{ secrets.AURORA_DL_TEST_R2_ENDPOINT }}
|
|
SOURCE_DIR: ${{ steps.rename.outputs.output_directory }}
|
|
run: |
|
|
/home/linuxbrew/.linuxbrew/bin/rclone copy --log-level INFO --checksum "${SOURCE_DIR}" R2:aurora-dl-test
|