name: "CI" on: [push] jobs: Ubuntu: runs-on: ubuntu-latest outputs: cache_misses: ${{ env.cache_misses }} steps: - uses: actions/checkout@v3 - name: Install required packages run: | sudo apt-get update sudo apt-get -y install apt-utils sudo apt-get -y install git gcc g++ cmake python make ninja-build sudo apt-get -y install tcpdump libgsl-dev libxml2-dev sudo apt-get -y install curl unzip tar sudo apt-get -y install ccache - name: Get timestamp id: time run: python3 -c "from datetime import datetime; print('time='+datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))" >> $GITHUB_ENV - name: Restore ccache id: ccache uses: actions/cache@v3 with: path: .ccache key: ubuntu-ci-${{env.time}} restore-keys: ubuntu-ci- - name: Setup ccache run: | ccache --set-config=cache_dir="$GITHUB_WORKSPACE/.ccache" ccache --set-config=max_size=400M ccache --set-config=compression=true ccache -z - name: Configure CMake run: | ./ns3 configure -d release --enable-asserts --enable-examples --enable-tests --disable-werror -G"Ninja" - name: Build ns-3 run: | ./ns3 build - name: Print ccache statistics id: ccache_results run: | ccache -s python3 -c "import re, subprocess;print('cache_misses=%d' % int(re.findall('cache_miss(.*)', subprocess.check_output(['ccache', '--print-stats']).decode())[0]))" >> $GITHUB_ENV - name: Run tests and examples if: env.cache_misses != '0' run: python3 test.py --no-build CodeQL: runs-on: ubuntu-latest needs: Ubuntu if: needs.Ubuntu.outputs.cache_misses != '0' strategy: fail-fast: false steps: - name: Checkout repository uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: 'cpp' - name: Install required packages run: | sudo apt-get update sudo apt-get -y install apt-utils sudo apt-get -y install git gcc g++ cmake python make ninja-build sudo apt-get -y install tcpdump libgsl-dev libxml2-dev sudo apt-get -y install curl unzip tar sudo apt-get -y install ccache - name: Get timestamp id: time run: python3 -c "from datetime import datetime; print('time='+datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))" >> $GITHUB_ENV - name: Restore ccache id: ccache uses: actions/cache@v3 with: path: .ccache key: ubuntu-codeql-${{env.time}} restore-keys: ubuntu-codeql- - name: Setup ccache run: | ccache --set-config=cache_dir="$GITHUB_WORKSPACE/.ccache" ccache --set-config=max_size=400M ccache --set-config=compression=true ccache -z - name: Configure CMake run: | ./ns3 configure -d release --enable-asserts --enable-examples --enable-tests --disable-werror -G"Ninja" - name: Build ns-3 run: | ./ns3 build - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 Codecov: runs-on: ubuntu-latest needs: Ubuntu if: needs.Ubuntu.outputs.cache_misses != '0' steps: - uses: actions/checkout@v3 - name: Install required packages run: | sudo apt-get update sudo apt-get -y install apt-utils sudo apt-get -y install git gcc g++ cmake python3 make ninja-build sudo apt-get -y install tcpdump libgsl-dev libxml2-dev sudo apt-get -y install curl unzip tar sudo apt-get -y install ccache sudo apt-get -y install lcov - name: Get timestamp id: time run: python3 -c "from datetime import datetime; print('time='+datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))" >> $GITHUB_ENV - name: Restore ccache id: ccache uses: actions/cache@v3 with: path: .ccache key: ubuntu-coverage-${{env.time}} restore-keys: ubuntu-coverage- - name: Setup ccache run: | ccache --set-config=cache_dir="$GITHUB_WORKSPACE/.ccache" ccache --set-config=max_size=400M ccache --set-config=compression=true ccache -z - name: Configure CMake run: | ./ns3 configure --enable-asserts --enable-examples --enable-tests --disable-werror --enable-gcov -G"Ninja" - name: Build ns-3 run: | ./ns3 build - name: Print ccache statistics id: ccache_results run: | ccache -s python3 -c "import re, subprocess;print('cache_misses=%d' % int(re.findall('cache_miss(.*)', subprocess.check_output(['ccache', '--print-stats']).decode())[0]))" >> $GITHUB_ENV - name: Generate coverage data and submit to codecov.io if: env.cache_misses != '0' run: | ./ns3 build coverage_gcc cd ./build/coverage bash <(curl -s https://codecov.io/bash) -f ns3.info || echo "Codecov did not collect coverage reports" Windows_MinGW: runs-on: windows-latest defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v3 - uses: msys2/setup-msys2@v2 - name: Install required msys2/mingw64 packages run: | pacman -S --noconfirm unzip pacman -S --noconfirm tar pacman -S --noconfirm mingw-w64-x86_64-curl pacman -S --noconfirm mingw-w64-x86_64-binutils pacman -S --noconfirm mingw-w64-x86_64-cmake pacman -S --noconfirm mingw-w64-x86_64-gcc pacman -S --noconfirm mingw-w64-x86_64-ninja pacman -S --noconfirm mingw-w64-x86_64-python pacman -S --noconfirm mingw-w64-x86_64-ccache pacman -S --noconfirm mingw-w64-x86_64-gsl pacman -S --noconfirm mingw-w64-x86_64-libxml2 pacman -S --noconfirm mingw-w64-x86_64-lld pacman --noconfirm -Scc - name: Get timestamp id: time run: python3 -c "from datetime import datetime; print('time='+datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))" >> $GITHUB_ENV - name: Restore ccache id: ccache uses: actions/cache@v3 with: path: .ccache key: msys2-${{env.time}} restore-keys: msys2- - name: Setup ccache run: | ccache --set-config=cache_dir="$GITHUB_WORKSPACE/.ccache" ccache --set-config=max_size=400M ccache --set-config=compression=true ccache -z - name: Configure CMake run: | python3 ns3 configure -d release --enable-asserts --enable-examples --enable-tests --disable-werror -G"Ninja" - name: Build ns-3 run: | python3 ns3 build - name: Print ccache statistics id: ccache_results run: | ccache -s python3 -c "import re, subprocess;print('cache_misses=%d' % int(re.findall('cache_miss(.*)', subprocess.check_output(['ccache', '--print-stats']).decode())[0]))" >> $GITHUB_ENV - name: Run tests and examples if: env.cache_misses != '0' run: python3 test.py --no-build Mac_OS_X: runs-on: macos-latest steps: - uses: actions/checkout@v3 - name: Install required packages run: | brew install ninja cmake ccache libxml2 gsl open-mpi #qt5 - name: Get timestamp id: time run: python3 -c "from datetime import datetime; print('time='+datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))" >> $GITHUB_ENV - name: Restore ccache id: ccache uses: actions/cache@v3 with: path: .ccache key: osx_brew-ci-${{env.time}} restore-keys: osx_brew-ci- - name: Setup ccache run: | export PATH=/usr/local/bin:$PATH #:/usr/local/opt/qt/bin ccache --set-config=cache_dir="$GITHUB_WORKSPACE/.ccache" ccache --set-config=max_size=400M ccache --set-config=compression=true ccache -z - name: Configure CMake run: | export PATH=/usr/local/bin:$PATH #:/usr/local/opt/qt/bin ./ns3 configure -d release --enable-asserts --enable-examples --enable-tests --disable-werror -G"Ninja" - name: Build ns-3 run: | export PATH="$PATH" #:/usr/local/opt/qt/bin ./ns3 build - name: Print ccache statistics id: ccache_results run: | ccache -s python3 -c "import re, subprocess;print('cache_misses=%d' % int(re.findall('cache_miss(.*)', subprocess.check_output(['ccache', '--print-stats']).decode())[0]))" >> $GITHUB_ENV - name: Run tests and examples if: env.cache_misses != '0' run: ./test.py --no-build