xref: /freebsd/tests/ci/tools/freebsdci (revision cb9d4bb1fbb9ac0eb9f211656e91f9d5254c166c)
1*cb9d4bb1SMuhammad Moinur Rahman#!/bin/sh
2*cb9d4bb1SMuhammad Moinur Rahman#
3*cb9d4bb1SMuhammad Moinur Rahman# SPDX-License-Identifier: BSD-2-Clause
4*cb9d4bb1SMuhammad Moinur Rahman#
5*cb9d4bb1SMuhammad Moinur Rahman# Copyright (c) 2024 The FreeBSD Foundation
6*cb9d4bb1SMuhammad Moinur Rahman#
7*cb9d4bb1SMuhammad Moinur Rahman# This software was developed by Cybermancer Infosec <bofh@FreeBSD.org>
8*cb9d4bb1SMuhammad Moinur Rahman# under sponsorship from the FreeBSD Foundation.
9*cb9d4bb1SMuhammad Moinur Rahman#
10*cb9d4bb1SMuhammad Moinur Rahman# PROVIDE: freebsdci
11*cb9d4bb1SMuhammad Moinur Rahman# REQUIRE: LOGIN FILESYSTEMS
12*cb9d4bb1SMuhammad Moinur Rahman# KEYWORD: firstboot
13*cb9d4bb1SMuhammad Moinur Rahman
14*cb9d4bb1SMuhammad Moinur Rahman# This script is used to run the firstboot CI tests on the first boot of a
15*cb9d4bb1SMuhammad Moinur Rahman# FreeBSD image. It is automatically disabled after the first boot.
16*cb9d4bb1SMuhammad Moinur Rahman#
17*cb9d4bb1SMuhammad Moinur Rahman# The script will run the firstboot CI tests and then shut down the system.
18*cb9d4bb1SMuhammad Moinur Rahman# The tests are run in the foreground so that the system can shut down
19*cb9d4bb1SMuhammad Moinur Rahman# immediately after the tests are finished.
20*cb9d4bb1SMuhammad Moinur Rahman#
21*cb9d4bb1SMuhammad Moinur Rahman# Default test types are full and smoke.  To run only the smoke tests, set
22*cb9d4bb1SMuhammad Moinur Rahman# freebsdci_type="smoke" in /etc/rc.conf.local or /etc/rc.conf.
23*cb9d4bb1SMuhammad Moinur Rahman# To run only the full tests, set freebsdci_type="full" in
24*cb9d4bb1SMuhammad Moinur Rahman# /etc/rc.conf.local or /etc/rc.conf.
25*cb9d4bb1SMuhammad Moinur Rahman
26*cb9d4bb1SMuhammad Moinur Rahman. /etc/rc.subr
27*cb9d4bb1SMuhammad Moinur Rahman
28*cb9d4bb1SMuhammad Moinur Rahman: ${freebsdci_enable:="NO"}
29*cb9d4bb1SMuhammad Moinur Rahman
30*cb9d4bb1SMuhammad Moinur Rahmanname="freebsdci"
31*cb9d4bb1SMuhammad Moinur Rahmandesc="Run FreeBSD CI"
32*cb9d4bb1SMuhammad Moinur Rahmanrcvar=freebsdci_enable
33*cb9d4bb1SMuhammad Moinur Rahmanstart_cmd="firstboot_ci_run"
34*cb9d4bb1SMuhammad Moinur Rahmanstop_cmd=":"
35*cb9d4bb1SMuhammad Moinur Rahmanos_arch=$(uname -p)
36*cb9d4bb1SMuhammad Moinur Rahman
37*cb9d4bb1SMuhammad Moinur Rahmanauto_shutdown()
38*cb9d4bb1SMuhammad Moinur Rahman{
39*cb9d4bb1SMuhammad Moinur Rahman	# XXX: Currently RISC-V kernels lack the ability to
40*cb9d4bb1SMuhammad Moinur Rahman	#      make qemu exit on shutdown. Reboot instead;
41*cb9d4bb1SMuhammad Moinur Rahman	#      it makes qemu exit too.
42*cb9d4bb1SMuhammad Moinur Rahman	case "$os_arch" in
43*cb9d4bb1SMuhammad Moinur Rahman		riscv64)
44*cb9d4bb1SMuhammad Moinur Rahman			shutdown -r now
45*cb9d4bb1SMuhammad Moinur Rahman		;;
46*cb9d4bb1SMuhammad Moinur Rahman		*)
47*cb9d4bb1SMuhammad Moinur Rahman			shutdown -p now
48*cb9d4bb1SMuhammad Moinur Rahman		;;
49*cb9d4bb1SMuhammad Moinur Rahman	esac
50*cb9d4bb1SMuhammad Moinur Rahman}
51*cb9d4bb1SMuhammad Moinur Rahman
52*cb9d4bb1SMuhammad Moinur Rahmansmoke_tests()
53*cb9d4bb1SMuhammad Moinur Rahman{
54*cb9d4bb1SMuhammad Moinur Rahman	echo
55*cb9d4bb1SMuhammad Moinur Rahman	echo "--------------------------------------------------------------"
56*cb9d4bb1SMuhammad Moinur Rahman	echo "BUILD sequence COMPLETED"
57*cb9d4bb1SMuhammad Moinur Rahman	echo "IMAGE sequence COMPLETED"
58*cb9d4bb1SMuhammad Moinur Rahman	echo "BOOT sequence COMPLETED"
59*cb9d4bb1SMuhammad Moinur Rahman	echo "INITIATING system SHUTDOWN"
60*cb9d4bb1SMuhammad Moinur Rahman	echo "--------------------------------------------------------------"
61*cb9d4bb1SMuhammad Moinur Rahman}
62*cb9d4bb1SMuhammad Moinur Rahman
63*cb9d4bb1SMuhammad Moinur Rahmanfull_tests()
64*cb9d4bb1SMuhammad Moinur Rahman{
65*cb9d4bb1SMuhammad Moinur Rahman	# Currently this is a placeholder.
66*cb9d4bb1SMuhammad Moinur Rahman	# This will be used to add the full tests scenario those are run in
67*cb9d4bb1SMuhammad Moinur Rahman	# the CI system
68*cb9d4bb1SMuhammad Moinur Rahman	echo
69*cb9d4bb1SMuhammad Moinur Rahman	echo "--------------------------------------------------------------"
70*cb9d4bb1SMuhammad Moinur Rahman	echo "BUILD sequence COMPLETED"
71*cb9d4bb1SMuhammad Moinur Rahman	echo "IMAGE sequence COMPLETED"
72*cb9d4bb1SMuhammad Moinur Rahman	echo "BOOT sequence COMPLETED"
73*cb9d4bb1SMuhammad Moinur Rahman	echo "TEST sequence STARTED"
74*cb9d4bb1SMuhammad Moinur Rahman	echo "TEST sequence COMPLETED"
75*cb9d4bb1SMuhammad Moinur Rahman	echo "INITIATING system SHUTDOWN"
76*cb9d4bb1SMuhammad Moinur Rahman	echo "--------------------------------------------------------------"
77*cb9d4bb1SMuhammad Moinur Rahman}
78*cb9d4bb1SMuhammad Moinur Rahman
79*cb9d4bb1SMuhammad Moinur Rahmanfirstboot_ci_run()
80*cb9d4bb1SMuhammad Moinur Rahman{
81*cb9d4bb1SMuhammad Moinur Rahman	if [ "$freebsdci_type" = "smoke" ]; then
82*cb9d4bb1SMuhammad Moinur Rahman		smoke_tests
83*cb9d4bb1SMuhammad Moinur Rahman	elif [ "$freebsdci_type" = "full" ]; then
84*cb9d4bb1SMuhammad Moinur Rahman		full_tests
85*cb9d4bb1SMuhammad Moinur Rahman	fi
86*cb9d4bb1SMuhammad Moinur Rahman	auto_shutdown
87*cb9d4bb1SMuhammad Moinur Rahman}
88*cb9d4bb1SMuhammad Moinur Rahman
89*cb9d4bb1SMuhammad Moinur Rahmanload_rc_config $name
90*cb9d4bb1SMuhammad Moinur Rahmanrun_rc_command "$1"
91