blob: 7bb145b446bef91660b4f2143094ada223fba303 [file]
name: CI
on:
push:
branches:
- master
- for-master
- github-ci
tags:
- v*
pull_request:
branches:
- master
- for-master
jobs:
check_commits_job:
name: "Check commits"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Developer's Certificate of Origin"
run: |
[ "${{ github.event_name }}" = "push" ] &&
from="refs/remotes/origin/${{ github.event.repository.default_branch }}" ||
from="${{ github.event.pull_request.base.sha }}"
tests/ci/check-dco.sh "$from..HEAD"
distcheck_job:
name: "Distcheck"
runs-on: ubuntu-latest
needs: [ check_commits_job ]
steps:
- name: "Check out repository"
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Install dependencies"
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq gcc autoconf automake autopoint libtool libtool-bin libpam0g-dev bison flex gettext valgrind sparse
- name: "Configure"
run: |
tests/configure.sh --datadir="$PWD/data" --enable-memcheck
- name: "Clean"
run: |
make clean
- name: "Build"
run: |
make V=1
- name: "Distcheck"
run: |
sudo -E make distcheck
- name: "Upload artifacts"
if: failure()
uses: actions/upload-artifact@v4
with:
name: artifact-distcheck
path: |
config.log
tests/testsuite.dir
tests/testsuite.log
kbd-*/_build/sub/tests/testsuite.dir
kbd-*/_build/sub/tests/testsuite.log
if-no-files-found: ignore
retention-days: 1
local_build_job:
name: "Check with ${{ matrix.compiler }} / ${{ matrix.libc }} on x86_64"
strategy:
matrix:
include:
- os: ubuntu-latest
cflags:
compiler: gcc
libc: glibc
configure:
check: unittest e2e
- os: ubuntu-latest
cflags:
compiler: clang
libc: glibc
configure:
check: unittest e2e
- os: ubuntu-latest
cflags: -idirafter /usr/include/ -idirafter /usr/include/x86_64-linux-gnu/
compiler: gcc
libc: musl
configure: --host=x86_64-linux-musl --disable-vlock --without-zlib --without-bzip2 --without-lzma --without-zstd
check: unittest e2e
fail-fast: false
runs-on: ${{ matrix.os }}
needs: [ distcheck_job ]
env:
CHECK_KEYWORDS: ${{ matrix.check }}
SANDBOX: priviliged
TTY: /dev/tty60
HAVE_VGA: 1
steps:
- name: "Check out repository"
uses: actions/checkout@v4
with:
fetch-depth: 0
- run: sudo apt-get update -y -qq
- run: sudo apt-get install -y -qq autoconf automake autopoint libtool libtool-bin libpam0g-dev bison flex gettext kbd strace valgrind
- run: sudo apt-get install -y -qq gcc clang musl musl-dev musl-tools
- name: "Configure"
run: |
tests/configure.sh --datadir="$PWD/tests/data" --enable-memcheck ${{ matrix.configure }}
- name: "Build"
run: |
make V=1 CFLAGS+="-g -O0 ${{ matrix.cflags }}"
- name: "Check"
run: |
sudo -E tests/check.sh
- name: "Upload artifacts"
if: failure()
uses: actions/upload-artifact@v4
with:
name: artifact-${{ matrix.compiler }}-${{ matrix.libc }}
path: |
config.log
tests/testsuite.dir
tests/testsuite.log
if-no-files-found: ignore
retention-days: 1
qemu_build_job:
name: "Check on ${{ matrix.arch }}"
strategy:
matrix:
include:
- arch: x86_64
- arch: s390x
- arch: ppc64el
fail-fast: false
runs-on: ubuntu-latest
needs: [ check_commits_job, distcheck_job ]
env:
CI_ARCH: ${{ matrix.arch }}
CI_UBUNTU_VERSION: "25.04"
steps:
- name: "Check out repository"
uses: actions/checkout@v4
with:
fetch-depth: 0
- 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 dependencies"
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq qemu-system ssh cloud-image-utils
- name: "Prepare cloud image for VM"
run: tests/ci/create-cloud-image.sh
- name: "Start VM"
run: |
tests/ci/start-qemu-vm.sh "$PWD"
while ! tests/ci/vm-ssh.sh ubuntu@localhost /bin/true; do sleep 1; done
timeout-minutes: 30
- name: "Install dependencies into VM"
run: tests/ci/vm-ssh.sh ubuntu@localhost /opt/tests/ci/qemu-install-dependencies.sh
- name: "Copy sources into VM"
run: |
tests/ci/vm-ssh.sh ubuntu@localhost mkdir /tmp/kbd
tests/ci/vm-scp.sh -r . ubuntu@localhost:/tmp/kbd/
- name: "Build project in the VM"
run: |
rc=0
tests/ci/vm-ssh.sh ubuntu@localhost /opt/tests/ci/qemu-run-build-and-tests.sh ${{ matrix.arch }} || rc=1
tests/ci/vm-scp.sh ubuntu@localhost:artifacts.tar /tmp/${{ matrix.arch }}/ ||:
exit $rc
- name: "Upload artifacts"
if: failure()
uses: actions/upload-artifact@v4
with:
name: build-on-${{ matrix.arch }}-artifacts
path: |
/tmp/${{ matrix.arch }}/qemu.log
/tmp/${{ matrix.arch }}/artifacts.tar
if-no-files-found: ignore
retention-days: 1