aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Obbard <chris.obbard@collabora.com>2023-02-20 16:59:04 +0000
committerSebastian Reichel <sre@kernel.org>2024-01-23 12:35:36 +0100
commit6395b84a3f3965c82bb896f1d0acf29a5cc6feb3 (patch)
tree7d349fff935dfa3ba5d349deee7c66d22607be3d
parent6613476e225e090cc9aad49be7fa504e290dd33d (diff)
downloadlinux-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--.gitignore1
-rw-r--r--.gitlab-ci.yml104
-rw-r--r--lava/testjob.yaml73
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