Сборка 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
Этот коммит содержится в:
Claude
2026-09-25 07:08:38 +00:00
родитель 4098c270a4
Коммит f20782c087
2 изменённых файлов: 25 добавлений и 1 удалений
+5
Просмотреть файл
@@ -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 }})
+20 -1
Просмотреть файл
@@ -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