name: Continuous Integration on: push: branches: - master paths: ['.github/workflows/**', '**/Makefile', '**/*.c', '**/*.h', '**/*.py'] pull_request: types: [opened, synchronize, reopened] paths: ['**/Makefile', '**/*.c', '**/*.h', '**/*.py'] # for manual triggering workflow_dispatch: env: BRANCH_NAME: ${{ github.head_ref || github.ref_name }} jobs: # check basic builds to avoid breaking changes ubuntu-focal-make: runs-on: ubuntu-latest steps: - name: Clone id: checkout uses: actions/checkout@v3 - name: Dependencies id: depends run: | sudo apt-get update sudo apt-get install build-essential -y - name: Set up Python 3.10 uses: actions/setup-python@v3 with: python-version: "3.10" - name: Pip setup run: | python -m pip install --upgrade pip if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Build id: make_build run: | make - name: Build runfast id: make_build_runfast run: | make runfast - name: Test with pytest run: | pytest macOS-latest-make: runs-on: macos-latest steps: - name: Clone id: checkout uses: actions/checkout@v3 - name: Dependencies id: depends continue-on-error: true run: | brew update - name: Set up Python 3.10 uses: actions/setup-python@v3 with: python-version: "3.10" - name: Pip setup run: | python -m pip install --upgrade pip if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Build clang id: make_build_clang run: | make run CC=clang - name: Build id: make_build run: | make - name: Build runfast id: make_build_runfast run: | make runfast - name: Test with pytest run: pytest windows-latest-make: runs-on: windows-latest strategy: fail-fast: false #necessary, otherwise the matrix breaks matrix: arch: - amd64 - amd64_x86 - amd64_arm64 steps: - name: Clone id: checkout uses: actions/checkout@v3 - name: Setup MSBuild uses: microsoft/setup-msbuild@v1 - name: Setup MSVC ${{ matrix.arch }} uses: ilammy/msvc-dev-cmd@v1 with: arch: ${{ matrix.arch }} - name: Set up Python 3.10 if: matrix.arch != 'amd64_arm64' uses: actions/setup-python@v3 with: python-version: "3.10" - name: Pip setup if: matrix.arch != 'amd64_arm64' run: | python -m pip install --upgrade pip if (Test-Path requirements.txt) { pip install -r requirements.txt } - name: Build ${{ matrix.arch }} id: build_msvc run: | .\build_msvc.bat #cross-comiled, cannot be run on host - name: Test with pytest if: matrix.arch != 'amd64_arm64' run: pytest windows-latest-mingw: runs-on: windows-latest defaults: run: shell: msys2 {0} strategy: matrix: include: - { sys: mingw64, env: x86_64 } steps: - name: Checkout id: checkout uses: actions/checkout@v3 - uses: msys2/setup-msys2@v2 id: setup-msys2 with: msystem: ${{ matrix.sys }} install: mingw-w64-${{matrix.env}}-gcc make - name: Build ${{ matrix.sys }} ${{ matrix.env }} id: build_mingw run: | make win64 - name: Set up Python 3.10 uses: actions/setup-python@v3 with: python-version: "3.10" - name: Pip setup shell: powershell run: | python -m pip install --upgrade pip if (Test-Path requirements.txt) { pip install -r requirements.txt } - name: Test with pytest shell: powershell run: pytest