Newer
Older
stages:
- download deps
- build deps
- build
- test
variables:
DEPS_SRC_PATH: "${CI_PROJECT_DIR}/deps/src"
DEPS_INSTALL_PATH: "${CI_PROJECT_DIR}/deps/build"
DEPS_COMMIT: "${CI_PROJECT_DIR}/deps/build/gkfs_deps_commit"
LOG_PATH: "${CI_PROJECT_DIR}/logs"
# Configuration variables
ADAFS_LOG_LEVEL: "100"
ADAFS_DAEMON_LOG_PATH: "${CI_PROJECT_DIR}/logs/daemon.log"
ADAFS_PRELOAD_LOG_PATH: "${CI_PROJECT_DIR}/logs/preload.log"
image: gekkofs/gekkofs:build_env
compile dependencies:
stage: build deps
cache:
key: deps-cache
paths:
- ${DEPS_INSTALL_PATH}/
script:
# Folder of built dependencies is cached and marked with the ID of the commit from which have been built.
# If the download and compile script have been modified the cache gets invalidated and dependencies will be built again.
- ( [ -f "${DEPS_COMMIT}" ] && git diff --quiet "`cat ${DEPS_COMMIT}`" -- scripts/dl_dep.sh scripts/compile_dep.sh ) || (
scripts/dl_dep.sh ${DEPS_SRC_PATH} -n ofi &&
scripts/compile_dep.sh -n ofi ${DEPS_SRC_PATH} ${DEPS_INSTALL_PATH} &&
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
echo "${CI_COMMIT_SHA}" > "${DEPS_COMMIT}"
)
artifacts:
paths:
- ${DEPS_INSTALL_PATH}
compile GekkoFS:
stage: build
dependencies:
- "compile dependencies"
script:
- mkdir -p ${BUILD_PATH} && cd ${BUILD_PATH}
- cmake
-Wdev
-Wdeprecate
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_PREFIX_PATH=${DEPS_INSTALL_PATH}
..
- make -j$(nproc)
artifacts:
paths:
- ${BUILD_PATH}
compile tests:
stage: build
dependencies:
- "compile dependencies"
script:
- mkdir -p ${TESTS_BUILD_PATH} && cd ${TESTS_BUILD_PATH}
- cmake -DCMAKE_BUILD_TYPE=Debug ..
- make -j$(nproc)
artifacts:
paths:
- ${TESTS_BUILD_PATH}
test wr:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${BUILD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${BUILD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_wr
artifacts:
paths:
- "${LOG_PATH}"
test directories:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${BUILD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${BUILD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_dir
test truncate:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${BUILD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${BUILD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_truncate
test path resolution:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${BUILD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${BUILD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_path_resolution