forked from hermit-os/kernel
-
Notifications
You must be signed in to change notification settings - Fork 2
/
.gitlab-ci.yml
121 lines (114 loc) · 4.66 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
stages:
- prepare
- build
- test
variables:
DOCKER_FILE: Dockerfile
DOCKER_TAG: latest
DOCKER_IMAGE: ${CI_REGISTRY_IMAGE}
GIT_SUBMODULE_STRATEGY: normal
FF_GITLAB_REGISTRY_HELPER_IMAGE: 1
.prepare:docker: &prepare_docker
stage: prepare
image:
name: quay.io/buildah/stable
variables:
_BUILDAH_STARTED_IN_USERNS: ""
BUILDAH_ISOLATION: chroot
BUILDAH_LAYERS: "true"
before_script:
- buildah version
- buildah login --username "${CI_REGISTRY_USER}" --password "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
script:
- buildah bud -f ${DOCKER_FILE} -t ${DOCKER_IMAGE}:${DOCKER_TAG} .
- buildah push ${DOCKER_IMAGE}:${DOCKER_TAG} docker://${DOCKER_IMAGE}:${DOCKER_TAG}
after_script:
- buildah logout "${CI_REGISTRY}"
tags:
- builder
prepare:docker:
<<: *prepare_docker
build:demo:
stage: build
image: ${CI_REGISTRY_IMAGE}
script:
- if [ -d "$HOME/tmp_libhermit-rs" ]; then rm -rf $HOME/tmp_libhermit-rs; fi
- mkdir $HOME/tmp_libhermit-rs
- shopt -s dotglob nullglob && mv ./* $HOME/tmp_libhermit-rs
# If for some reason target exists (due to a bad cache) then delete it.
- if [ -d "$HOME/tmp_libhermit-rs/target" ]; then rm -rf $HOME/tmp_libhermit-rs/target; fi
- git clone https://github.com/hermitcore/rusty-hermit.git
- cd rusty-hermit
- echo "rusty-hermit at commit $(git rev-parse HEAD)"
# Ensure that libhermit-rs is empty - This shouldn't be necessary since we don't initialize the submodules
# But let's do it anyway to be safe
- if [ -d "libhermit-rs" ]; then rm -rf libhermit-rs; fi
- mkdir libhermit-rs
- shopt -s dotglob nullglob && mv $HOME/tmp_libhermit-rs/* libhermit-rs/.
- cargo build -p rusty_demo
- RUSTFLAGS="-Clinker-plugin-lto" cargo build -p rusty_demo --release
artifacts:
paths:
- rusty-hermit/target/x86_64-unknown-hermit/debug/rusty_demo
- rusty-hermit/target/x86_64-unknown-hermit/release/rusty_demo
test:integration:
stage: test
image: ${CI_REGISTRY_IMAGE}
allow_failure: true
script:
- lscpu
- kvm-ok
- python3 --version
- cargo install uhyve
- HERMIT_LOG_LEVEL_FILTER=Debug cargo test --test '*' --no-fail-fast -Z build-std=core,alloc
-Z build-std-features=compiler-builtins-mem --no-default-features --features=pci,acpi
--target x86_64-unknown-hermit-kernel -- --uhyve_path=$HOME/.cargo/bin/uhyve --veryverbose
# 2 cores
- HERMIT_LOG_LEVEL_FILTER=Debug cargo test --test '*' --no-fail-fast -Z build-std=core,alloc
-Z build-std-features=compiler-builtins-mem --no-default-features --features=pci,acpi
--target x86_64-unknown-hermit-kernel -- --uhyve_path=$HOME/.cargo/bin/uhyve --num_cores 2
--veryverbose
tags:
- privileged
test:uhyve:
stage: test
dependencies:
- build:demo
image: ${CI_REGISTRY_IMAGE}
script:
- lscpu
- kvm-ok
- cargo install uhyve
- uhyve -v -c 1 rusty-hermit/target/x86_64-unknown-hermit/debug/rusty_demo
- uhyve -v -c 2 rusty-hermit/target/x86_64-unknown-hermit/debug/rusty_demo
- uhyve -v -c 1 rusty-hermit/target/x86_64-unknown-hermit/release/rusty_demo
- uhyve -v -c 2 rusty-hermit/target/x86_64-unknown-hermit/release/rusty_demo
tags:
- privileged
test:qemu:
stage: test
dependencies:
- build:demo
image: ${CI_REGISTRY_IMAGE}
script:
- lscpu
- kvm-ok
- git clone https://github.com/hermitcore/rusty-loader.git $CI_BUILDS_DIR/loader
- cd $CI_BUILDS_DIR/loader
- make
- make release=1
- cd -
- qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio
-kernel $CI_BUILDS_DIR/loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader
-initrd rusty-hermit/target/x86_64-unknown-hermit/debug/rusty_demo -enable-kvm
- qemu-system-x86_64 -display none -smp 2 -m 64M -serial stdio
-kernel $CI_BUILDS_DIR/loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader
-initrd rusty-hermit/target/x86_64-unknown-hermit/debug/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand -enable-kvm
- qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio
-kernel $CI_BUILDS_DIR/loader/target/x86_64-unknown-hermit-loader/release/rusty-loader
-initrd rusty-hermit/target/x86_64-unknown-hermit/release/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand -enable-kvm
- qemu-system-x86_64 -display none -smp 2 -m 64M -serial stdio
-kernel $CI_BUILDS_DIR/loader/target/x86_64-unknown-hermit-loader/release/rusty-loader
-initrd rusty-hermit/target/x86_64-unknown-hermit/release/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand -enable-kvm
tags:
- privileged