CI maintinence and more clang-tidy checks #208
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts | |
# (see: https://github.com/epics-base/ci-scripts) | |
# This is YAML - indentation levels are crucial | |
# Set the 'name:' properties to values that work for you (MYMODULE) | |
name: EK9000 | |
# Trigger on pushes and PRs to any branch, but ignore docs | |
on: | |
push: | |
paths-ignore: | |
- 'docs/*' | |
- '**/*.html' | |
- '**/*.md' | |
pull_request: | |
env: | |
SETUP_PATH: .ci-local:.ci | |
# For the sequencer on Linux/Windows/MacOS | |
APT: re2c | |
CHOCO: re2c | |
BREW: re2c | |
# This is where we define our dependencies in CI | |
SET: deps | |
jobs: | |
format: | |
name: clang-format formatting check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: clang-format check | |
uses: jidicula/[email protected] | |
with: | |
clang-format-version: '14' | |
check-path: 'ek9000App' | |
exclude-regex: 'terminals.h' | |
scripts-check: | |
# Run basic checks on the Python scripts bundled here. | |
# Checks the terminals.json against the schema as well. | |
name: Scripts Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
cache: 'pip' | |
- name: Install Packages | |
run: python3 -m pip install -r ek9000App/src/scripts/requirements.txt | |
- name: Check terminals.json and templates | |
run: python3 ek9000App/src/scripts/ci_check.py | |
build-base: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
# Set environment variables from matrix parameters | |
env: | |
CMP: ${{ matrix.cmp }} | |
BCFG: ${{ matrix.configuration }} | |
WINE: ${{ matrix.wine }} | |
RTEMS: ${{ matrix.rtems }} | |
RTEMS_TARGET: ${{ matrix.rtems_target }} | |
EXTRA: ${{ matrix.extra }} | |
TEST: ${{ matrix.test }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# Job names also name artifacts, character limitations apply | |
# Ubuntu 22.04: | |
# clang, clang-13, clang-14, clang-15 (clang=clang-14) | |
# gcc, gcc-9, gcc-10, gcc-12, gcc-13 (gcc=gcc-11) | |
include: | |
- os: ubuntu-22.04 | |
cmp: gcc | |
configuration: default | |
wine: "64" | |
name: "Ub-22 gcc-11 + MinGW" | |
- os: ubuntu-22.04 | |
cmp: gcc | |
configuration: static | |
extra: "CMD_CXXFLAGS=-std=c++14" | |
name: "clang-tidy checks" | |
clang-tidy: true | |
- os: ubuntu-22.04 | |
cmp: gcc | |
configuration: static | |
extra: "CMD_CXXFLAGS=-std=c++14" | |
name: "Ub-22 gcc-11 C++14, static" | |
- os: ubuntu-22.04 | |
cmp: gcc | |
configuration: static | |
extra: "CMD_CXXFLAGS=-std=c++03" | |
name: "Ub-22 gcc-11 C++03, static" | |
- os: ubuntu-22.04 | |
cmp: clang | |
configuration: default | |
extra: "CMD_CXXFLAGS=-std=c++14" | |
name: "Ub-22 clang-14 C++14" | |
- os: ubuntu-22.04 | |
cmp: gcc | |
configuration: default | |
rtems: "5" | |
rtems_target: RTEMS-beatnik | |
test: NO | |
name: "Ub-22 gcc-11 + RT-5.1 beatnik" | |
- os: ubuntu-22.04 | |
cmp: clang | |
configuration: default | |
extra: "CMD_CXXFLAGS=-std=c++03" | |
name: "Ub-22 clang-14 C++03" | |
- os: macos-latest | |
cmp: clang | |
configuration: default | |
name: "MacOS clang-12" | |
- os: windows-2019 | |
cmp: gcc | |
configuration: default | |
name: "Win2019 MinGW" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Automatic core dumper analysis | |
uses: mdavidsaver/ci-core-dumper@master | |
# Install dependencies. Qemu for RTEMS, mingw GCC for Windows cross builds and bear to generate compile_commands.json for clang-tidy | |
- name: "apt-get install" | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb bear clang-tidy | |
if: runner.os == 'Linux' | |
# Install required cross toolchain for RTEMS | |
- name: "apt-get install ${{ matrix.cmp }}" | |
run: | | |
sudo apt-get -y install software-properties-common | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get -y install ${{ matrix.cmp }} | |
if: matrix.utoolchain | |
- name: Prepare and compile dependencies | |
run: python .ci/cue.py prepare | |
- name: Build main module | |
run: python .ci/cue.py build | |
# Run clang-tidy on our code. To do this, we need compile_commands.json, which we generate using 'bear' | |
# To get a complete compile_commands.json, we need to re-run the entire compile with bear. For now, we'll only do this on Linux native builds. | |
- name: Run clang-tidy | |
run: | | |
python3 -m pip install -r requirements.txt | |
make clean | |
bear make -j$(nproc) | |
python3 clang-tidy.py | |
if: matrix.clang-tidy | |
- name: Run main module tests | |
run: python .ci/cue.py test | |
# Resulting test files will be uploaded and attached to this run | |
- name: Upload tapfiles Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: tapfiles ${{ matrix.name }} | |
path: '**/O.*/*.tap' | |
- name: Collect and show test results | |
run: python .ci/cue.py test-results |