Skip to content
Snippets Groups Projects
Commit 81d7accb authored by Christopher Obbard's avatar Christopher Obbard Committed by Sebastian Reichel
Browse files

[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: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Co-developed-by: default avatarSjoerd Simons <sjoerd@collabora.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: default avatarSjoerd Simons <sjoerd@collabora.com>
Signed-off-by: default avatarChristopher Obbard <chris.obbard@collabora.com>
parent 6613476e
No related branches found
No related tags found
No related merge requests found
......@@ -103,6 +103,7 @@ modules.order
!.kunitconfig
!.mailmap
!.rustfmt.toml
!.gitlab-ci.yml
#
# Generated include files
......
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"
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/lava/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/lava/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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment