diff options
author | Christopher Obbard <chris.obbard@collabora.com> | 2023-02-20 16:59:04 +0000 |
---|---|---|
committer | Sebastian Reichel <sre@kernel.org> | 2024-01-23 12:35:36 +0100 |
commit | 6395b84a3f3965c82bb896f1d0acf29a5cc6feb3 (patch) | |
tree | 7d349fff935dfa3ba5d349deee7c66d22607be3d | |
parent | 6613476e225e090cc9aad49be7fa504e290dd33d (diff) | |
download | linux-misc-6395b84a3f3965c82bb896f1d0acf29a5cc6feb3.tar.gz |
[NOUPSTREAM] Add GitLab CI support
Build a Kernel .deb package in GitLab CI and run a basic
LAVA boot test using Debian bookworm.
Co-developed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Co-developed-by: Sjoerd Simons <sjoerd@collabora.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
Signed-off-by: Christopher Obbard <chris.obbard@collabora.com>
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | .gitlab-ci.yml | 104 | ||||
-rw-r--r-- | lava/testjob.yaml | 73 |
3 files changed, 178 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore index 689a4fa3f5477a..1bb9b3457261ce 100644 --- a/.gitignore +++ b/.gitignore @@ -103,6 +103,7 @@ modules.order !.kunitconfig !.mailmap !.rustfmt.toml +!.gitlab-ci.yml # # Generated include files diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000000000..37e570c6e3b254 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,104 @@ +default: + image: debian:testing + tags: + - bookworm + +stages: + - build + - test + - generate + - lava + +.build debian package: + stage: build + tags: + - ultra-heavyweight + cache: + when: on_success + key: $CI_COMMIT_REF_SLUG + paths: + - ccache + variables: + DEBIAN_FRONTEND: noninteractive + GIT_SUBMODULE_STRATEGY: normal + ARCH: amd64 + DEFCONFIG: defconfig + CCACHE_BASEDIR: $CI_PROJECT_DIR + CCACHE_DIR: $CI_PROJECT_DIR/ccache + before_script: + - apt update + - apt install -y devscripts + build-essential + crossbuild-essential-arm64 + bc + bison + ccache + flex + rsync + kmod + cpio + libelf-dev + libssl-dev + # Setup ccache + - export PATH="/usr/lib/ccache:$PATH" + - ccache -s + script: + - make $DEFCONFIG + - ./scripts/config -e WLAN -e WLAN_VENDOR_BROADCOM -m BRCMUTIL -m BRCMFMAC + -e BRCMFMAC_PROTO_BCDC -e BRCMFMAC_PROTO_MSGBUF + -e BRCMFMAC_USB + -e WLAN_VENDOR_REALTEK -m RTW89 -m RTW89_CORE + -m RTW89_PCI -m RTW89_8825B -m RTW89_8852BE + -m BINFMT_MISC + - make -j$(nproc) $ADDITIONAL_BUILD_CMD bindeb-pkg + - mkdir artifacts && dcmd mv ../*.changes artifacts/ + artifacts: + paths: + - artifacts + +build arm64 debian package: + extends: .build debian package + variables: + ARCH: arm64 + CROSS_COMPILE: aarch64-linux-gnu- + ADDITIONAL_BUILD_CMD: KBUILD_IMAGE=arch/arm64/boot/Image + +generate tests: + image: debian:bookworm-slim + stage: generate + tags: + - lightweight + variables: + GIT_STRATEGY: fetch + GIT_DEPTH: "1" + needs: + - "build arm64 debian package" + script: + - mkdir deb + - "for x in artifacts/linux-image*.deb ; do dpkg -x ${x} deb ; done" + - cp deb/boot/vmlinuz* vmlinuz + - tar -f modules.tar.gz -C deb -c -z -v lib/modules + - mkdir dtbs + - cp -r deb/usr/lib/linux-image*/* dtbs + - sed -i s,%%KERNEL_BUILD_JOB%%,${CI_JOB_ID},g lava/testjob.yaml + artifacts: + paths: + - vmlinuz* + - modules.tar.gz + - dtbs + - lava/testjob.yaml + +lava test: + stage: lava + tags: + - lava-runner + script: + - submit lava/testjob.yaml + needs: + - "generate tests" + artifacts: + when: always + paths: + - "*" + reports: + junit: "*.xml" diff --git a/lava/testjob.yaml b/lava/testjob.yaml new file mode 100644 index 00000000000000..3d03f92c46e9c0 --- /dev/null +++ b/lava/testjob.yaml @@ -0,0 +1,73 @@ +device_type: rk3588-rock-5b + +job_name: Hardware enablement tests {{job.CI_JOB_ID}} +timeouts: + job: + minutes: 15 + action: + minutes: 5 +priority: high +visibility: public + +context: + extra_kernel_args: rootwait + +actions: + - deploy: + timeout: + minutes: 2 + to: tftp + kernel: + url: "{{job.CI_PROJECT_URL}}/-/jobs/%%KERNEL_BUILD_JOB%%/artifacts/raw/vmlinuz" + type: image + modules: + url: "{{job.CI_PROJECT_URL}}/-/jobs/%%KERNEL_BUILD_JOB%%/artifacts/raw/modules.tar.gz" + compression: gz + dtb: + url: "{{job.CI_PROJECT_URL}}/-/jobs/%%KERNEL_BUILD_JOB%%/artifacts/raw/dtbs/rockchip/rk3588-rock-5b.dtb" + ramdisk: + url: https://gitlab.collabora.com/sre/health-check-images/-/jobs/artifacts/bookworm/raw/bookworm/bookworm-rootfs-arm64-initramfs.gz?job=build+bookworm+image:+%5Barm64,+rootfs%5D + compression: gz + nfsrootfs: + url: https://gitlab.collabora.com/sre/health-check-images/-/jobs/artifacts/bookworm/raw/bookworm/bookworm-rootfs-arm64.tar.gz?job=build+bookworm+image:+%5Barm64,+rootfs%5D + compression: gz + + - boot: + method: u-boot + commands: nfs + timeout: + minutes: 10 + auto_login: + login_prompt: 'login:' + username: user + password_prompt: 'Password:' + password: user + login_commands: + - sudo su + - env + - systemctl --failed + prompts: + - 'user@health(.*)$' + - 'root@health(.*)#' + + - test: + timeout: + minutes: 1 + definitions: + - repository: + metadata: + format: Lava-Test Test Definition 1.0 + name: health + description: "health check" + os: + - apertis + scope: + - functional + environment: + - lava-test-shell + run: + steps: + - ip a s + from: inline + name: network + path: inline/health.yaml |