forked from containers/youki
-
Notifications
You must be signed in to change notification settings - Fork 0
/
justfile
169 lines (131 loc) · 4.34 KB
/
justfile
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
alias build := youki-release
alias youki := youki-dev
KIND_CLUSTER_NAME := 'youki'
cwd := justfile_directory()
# build
# build all binaries
build-all: youki-release rust-oci-tests-bin runtimetest
# build youki in dev mode
youki-dev:
{{ cwd }}/scripts/build.sh -o {{ cwd }} -c youki
# build youki in release mode
youki-release:
{{ cwd }}/scripts/build.sh -o {{ cwd }} -r -c youki
# build runtimetest binary
runtimetest:
{{ cwd }}/scripts/build.sh -o {{ cwd }} -r -c runtimetest
# build rust oci tests binary
rust-oci-tests-bin:
{{ cwd }}/scripts/build.sh -o {{ cwd }} -r -c integration-test
# Tests
# run oci tests
test-oci: oci-tests rust-oci-tests
# run all tests except rust-oci
test-all: unittest test-features oci-tests containerd-test # currently not doing rust-oci here
# run cargo unittests
unittest:
cd ./crates
LD_LIBRARY_PATH=${HOME}/.wasmedge/lib cargo test --all --all-targets --all-features
# run permutated feature compilation tests
test-features:
{{ cwd }}/scripts/features_test.sh
# run test against musl target
test-musl:
{{ cwd }}/scripts/musl_test.sh
# run oci integration tests
oci-tests:
{{ cwd }}/scripts/oci_integration_tests.sh {{ cwd }}
# run rust oci integration tests
rust-oci-tests: youki-release runtimetest rust-oci-tests-bin
{{ cwd }}/scripts/rust_integration_tests.sh {{ cwd }}/youki
# validate rust oci integration tests on runc
validate-rust-oci-runc: runtimetest rust-oci-tests-bin
{{ cwd }}/scripts/rust_integration_tests.sh runc
# run containerd integration tests
containerd-test: youki-dev
VAGRANT_VAGRANTFILE=Vagrantfile.containerd2youki vagrant up
VAGRANT_VAGRANTFILE=Vagrantfile.containerd2youki vagrant provision --provision-with test
[private]
kind-cluster: bin-kind
#!/usr/bin/env bash
set -euo pipefail
mkdir -p tests/k8s/_out/
docker buildx build -f tests/k8s/Dockerfile --iidfile=tests/k8s/_out/img --load .
image=$(cat tests/k8s/_out/img)
bin/kind create cluster --name {{ KIND_CLUSTER_NAME }} --image=$image
# run youki with kind
test-kind: kind-cluster
kubectl --context=kind-{{ KIND_CLUSTER_NAME }} apply -f tests/k8s/deploy.yaml
kubectl --context=kind-{{ KIND_CLUSTER_NAME }} wait deployment nginx-deployment --for condition=Available=True --timeout=90s
kubectl --context=kind-{{ KIND_CLUSTER_NAME }} get pods -o wide
kubectl --context=kind-{{ KIND_CLUSTER_NAME }} delete -f tests/k8s/deploy.yaml
# Bin
[private]
bin-kind:
docker buildx build --output=bin/ -f tests/k8s/Dockerfile --target kind-bin .
# Clean
# Clean kind test env
clean-test-kind:
kind delete cluster --name {{ KIND_CLUSTER_NAME }}
# misc
# run bpftrace hack
hack-bpftrace:
BPFTRACE_STRLEN=120 ./hack/debug.bt
# run linting on project
lint:
cargo fmt --all -- --check
cargo clippy --all --all-targets --all-features -- -D warnings
# run spellcheck
spellcheck:
typos
# run format on project
format:
cargo fmt --all
# cleans up generated artifacts
clean:
{{ cwd }}/scripts/clean.sh {{ cwd }}
# install tools used in dev
dev-prepare:
cargo install typos-cli
# setup dependencies in CI
ci-prepare:
#!/usr/bin/env bash
set -euo pipefail
# Check if system is Ubuntu
if [[ -f /etc/lsb-release ]]; then
source /etc/lsb-release
if [[ $DISTRIB_ID == "Ubuntu" ]]; then
echo "System is Ubuntu"
apt-get -y update
apt-get install -y \
pkg-config \
libsystemd-dev \
libdbus-glib-1-dev \
build-essential \
libelf-dev \
libseccomp-dev \
libclang-dev \
libssl-dev \
criu
exit 0
fi
fi
echo "Unknown system. The CI is only configured for Ubuntu. You will need to forge your own path. Good luck!"
exit 1
ci-musl-prepare: ci-prepare
#!/usr/bin/env bash
set -euo pipefail
# Check if system is Ubuntu
if [[ -f /etc/lsb-release ]]; then
source /etc/lsb-release
if [[ $DISTRIB_ID == "Ubuntu" ]]; then
echo "System is Ubuntu"
apt-get -y update
apt-get install -y \
musl-dev \
musl-tools
exit 0
fi
fi
echo "Unknown system. The CI is only configured for Ubuntu. You will need to forge your own path. Good luck!"
exit 1