Skip to content

[CQT-190] [Infra] Add clang-tidy #84

[CQT-190] [Infra] Add clang-tidy

[CQT-190] [Infra] Add clang-tidy #84

Workflow file for this run

name: Test
on:
push:
branches:
- develop
- master
pull_request:
jobs:
cpp-linux-x64:
name: "C++ tests (gcc-clang/Linux/x64)"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
build_type:
- Debug
- Release
compiler:
- clang
- gcc
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/cpp-tests
with:
build_type: ${{ matrix.build_type }}
conan_profile_host: conan/profiles/tests-${{ matrix.build_type }}-${{ matrix.compiler }}-linux-x64
shell: bash
cpp-linux-arm64:
name: "C++ tests (gcc/Linux/ARM64)"
runs-on: [self-hosted, ARM64, Linux]
container: python:3.11
# Run only when merging to develop
# (until we have a GitHub-hosted runner for Linux/ARM64)
if: github.ref == 'refs/heads/develop'
strategy:
fail-fast: false
matrix:
build_type:
- Debug
- Release
steps:
- name: Checkout
uses: actions/checkout@v4
# We are having problems when using zulu-opendjk Conan package on an armv8 architecture.
# zulu-openjdk provides the Java JRE required by the ANTLR generator.
# So, for the time being, we are installing Java manually for this platform
- name: Install dependencies
run: |
apt-get update
apt-get install -y default-jre pipx
# Add Conan to path (even before it is installed)
- name: Add Conan to path
run: |
echo "${HOME}/.local/bin" >> $GITHUB_PATH
- uses: ./.github/actions/cpp-tests
with:
build_type: ${{ matrix.build_type }}
conan_profile_host: conan/profiles/tests-${{ matrix.build_type }}-gcc-linux-arm64
shell: bash
cpp-macos-x64:
name: "C++ tests (clang/MacOS/x64)"
runs-on: macos-13 # x64
strategy:
fail-fast: false
matrix:
build_type:
- Debug
- Release
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/cpp-tests
with:
build_type: ${{ matrix.build_type }}
conan_profile_host: conan/profiles/tests-${{ matrix.build_type }}-apple_clang-macos-x64
shell: bash
cpp-macos-arm64:
name: "C++ tests (clang/macos/ARM64)"
runs-on: macos-14 # arm64
strategy:
fail-fast: false
matrix:
build_type:
- Debug
- Release
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/cpp-tests
with:
build_type: ${{ matrix.build_type }}
conan_profile_host: conan/profiles/tests-${{ matrix.build_type }}-apple_clang-macos-arm64
shell: bash
cpp-windows-x64:
name: "C++ tests (msvc/Windows/x64)"
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
build_type:
- Debug
- Release
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/cpp-tests
with:
build_type: ${{ matrix.build_type }}
conan_profile_host: conan/profiles/tests-${{ matrix.build_type }}-msvc-windows-x64
conan_profile_build: conan/profiles/tests-${{ matrix.build_type }}-msvc-windows-x64
shell: bash
cpp-shared:
name: "C++ tests (shared)"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
build_type:
- Debug
- Release
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/cpp-tests
with:
build_type: ${{ matrix.build_type }}
conan_profile_host: conan/profiles/${{ matrix.build_type }}-gcc-linux-x64-shared
shell: bash
ts-emscripten-wasm:
name: "TS tests (clang/emscripten/wasm)"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
build_type:
- Release
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install node
uses: actions/setup-node@v4
with:
node-version: 16.20.2
- name: Install conan
run: |
pipx install conan
shell: bash
- name: Get latest CMake
uses: lukka/get-cmake@latest
# We clean the Conan cache as a preventive measure for our runs in self-hosted runners
# Self-hosted runners use containers that cache Conan packages from previous runs,
# and that can cause different type of problems
- name: Configure and build
run: |
conan profile detect --force
conan remove -c "*/*"
conan build . -pr=conan/profiles/release-clang-emscripten-wasm -pr:b=conan/profiles/release -b missing
shell: bash
- name: Rename cqasm_emscripten.js to cqasm_emscripten.mjs
working-directory: build/Release/emscripten
run: |
mv cqasm_emscripten.js cqasm_emscripten.mjs
shell: bash
- name: Install deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Test
working-directory: emscripten
run: |
deno run -A test_libqasm.ts
shell: bash
python-linux-x64:
name: "Python tests (Linux/x64)"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install SWIG
run: |
sudo apt-get install -y swig
shell: bash
- uses: ./.github/actions/python-tests
with:
shell: bash
python-macos-x64:
name: "Python tests (macOS/x64)"
runs-on: macos-13
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install SWIG
run: |
brew install swig
shell: bash
- uses: ./.github/actions/python-tests
with:
shell: bash
python-macos-arm64:
name: "Python tests (macOS/arm64)"
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install swig
shell: bash
- uses: ./.github/actions/python-tests
with:
shell: bash
python-windows-x64:
name: "Python tests (Windows/x64)"
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/python-tests
with:
shell: bash
docker:
name: Docker
runs-on: ubuntu-latest
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build without pushing
uses: docker/build-push-action@v5
with:
push: false
tags: libqasm:latest
complete:
# see https://github.community/t/status-check-for-a-matrix-jobs/127354/7
name: Report status
needs:
- cpp-linux-x64
- cpp-linux-arm64
- cpp-macos-x64
- cpp-macos-arm64
- cpp-windows-x64
- cpp-shared
- ts-emscripten-wasm
- python-linux-x64
- python-macos-x64
- python-macos-arm64
- python-windows-x64
- docker
if: ${{ always() }}
runs-on: ubuntu-latest
steps:
- name: Check all job status
# see https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#needs-context
# see https://stackoverflow.com/a/67532120/4907315
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
|| (
github.ref != 'refs/heads/develop'
&& contains(needs.*.result, 'skipped')
&& !contains(needs.cpp-linux-arm64.result, 'skipped')
)
||
(
github.ref == 'refs/heads/develop'
&& contains(needs.*.result, 'skipped')
)
}}
run: exit 1