blob: b2eae9806811055ae0c07571a7ff00a0803488d5 [file] [log] [blame]
name: libyang CI
on:
push:
branches:
- libyang2
pull_request:
branches:
- libyang2
jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "Release, Ubuntu 18.04, gcc",
os: "ubuntu-18.04",
build-type: "Release",
cc: "gcc",
options: "-DENABLE_BUILD_TESTS=ON",
packager: "sudo apt-get",
packages: "libcmocka-dev shunit2"
}
- {
name: "Release, Ubuntu 18.04, clang",
os: "ubuntu-18.04",
build-type: "Release",
cc: "clang",
options: "-DENABLE_BUILD_TESTS=ON",
packager: "sudo apt-get",
packages: "libcmocka-dev shunit2"
}
- {
name: "Debug, Ubuntu 18.04, gcc",
os: "ubuntu-18.04",
build-type: "Debug",
cc: "gcc",
options: "",
packager: "sudo apt-get",
packages: "libcmocka-dev valgrind shunit2"
}
- {
name: "Debug, Ubuntu 18.04, clang",
os: "ubuntu-18.04",
build-type: "Debug",
cc: "clang",
options: "",
packager: "sudo apt-get",
packages: "libcmocka-dev valgrind shunit2"
}
- {
name: "Release, macOS 10.15, clang",
os: "macos-10.15",
build-type: "Release",
cc: "clang",
options: "-DENABLE_BUILD_TESTS=ON",
packager: "brew",
packages: "cmocka shunit2"
}
- {
name: "ASAN and UBSAN",
os: "ubuntu-18.04",
build-type: "Debug",
cc: "clang",
options: "-DCMAKE_C_FLAGS=-fsanitize=address,undefined -DENABLE_BUILD_TESTS=ON -DENABLE_VALGRIND_TESTS=OFF",
packager: "sudo apt-get",
packages: "libcmocka-dev"
}
steps:
- uses: actions/checkout@v2
- name: Uncrustify
shell: bash
working-directory: ${{ github.workspace }}
run: |
git clone --branch uncrustify-0.71.0 https://github.com/uncrustify/uncrustify
cd uncrustify
mkdir build
cd build
CC=${{ matrix.config.cc }} cmake ..
make
sudo make install
if: ${{ matrix.config.name == 'Debug, Ubuntu 18.04, gcc' }}
- name: Dependencies
shell: bash
run: |
${{ matrix.config.packager }} update
${{ matrix.config.packager }} install ${{ matrix.config.packages }}
- name: Configure
shell: bash
working-directory: ${{ github.workspace }}
run: |
mkdir build
cd build
CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.build-type }} ${{ matrix.config.options }} ..
- name: Build
shell: bash
working-directory: ${{ github.workspace }}/build
run: make
- name: Test
shell: bash
working-directory: ${{ github.workspace }}/build
run: ctest --output-on-failure
abi:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Dependencies
shell: bash
run: |
sudo apt-get install abi-dumper abi-compliance-checker
sudo snap install core universal-ctags
- name: Configure
shell: bash
working-directory: ${{ github.workspace }}
run: |
mkdir build
cd build
CC=gcc cmake -DCMAKE_BUILD_TYPE=ABICheck ..
- name: Build
shell: bash
working-directory: ${{ github.workspace }}/build
run: LC_ALL=C.UTF-8 PATH=/snap/bin:$PATH make abi-check
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Dependencies
shell: bash
run: |
sudo apt-get install libcmocka-dev lcov
- name: Configure
shell: bash
working-directory: ${{ github.workspace }}
run: |
mkdir build
cd build
CC=gcc cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON ..
- name: Build
shell: bash
working-directory: ${{ github.workspace }}/build
run: make
- name: Test
shell: bash
working-directory: ${{ github.workspace }}/build
run: ctest --output-on-failure
- name: Upload to Codecov.io
shell: bash
working-directory: ${{ github.workspace }}/build
run: bash <(curl -s https://codecov.io/bash)