2.49.0 #267
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: "CI" | |
on: | |
push: | |
branches: | |
- "master" | |
- "for-master" | |
- "patchset/**" | |
paths-ignore: | |
- "**.md" | |
jobs: | |
verify: | |
name: "Verify" | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: "Checkout Repository" | |
uses: actions/checkout@v4 | |
- name: "Checkout Submodules" | |
run: | | |
git submodule set-url external/busybox/upstream https://github.com/mirror/busybox | |
git submodule update --init --recursive | |
- name: "Setup host" | |
run: | | |
sudo sysctl -w kernel.unprivileged_userns_clone=1 ||: | |
sudo sysctl -w kernel.apparmor_restrict_unprivileged_unconfined=0 ||: | |
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 ||: | |
- name: "Install Tools" | |
run: | | |
sudo apt-get -y -qq install \ | |
gcc make automake autoconf pkg-config udev scdoc \ | |
libkmod-dev libz-dev libbz2-dev liblzma-dev libzstd-dev libelf-dev libtirpc-dev libcrypt-dev | |
sudo apt-get -y -qq install astyle | |
sudo apt-get -y -qq install shellcheck | |
- name: "Configure" | |
run: | | |
./autogen.sh | |
./configure --enable-local-build | |
- name: "Build Sources" | |
run: | | |
make | |
- name: "Prepare Gittree" | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "GitHubCI commiter" | |
git commit -a -m 'CI: update git tree' | |
- name: "Indent-c" | |
run: | | |
make indent-c && git diff --exit-code | |
- name: "ShellCheck" | |
run: | | |
make verify | |
- name: "Check services" | |
run: | | |
export PATH="$PWD/external/libshell/upstream:$PATH" | |
make check-services | |
- name: "Unit Tests" | |
run: | | |
export PATH="$PWD/external/libshell/upstream:$PATH" | |
make check-unit | |
e2e-local: | |
name: "${{ matrix.name }} ${{ matrix.test }} ${{ matrix.testcase }}" | |
needs: [ verify ] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
name: [ | |
"altlinux", | |
"fedora", | |
"ubuntu", | |
] | |
test: [ | |
"local", | |
] | |
testcase: [ | |
"btrfs-subvol", | |
"efi-partition", | |
"efi-reqpartition", | |
"luks", | |
"luks+crypttab+noparam", | |
"luks+lukskey-noparam", | |
"luks+lukskey-plain", | |
"luks+lukskey-raw", | |
"luks-over-lvm", | |
"luks-over-raid1", | |
"lvm", | |
"lvm+luks", | |
"partition", | |
"partition+usr", | |
"pipeline", | |
"raid1", | |
"raid1+raid5", | |
"raid1-degraded", | |
"raid5", | |
"zfs-partition", | |
] | |
exclude: | |
- name: fedora | |
testcase: efi-partition | |
- name: fedora | |
testcase: efi-reqpartition | |
- name: fedora | |
testcase: zfs-partition | |
- name: ubuntu | |
testcase: efi-partition | |
- name: ubuntu | |
testcase: efi-reqpartition | |
- name: ubuntu | |
testcase: btrfs-subvol | |
- name: altlinux | |
testcase: zfs-partition | |
fail-fast: false | |
#max-parallel: 6 | |
steps: | |
- name: "Prepare Node" | |
run: | | |
for m in kvm kvm-amd kvm-intel; do sudo modprobe -v "$m" ||:; done | |
test -c /dev/kvm && sudo chmod -v 666 /dev/kvm ||: | |
- name: "Install Packages" | |
run: | | |
sudo apt-get -qq -y update | |
sudo apt-get -qq -y install git expect qemu-kvm ovmf | |
- name: "Checkout Repository" | |
uses: actions/checkout@v4 | |
- name: "Checkout Submodules" | |
run: | | |
git submodule set-url external/busybox/upstream https://github.com/mirror/busybox | |
git submodule update --init --recursive | |
- name: "Build Sources" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} build-git | |
- name: "Build Sysimage" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} build-sysimage | |
- name: "Build Kickstart" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} build-kickstart | |
- name: "Build Other Tools" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} build-tools | |
- name: "Run Kickstart" | |
env: | |
QEMU_TIMEOUT: 40m | |
QEMU_MEMORY: 1G | |
QEMU_DISK_FORMAT: qcow2 | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} run-kickstart | |
- name: "Run Services" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} run-services | |
- name: "Boot System" | |
env: | |
QEMU_TIMEOUT: 10m | |
QEMU_MEMORY: 1G | |
QEMU_DISK_FORMAT: qcow2 | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} run-boot | |
- name: "Archive Metrics" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "metrics-${{ matrix.name }}-${{ matrix.test }}-${{ matrix.testcase }}" | |
path: testing/status/artifact-*.txt | |
if-no-files-found: ignore | |
retention-days: 1 | |
e2e-network: | |
name: "${{ matrix.name }} ${{ matrix.test }} ${{ matrix.testcase }}" | |
needs: [ verify ] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
name: [ | |
"altlinux", | |
] | |
test: [ | |
"sshfs", | |
] | |
testcase: [ | |
"sshfs-network-dhcp", | |
"sshfs-network-static1", | |
] | |
fail-fast: false | |
steps: | |
- name: "Prepare Node" | |
run: | | |
for m in kvm kvm-amd kvm-intel; do sudo modprobe -v "$m" ||:; done | |
test -c /dev/kvm && sudo chmod -v 666 /dev/kvm ||: | |
- name: "Install packages" | |
run: | | |
sudo apt-get -qq -y update | |
sudo apt-get -qq -y install git qemu-kvm | |
- name: "Checkout Repository" | |
uses: actions/checkout@v4 | |
- name: "Checkout submodules" | |
run: | | |
git submodule set-url external/busybox/upstream https://github.com/mirror/busybox | |
git submodule update --init --recursive | |
- name: "Build Sources" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} build-git | |
- name: "Build Sysimage" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} build-sysimage | |
- name: "Build Other Tools" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} build-tools | |
- name: "Run Services" | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} run-services | |
- name: "Boot System" | |
env: | |
QEMU_TIMEOUT: 10m | |
QEMU_MEMORY: 1G | |
QEMU_DISK_FORMAT: qcow2 | |
run: testing/testing-${{ matrix.name }}-${{ matrix.test }} test-root-${{ matrix.testcase }} run-boot | |
- name: "Archive Metrics" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "metrics-${{ matrix.name }}-${{ matrix.test }}-${{ matrix.testcase }}" | |
path: testing/status/artifact-*.txt | |
if-no-files-found: ignore | |
retention-days: 1 | |
metrics: | |
name: "Metrics" | |
needs: [ e2e-local, e2e-network ] | |
runs-on: ubuntu-latest | |
if: success() || failure() | |
steps: | |
- name: "Checkout Repository" | |
uses: actions/checkout@v4 | |
- name: "Download Metrics" | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
- name: "Summarize" | |
run: testing/generate-metrics artifacts > "$GITHUB_STEP_SUMMARY" | |
garbage-collection: | |
name: "Garbage Collection" | |
needs: [ metrics ] | |
runs-on: ubuntu-latest | |
if: success() || cancelled() | |
steps: | |
- name: "Remove Artifacts" | |
uses: geekyeggo/delete-artifact@v5 | |
with: | |
name: metrics-* | |
failOnError: false | |