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/install"
DEPS_COMMIT: "${CI_PROJECT_DIR}/deps/install/gkfs_deps_commit"
BUILD_PATH: "${CI_PROJECT_DIR}/gkfs/build"
INSTALL_PATH: "${CI_PROJECT_DIR}/gkfs/install"
INTEGRATION_TESTS_BIN_PATH: "${CI_PROJECT_DIR}/gkfs/install/share/gkfs/tests/integration"
INTEGRATION_TESTS_RUN_PATH: "${CI_PROJECT_DIR}/gkfs/install/share/gkfs/tests/integration/run"
BUILD_FWD_PATH: "${CI_PROJECT_DIR}/gkfwd/build"
INSTALL_FWD_PATH: "${CI_PROJECT_DIR}/gkfwd/install"
INTEGRATION_TESTS_FWD_BIN_PATH: "${CI_PROJECT_DIR}/gkfwd/install/share/gkfs/tests/integration"
INTEGRATION_TESTS_FWD_RUN_PATH: "${CI_PROJECT_DIR}/gkfwd/install/share/gkfs/tests/integration/run"
PYTEST: "${CI_PROJECT_DIR}/gkfs/install/share/gkfs/tests/integration/pytest-venv/bin/py.test"
TESTS_BUILD_FWD_PATH: "${CI_PROJECT_DIR}/test/build-gkfwd"
PYTEST_FWD: "${CI_PROJECT_DIR}/gkfwd/install/share/gkfs/tests/integration/pytest-venv/bin/py.test"
LOG_PATH: "${CI_PROJECT_DIR}/logs"
LD_LIBRARY_PATH: "${CI_PROJECT_DIR}/deps/install/lib;${CI_PROJECT_DIR}/deps/install/lib64"
GKFS_LOG_LEVEL: "100"
GKFS_DAEMON_LOG_PATH: "${CI_PROJECT_DIR}/logs/daemon.log"
LIBGKFS_LOG: "all"
LIBGKFS_LOG_OUTPUT: "${CI_PROJECT_DIR}/logs/gkfs_client.log"
GIT_SUBMODULE_STRATEGY: recursive
# Temporary new image file
# image: gekkofs/gekkofs:build_env-0.8.0
image: jeanbez/gekkofs-forwarding:latest
compile dependencies:
stage: build 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} &&
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
-DGKFS_INSTALL_TESTS:BOOL=ON
-DCMAKE_INSTALL_PREFIX=${INSTALL_PATH}
${CI_PROJECT_DIR}
- make -j$(nproc) install
compile GekkoFWD:
stage: build
dependencies:
- "compile dependencies"
script:
- mkdir -p ${BUILD_FWD_PATH} && cd ${BUILD_FWD_PATH}
- cmake
-Wdev
-Wdeprecate
-DCMAKE_BUILD_TYPE=Debug
-DGKFS_BUILD_TESTS:BOOL=ON
-DGKFS_INSTALL_TESTS:BOOL=ON
-DRPC_PROTOCOL="ofi+sockets"
-DCMAKE_PREFIX_PATH=${DEPS_INSTALL_PATH}
-DCMAKE_INSTALL_PREFIX=${INSTALL_FWD_PATH}
${CI_PROJECT_DIR}
- make -j$(nproc) install
artifacts:
paths:
- ${INSTALL_FWD_PATH}
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}
tests GekkoFWD:
stage: build
dependencies:
- "compile dependencies"
script:
- mkdir -p ${TESTS_BUILD_FWD_PATH} && cd ${TESTS_BUILD_FWD_PATH}
- cmake -DCMAKE_BUILD_TYPE=Debug ..
- make -j$(nproc)
artifacts:
paths:
- ${TESTS_BUILD_FWD_PATH}
integration tests:
stage: test
script:
- mkdir -p ${INTEGRATION_TESTS_RUN_PATH}
- cd ${INTEGRATION_TESTS_BIN_PATH}
- TMPDIR=${INTEGRATION_TESTS_RUN_PATH} unbuffer ${PYTEST} -v | tee ${INTEGRATION_TESTS_RUN_PATH}/session.log
artifacts:
when: on_failure
paths:
- "${INTEGRATION_TESTS_RUN_PATH}"
test wr:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${INSTALL_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${INSTALL_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_wr
paths:
- "${LOG_PATH}"
test directories:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${INSTALL_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${INSTALL_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_dir
test truncate:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${INSTALL_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${INSTALL_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_truncate
test path resolution:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${INSTALL_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- LD_PRELOAD=${INSTALL_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_path_resolution
test lseek:
stage: test
script:
- mkdir -p "${LOG_PATH}"
- ${INSTALL_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- sleep 4
- LD_PRELOAD=${INSTALL_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_lseek
artifacts:
script:
- mkdir -p "${LOG_PATH}"
- cp agios/* /tmp
- echo "`hostname` 0" > gkfs_forwarding.map
- ${INSTALL_FWD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- sleep 4
- LD_PRELOAD=${INSTALL_FWD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_FWD_PATH}/gkfs_test_wr
artifacts:
when: on_failure
paths:
- "${LOG_PATH}"
script:
- mkdir -p "${LOG_PATH}"
- cp agios/* /tmp
- echo "`hostname` 0" > gkfs_forwarding.map
- ${INSTALL_FWD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- sleep 4
- LD_PRELOAD=${INSTALL_FWD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_FWD_PATH}/gkfs_test_dir
artifacts:
when: on_failure
paths:
- "${LOG_PATH}"
script:
- mkdir -p "${LOG_PATH}"
- cp agios/* /tmp
- echo "`hostname` 0" > gkfs_forwarding.map
- ${INSTALL_FWD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- sleep 4
- LD_PRELOAD=${INSTALL_FWD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_FWD_PATH}/gkfs_test_truncate
artifacts:
when: on_failure
paths:
- "${LOG_PATH}"
script:
- mkdir -p "${LOG_PATH}"
- cp agios/* /tmp
- echo "`hostname` 0" > gkfs_forwarding.map
- ${INSTALL_FWD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- sleep 4
- LD_PRELOAD=${INSTALL_FWD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_FWD_PATH}/gkfs_test_path_resolution
artifacts:
when: on_failure
paths:
- "${LOG_PATH}"
script:
- mkdir -p "${LOG_PATH}"
- cp agios/* /tmp
- echo "`hostname` 0" > gkfs_forwarding.map
- ${INSTALL_FWD_PATH}/bin/gkfs_daemon --mount /tmp/mountdir --root /tmp/root &
- sleep 4
- LD_PRELOAD=${INSTALL_FWD_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_FWD_PATH}/gkfs_test_lseek
artifacts:
when: on_failure
paths:
- "${LOG_PATH}"