name: ci on: pull_request: branches: [master] # Cancel old PR builds when pushing new commits. concurrency: group: build-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: common: uses: TokTok/ci-tools/.github/workflows/common-ci.yml@master analysis: strategy: matrix: tool: [autotools, clang-tidy, compcert, cppcheck, doxygen, infer, misra, tcc, tokstyle] runs-on: ubuntu-latest steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Docker Build uses: docker/build-push-action@v4 with: file: other/docker/${{ matrix.tool }}/Dockerfile coverage-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Build, test, and upload coverage run: other/docker/coverage/run generate-events: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Run generate_event_c run: | other/event_tooling/run git diff --exit-code cimplefmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Run cimplefmt run: other/docker/cimplefmt/run -u $(find tox* -name "*.[ch]") build-android: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - run: .github/scripts/cmake-android armeabi-v7a - run: .github/scripts/cmake-android arm64-v8a - run: .github/scripts/cmake-android x86 - run: .github/scripts/cmake-android x86_64 build-macos: runs-on: macos-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Build and test run: .github/scripts/cmake-osx build-msvc: strategy: matrix: version: [2019, 2022] runs-on: windows-${{ matrix.version }} env: VCPKG_ROOT: "C:/vcpkg" VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Export GitHub Actions cache environment variables uses: actions/github-script@v6 with: script: | core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); - name: Configure CMake run: cmake --preset windows-default - name: Build run: cmake --build _build -j $([int]$env:NUMBER_OF_PROCESSORS+2) - name: Test run: | cd _build ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:6 --build-config Debug build-windows: strategy: matrix: bits: [32, 64] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Cross compilation run: .github/scripts/cmake-win${{ matrix.bits }} script mypy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Set up Python 3.9 uses: actions/setup-python@v5 with: python-version: 3.9 - name: Install mypy run: pip install mypy - name: Run mypy run: | (find . -name "*.py" -and -not -name "conanfile.py"; grep -lR '^#!.*python') \ | xargs -n1 -P8 mypy --strict