# ns-3 CI/CD script with the platform tests stage # # Contains jobs to check the ns-3 build system and test script are fully working. # Base platform test job .test-platform-job-base: stage: test image: ubuntu:rolling rules: - if: $RELEASE == "weekly" - if: $CI_PIPELINE_SOURCE == 'merge_request_event' when: manual allow_failure: true before_script: - apt update - DEBIAN_FRONTEND=noninteractive apt install -y cmake ccache g++ ninja-build python3 python3-venv pkg-config python3-pip docker.io lldb gdb imagemagick git - python3 -m venv ns3env - source ./ns3env/bin/activate - python3 -m pip install python_on_whales GitPython cppyy django requests script: - mkdir -p $CCACHE_BASEDIR_VALUE - export CCACHE_BASEDIR=${PWD} - export CCACHE_DIR=${PWD}/$CCACHE_BASEDIR_VALUE - ccache -M 3G # Set maximum cache size to 3GB - ccache -F 0 # Remove the limit on number of files in the cache - ./$TEST_SCRIPT cache: # Use separate key for each (debug/default/optimized) jobs because # they run in parallel and will otherwise overwrite each other # cache when they upload the cache archive at the end of the job, # resulting in only the cache for the last finished configuration # being stored. # # Do not distinguish between branches though to avoid # recompilation of all the files when a new branch is created. key: "ccache-$CI_JOB_NAME" paths: - $CCACHE_BASEDIR_VALUE/ timeout: 24h interruptible: true variables: CCACHE_BASEDIR_VALUE: ns-3-ccache-storage tags: - nsnam - linux weekly-test-py: extends: .test-platform-job-base variables: TEST_SCRIPT: ./utils/tests/test-test.py weekly-test-ns3-py: extends: .test-platform-job-base variables: TEST_SCRIPT: ./utils/tests/test-ns3.py services: - docker:dind-rootless