Files
unison/.github/workflows/per_commit.yml
2023-11-27 01:17:52 +00:00

242 lines
8.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 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
- 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') && (github.repository == nsnam/ns-3-dev-git) }}
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 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
- 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 \
tar \
mingw-w64-x86_64-curl \
mingw-w64-x86_64-binutils \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-ninja \
mingw-w64-x86_64-python \
mingw-w64-x86_64-ccache \
mingw-w64-x86_64-gsl \
mingw-w64-x86_64-libxml2 \
mingw-w64-x86_64-lld \
mingw-w64-x86_64-sed
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