Skip to content

Add -I shorthand for --include #8218

Add -I shorthand for --include

Add -I shorthand for --include #8218

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
unit-test:
runs-on: ubuntu-22.04
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b
- name: Install
run: |
# This is added by default, and it is often broken, but we don't need anything from it
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update
sudo apt-get install pandoc python3-pytest
python3 -m pip install --upgrade setuptools wheel pip
python3 -m pip install mypy ruff
npm install -g pyright
- name: Run ruff
run: |
ruff --version
ruff check mkosi/ tests/ kernel-install/50-mkosi.install
- name: Check that tabs are not used in code
run: sh -c '! git grep -P "\\t" "*.py"'
- name: Type Checking (mypy)
run: |
python3 -m mypy --version
python3 -m mypy mkosi/ tests/ kernel-install/50-mkosi.install
- name: Type Checking (pyright)
run: |
pyright --version
pyright mkosi/ tests/ kernel-install/50-mkosi.install
- name: Unit Tests
run: |
python3 -m pytest --version
python3 -m pytest -sv tests/
- name: Test execution from current working directory
run: python3 -m mkosi -h
- name: Test execution from current working directory (sudo call)
run: sudo python3 -m mkosi -h
- name: Test venv installation
run: |
python3 -m venv testvenv
testvenv/bin/python3 -m pip install --upgrade setuptools wheel pip
testvenv/bin/python3 -m pip install .
testvenv/bin/mkosi -h
rm -rf testvenv
- name: Test editable venv installation
run: |
python3 -m venv testvenv
testvenv/bin/python3 -m pip install --upgrade setuptools wheel pip
testvenv/bin/python3 -m pip install --editable .
testvenv/bin/mkosi -h
rm -rf testvenv
- name: Test zipapp creation
run: |
./tools/generate-zipapp.sh
./builddir/mkosi -h
./builddir/mkosi documentation
- name: Test shell scripts
run: |
sudo apt-get update && sudo apt-get install --no-install-recommends shellcheck
bash -c 'shopt -s globstar; shellcheck bin/mkosi tools/*.sh'
- name: Test man page generation
run: pandoc -s mkosi.md -o mkosi.1
integration-test:
runs-on: ubuntu-22.04
needs: unit-test
concurrency:
group: ${{ github.workflow }}-${{ matrix.distro }}-${{ matrix.tools }}-${{ github.ref }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
distro:
- arch
- centos
- debian
- fedora
- opensuse
- ubuntu
tools:
- arch
- debian
- fedora
- opensuse
- ubuntu
# TODO: Add CentOS once they have systemd v254 or newer.
exclude:
# pacman and archlinux-keyring are not packaged in OpenSUSE.
- distro: arch
tools: opensuse
# apt, debian-keyring and ubuntu-keyring are not packaged in OpenSUSE.
- distro: debian
tools: opensuse
- distro: ubuntu
tools: opensuse
steps:
- uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b
- uses: ./
# Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space
# immediately, we remove the files in the background. However, we first move them to a different location so that
# nothing tries to use anything in these directories anymore while we're busy deleting them.
- name: Free disk space
run: |
sudo mv /usr/local /usr/local.trash
sudo mv /opt/hostedtoolcache /opt/hostedtoolcache.trash
sudo systemd-run rm -rf /usr/local.trash /opt/hostedtoolcache.trash
- name: Install
run: |
sudo apt-get update
sudo apt-get install python3-pytest lvm2 cryptsetup-bin btrfs-progs
# Make sure the latest changes from the pull request are used.
sudo ln -svf $PWD/bin/mkosi /usr/bin/mkosi
working-directory: ./
- name: Configure
run: |
tee mkosi.local.conf <<EOF
[Output]
ManifestFormat=json
[Content]
KernelCommandLine=systemd.default_device_timeout_sec=180
Environment=SYSTEMD_REPART_MKFS_OPTIONS_EROFS="--quiet"
[Host]
QemuKvm=yes
EOF
# TODO: Remove once all distros have recent enough systemd that knows systemd.default_device_timeout_sec.
mkdir -p mkosi-initrd/mkosi.extra/usr/lib/systemd/system.conf.d
tee mkosi-initrd/mkosi.extra/usr/lib/systemd/system.conf.d/device-timeout.conf <<EOF
[Manager]
DefaultDeviceTimeoutSec=180
EOF
- name: Run integration tests
run: |
sudo --preserve-env \
timeout -k 30 1h python3 -m pytest \
--tb=no \
--capture=no \
--verbose \
-m integration \
--distribution ${{ matrix.distro }} \
--tools-tree-distribution ${{ matrix.tools }} \
tests/