Skip to content

Remove doc build. #1759

Remove doc build.

Remove doc build. #1759

Workflow file for this run

# Build library and examples, and generate releases.
name: FusionEngine Client Build
on:
push:
# Build on a push to any branch.
branches:
- '*'
# Build on a push of any tag named v* (v1.0, etc.) and generate a release.
tags:
- 'v*'
jobs:
# Check code style.
check_style:
name: Check Style
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Check Python formatting.
- name: Check Python Formatting
id: autopep8
uses: peter-evans/autopep8@v1
with:
args: --in-place python/fusion_engine_client python/examples python/bin python/tests
- name: Test Python Result
if: steps.autopep8.outputs.exit-code == 2
run: exit 1
# Check C++ formatting.
- name: Check C++ Formatting
uses: jidicula/[email protected]
with:
clang-format-version: '13'
check-path: '.'
# Build the library and example applications (Bazel). Currently Linux only.
build_bazel:
name: Bazel Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
compiler: gcc
version: 9
- os: ubuntu-latest
compiler: gcc
version: 10
- os: ubuntu-latest
compiler: clang
version: 11
steps:
- uses: actions/checkout@v2
# Compile.
- name: Install Bazel 4.2.2
uses: abhinavsingh/setup-bazel@v3
with:
version: 4.2.2
- name: Setup Environment (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
if [[ "${{ matrix.compiler }}" == "gcc" ]]; then
sudo apt install gcc-${{ matrix.version }} g++-${{ matrix.version }}
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.version }} 100 \
--slave /usr/bin/g++ g++ /usr/bin/g++-${{ matrix.version }} \
--slave /usr/bin/gcov gcov /usr/bin/gcov-${{ matrix.version }}
sudo update-alternatives --set gcc /usr/bin/gcc-${{ matrix.version }}
echo "CC=/usr/bin/g++-${{ matrix.version }}" >> $GITHUB_ENV
else
sudo apt install clang-${{ matrix.version }}
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ matrix.version }} 100
sudo update-alternatives --set clang /usr/bin/clang-${{ matrix.version }}
echo "CC=/usr/bin/clang++-${{ matrix.version }}" >> $GITHUB_ENV
fi
- name: Build Library
run: |
bazel build -c opt //:*
- name: Build Examples
run: |
cd examples &&
bazel build -c opt //:*
- name: Install Test Files
run: |
mkdir test
cp examples/bazel-bin/message_decode/message_decode ./test/
cp examples/bazel-bin/generate_data/generate_data ./test/
cp examples/message_decode/example_data.p1log ./test/
# Run unit tests.
- name: Test Message Decoding
run: |
cd test
./message_decode example_data.p1log
- name: Test Message Encoding
run: |
cd test
./generate_data new_data.p1log &&
./message_decode new_data.p1log
# Build the library and example applications (CMake).
build_cmake:
name: CMake Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
compiler: gcc
version: 9
- os: ubuntu-latest
compiler: gcc
version: 10
- os: ubuntu-latest
compiler: clang
version: 11
- os: windows-latest
compiler: msvc
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
# Compile.
- name: Install CMake 3.16.x
uses: jwlawson/[email protected]
with:
cmake-version: '3.16.x'
- name: Configure VS Toolchain (Windows)
if: matrix.os == 'windows-latest'
uses: ilammy/msvc-dev-cmd@v1
- name: Setup Environment (Windows)
if: matrix.os == 'windows-latest'
run: |
echo "EXT=.exe" >> $GITHUB_ENV
- name: Setup Environment (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
if [[ "${{ matrix.compiler }}" == "gcc" ]]; then
sudo apt install gcc-${{ matrix.version }} g++-${{ matrix.version }}
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.version }} 100 \
--slave /usr/bin/g++ g++ /usr/bin/g++-${{ matrix.version }} \
--slave /usr/bin/gcov gcov /usr/bin/gcov-${{ matrix.version }}
sudo update-alternatives --set gcc /usr/bin/gcc-${{ matrix.version }}
echo "CC=/usr/bin/gcc-${{ matrix.version }}" >> $GITHUB_ENV
echo "CXX=/usr/bin/g++-${{ matrix.version }}" >> $GITHUB_ENV
else
sudo apt install clang-${{ matrix.version }}
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ matrix.version }} 100
sudo update-alternatives --set clang /usr/bin/clang-${{ matrix.version }}
echo "CC=/usr/bin/clang-${{ matrix.version }}" >> $GITHUB_ENV
echo "CXX=/usr/bin/clang++-${{ matrix.version }}" >> $GITHUB_ENV
fi
echo "EXT=" >> $GITHUB_ENV
- name: Setup Build
run: |
mkdir cmake_build
cd cmake_build
cmake -DCMAKE_INSTALL_PREFIX=install ..
- name: Build Library And Examples (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
cd cmake_build
make
make install
- name: Install Test Files (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
mkdir test
cp cmake_build/examples/message_decode/message_decode ./test/
cp cmake_build/examples/generate_data/generate_data ./test/
cp examples/message_decode/example_data.p1log ./test/
- name: Build Library And Examples (Windows)
if: matrix.os == 'windows-latest'
run: |
cd cmake_build
nmake
nmake install
- name: Install Test Files (Windows)
if: matrix.os == 'windows-latest'
run: |
mkdir test
cp cmake_build/fusion_engine_client.dll ./test/
cp cmake_build/examples/message_decode/message_decode.exe ./test/
cp cmake_build/examples/generate_data/generate_data.exe ./test/
cp examples/message_decode/example_data.p1log ./test/
- name: Build External Project Example (CMake, Linux)
if: matrix.os == 'ubuntu-latest'
run: |
mkdir examples/external_cmake_project/build
cd examples/external_cmake_project/build
cmake ..
make
# Run unit tests.
- name: Test Message Decoding
run: |
cd test
./message_decode${EXT} example_data.p1log
- name: Test Message Encoding
run: |
cd test
./generate_data${EXT} new_data.p1log
./message_decode${EXT} new_data.p1log
# Run Python unit tests.
test_python:
name: Python Unit Tests
runs-on: ubuntu-latest
defaults:
run:
working-directory: python
steps:
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install Python Requirements
run: |
pip install -r requirements.txt
pip install pytest
- name: Run Unit Tests
run: |
python -m pytest
- name: Build A Python Distribution
run: |
pip install build twine
python -m build
twine check dist/*
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: python_dist
path: python/dist
# Create a release only on a tag (not on a branch push).
release:
name: Create Release
needs: [check_style, build_bazel, build_cmake, test_python]
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Get Python Distribution Artifact
uses: actions/download-artifact@v4
with:
name: python_dist
path: python/dist
- name: Create Release
id: create_release
uses: actions/create-release@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false