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" TESTS_BUILD_PATH: "${CI_PROJECT_DIR}/test/build-gkfs" 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" # Configuration variables 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: key: deps-build 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 ) || ( rm -f ${DEPS_COMMIT} && 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_BUILD_TESTS:BOOL=ON -DGKFS_INSTALL_TESTS:BOOL=ON -DRPC_PROTOCOL="ofi+sockets" -DCMAKE_PREFIX_PATH=${DEPS_INSTALL_PATH} -DCMAKE_INSTALL_PREFIX=${INSTALL_PATH} ${CI_PROJECT_DIR} - make -j$(nproc) install artifacts: paths: - ${INSTALL_PATH} 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" -DENABLE_FORWARDING:BOOL=ON -DENABLE_AGIOS:BOOL=ON -DCMAKE_PREFIX_PATH=${DEPS_INSTALL_PATH} -DCMAKE_INSTALL_PREFIX=${INSTALL_FWD_PATH} ${CI_PROJECT_DIR} - make -j$(nproc) install artifacts: paths: - ${INSTALL_FWD_PATH} tests GekkoFS: 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 & - sleep 4 - LD_PRELOAD=${INSTALL_PATH}/lib/libgkfs_intercept.so ${TESTS_BUILD_PATH}/gkfs_test_wr artifacts: when: on_failure paths: - "${LOG_PATH}" test directories: 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_dir artifacts: when: on_failure paths: - "${LOG_PATH}" test truncate: 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_truncate artifacts: when: on_failure paths: - "${LOG_PATH}" test path resolution: 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_path_resolution artifacts: when: on_failure paths: - "${LOG_PATH}" 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: when: on_failure paths: - "${LOG_PATH}" test FWD wr: stage: test dependencies: - "compile dependencies" - "compile GekkoFWD" - "tests GekkoFWD" 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}" test FWD directories: stage: test dependencies: - "compile dependencies" - "compile GekkoFWD" - "tests GekkoFWD" 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}" test FWD truncate: stage: test dependencies: - "compile dependencies" - "compile GekkoFWD" - "tests GekkoFWD" 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}" test FWD path resolution: stage: test dependencies: - "compile dependencies" - "compile GekkoFWD" - "tests GekkoFWD" 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}" test FWD lseek: stage: test dependencies: - "compile dependencies" - "compile GekkoFWD" - "tests GekkoFWD" 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}"