Сборка ISO была подключена к Pull Request в GitHub Actions
- образ собирается на каждом PR, который меняет image/, first boot или зависимости панели, а не только по тегу v*; - после сборки проверяются загрузочные записи BIOS/UEFI, autoinstall.yaml и меню GRUB; - перед сборкой освобождается место на раннере, устаревшие запуски отменяются; CI можно запустить вручную. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019LEUXMcdZo7b87mjkUsPgg
Этот коммит содержится в:
@@ -4,10 +4,15 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches: [main]
|
branches: [main]
|
||||||
pull_request:
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ci-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Tests (Python ${{ matrix.python }})
|
name: Tests (Python ${{ matrix.python }})
|
||||||
|
|||||||
@@ -3,6 +3,12 @@ name: Build ISO image
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags: ["v*"]
|
tags: ["v*"]
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- "image/**"
|
||||||
|
- "scripts/virtuality_firstboot.sh"
|
||||||
|
- "web/requirements.txt"
|
||||||
|
- ".github/workflows/image.yml"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
arch:
|
arch:
|
||||||
@@ -14,6 +20,10 @@ on:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: image-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
iso:
|
iso:
|
||||||
name: ISO ${{ matrix.arch }}
|
name: ISO ${{ matrix.arch }}
|
||||||
@@ -26,13 +36,22 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- run: sudo apt-get update && sudo apt-get install -y xorriso
|
- run: sudo apt-get update && sudo apt-get install -y xorriso python3-yaml
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: .cache/iso
|
path: .cache/iso
|
||||||
key: ubuntu-iso-${{ matrix.arch }}-${{ hashFiles('image/build-iso.sh') }}
|
key: ubuntu-iso-${{ matrix.arch }}-${{ hashFiles('image/build-iso.sh') }}
|
||||||
restore-keys: ubuntu-iso-${{ matrix.arch }}-
|
restore-keys: ubuntu-iso-${{ matrix.arch }}-
|
||||||
|
- name: Free disk space
|
||||||
|
run: sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL && df -h /
|
||||||
- run: make iso ARCH=${{ matrix.arch }}
|
- run: make iso ARCH=${{ matrix.arch }}
|
||||||
|
- name: Check ISO boot records
|
||||||
|
run: |
|
||||||
|
iso=$(ls dist/*.iso)
|
||||||
|
xorriso -indev "$iso" -report_el_torito plain 2>/dev/null | tee /dev/stderr | grep -q "UEFI"
|
||||||
|
xorriso -osirrox on -indev "$iso" -extract /autoinstall.yaml autoinstall.yaml -extract /boot/grub/grub.cfg grub.cfg
|
||||||
|
python3 -c "import yaml; d = yaml.safe_load(open('autoinstall.yaml')); assert d['autoinstall']['version'] == 1"
|
||||||
|
grep -q "Install Virtuality" grub.cfg
|
||||||
# Ubuntu server ISOs are larger than the 2 GB GitHub release asset limit,
|
# Ubuntu server ISOs are larger than the 2 GB GitHub release asset limit,
|
||||||
# so images are published as workflow artifacts.
|
# so images are published as workflow artifacts.
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user