infra: Fixes to the build infrastructure #1136
Workflow file for this run
This file contains hidden or 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
| name: Code Quality | |
| on: | |
| pull_request: | |
| jobs: | |
| warnings-base: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| # Ensures that if the task on one system fails, other systems (the rest of the matrix) will be | |
| # still executed. | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| # fetch-depth: 0 | |
| # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| repository: ${{ github.event.pull_request.base.repo.full_name || github.repository }} | |
| ref: ${{ github.event.pull_request.base.sha || github.event.pull_request.base_ref || github.sha }} | |
| - uses: ./.github/workflows/actions/setup | |
| with: | |
| os: ${{ matrix.os }} | |
| - uses: ./.github/workflows/actions/compile | |
| with: | |
| build-log-output-file: "warnings-base" | |
| warnings-new: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| # fetch-depth: 0 | |
| # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: ./.github/workflows/actions/setup | |
| with: | |
| os: ${{ matrix.os }} | |
| - uses: ./.github/workflows/actions/compile | |
| with: | |
| build-log-output-file: "warnings-new" | |
| run-tests: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| # fetch-depth: 0 | |
| # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: ./.github/workflows/actions/setup | |
| with: | |
| os: ${{ matrix.os }} | |
| - uses: ./.github/workflows/actions/compile | |
| with: | |
| build-log-output-file: "warnings-new" | |
| - name: Test the library | |
| run: make test | |
| run-tests-python: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| python-version: ["3.13"] | |
| install-type: ["src", "tarball"] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: ./.github/workflows/actions/setup | |
| with: | |
| os: ${{ matrix.os }} | |
| - name: Set up Python and its dependencies ${{ inputs.python-version }} | |
| uses: ./.github/workflows/actions/setup-python | |
| with: | |
| os: ${{ matrix.os }} | |
| python-version: ${{ matrix.python-version }} | |
| - name: Write the released version to VERSION file | |
| shell: bash | |
| run: | | |
| echo "v0.0.0-dev.1" > VERSION | |
| echo "v0.0.0-dev.1" > bindings/python/VERSION | |
| - name: Compile the Python bindings from the source | |
| uses: ./.github/workflows/actions/compile-python-src | |
| - name: Compile the Python bindings from the tarball | |
| if: matrix.install-type == 'tarball' | |
| uses: ./.github/workflows/actions/compile-python-tarball | |
| - name: Test the Python bindings | |
| uses: ./.github/workflows/actions/test-python | |
| # run-test-performance-base: | |
| # runs-on: ${{ matrix.os }} | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # os: [ubuntu-latest, macos-latest] | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # with: | |
| # # fetch-depth: 0 | |
| # # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| # repository: ${{ github.event.pull_request.base.repo.full_name || github.repository }} | |
| # ref: ${{ github.event.pull_request.base.sha || github.event.pull_request.base_ref || github.sha }} | |
| # - uses: ./.github/workflows/actions/setup | |
| # with: | |
| # os: ${{ matrix.os }} | |
| # - uses: ./.github/workflows/actions/compile | |
| # - name: Set up Python | |
| # uses: actions/setup-python@v6 | |
| # with: | |
| # python-version: 3.13 | |
| # cache: "pip" | |
| # - name: Install Python Dependencies | |
| # shell: sh | |
| # run: | | |
| # python -m pip install --upgrade pip | |
| # pip install ./tests-integration/ | |
| # - name: Test the library | |
| # run: make test-performance | |
| # - name: Cache performance results | |
| # uses: actions/cache@v5 | |
| # with: | |
| # path: | | |
| # ./tests-integration/results/corr-single-param-jobs.csv | |
| # ./tests-integration/results/corr-double-param-jobs.csv | |
| # key: performance-tests-baseline-${{ runner.os }}-${{ github.sha }} | |
| # run-test-performance: | |
| # runs-on: ${{ matrix.os }} | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # os: [ubuntu-latest, macos-latest] | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # with: | |
| # # fetch-depth: 0 | |
| # # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| # repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| # ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| # - uses: ./.github/workflows/actions/setup | |
| # with: | |
| # os: ${{ matrix.os }} | |
| # - uses: ./.github/workflows/actions/compile | |
| # - name: Set up Python | |
| # uses: actions/setup-python@v4 | |
| # with: | |
| # python-version: 3.13 | |
| # cache: "pip" | |
| # - name: Install Python Dependencies | |
| # shell: sh | |
| # run: | | |
| # python -m pip install --upgrade pip | |
| # pip install ./tests-integration/ | |
| # - name: Test the library | |
| # run: make test-performance | |
| # - name: Cache performance results | |
| # uses: actions/cache@v5 | |
| # with: | |
| # path: | | |
| # ./tests-integration/results/corr-single-param-jobs.csv | |
| # ./tests-integration/results/corr-double-param-jobs.csv | |
| # key: performance-tests-target-${{ runner.os }}-${{ github.sha }} | |
| # compare-performance: | |
| # runs-on: ${{ matrix.os }} | |
| # strategy: | |
| # fail-fast: false | |
| # matrix: | |
| # os: [ubuntu-latest, macos-latest] | |
| # needs: [run-test-performance, run-test-performance-base] | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # with: | |
| # # fetch-depth: 0 | |
| # # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| # repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| # ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| # - name: Set up Python | |
| # uses: actions/setup-python@v6 | |
| # with: | |
| # python-version: 3.13 | |
| # cache: "pip" | |
| # - name: Install Python Dependencies | |
| # shell: sh | |
| # run: | | |
| # python -m pip install --upgrade pip | |
| # pip install tabulate pandas | |
| # - name: Restore target profiles | |
| # uses: actions/cache/restore@v5 | |
| # with: | |
| # path: | | |
| # ./tests-integration/results/corr-single-param-jobs.csv | |
| # ./tests-integration/results/corr-double-param-jobs.csv | |
| # key: performance-tests-target-${{ runner.os }}-${{ github.sha }} | |
| # - run: | | |
| # mv ./tests-integration/results/corr-single-param-jobs.csv single-param-target.csv | |
| # mv ./tests-integration/results/corr-double-param-jobs.csv double-param-target.csv | |
| # - name: Restore baseline profiles | |
| # uses: actions/cache/restore@v5 | |
| # with: | |
| # path: | | |
| # ./tests-integration/results/corr-single-param-jobs.csv | |
| # ./tests-integration/results/corr-double-param-jobs.csv | |
| # key: performance-tests-baseline-${{ runner.os }}-${{ github.sha }} | |
| # - run: | | |
| # mv ./tests-integration/results/corr-single-param-jobs.csv single-param-baseline.csv | |
| # mv ./tests-integration/results/corr-double-param-jobs.csv double-param-baseline.csv | |
| # - name: LOOK HERE for Comparison of operations accepting single automaton as parameters | |
| # run: python3 tests-integration/scripts/compare_profiles.py single-param-target.csv single-param-baseline.csv | |
| # - name: LOOK HERE for Comparison of operations accepting two automata as parameters | |
| # run: python3 tests-integration/scripts/compare_profiles.py double-param-target.csv double-param-baseline.csv | |
| compare-versions: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| needs: [warnings-base, warnings-new] | |
| steps: | |
| - name: Restore new cache | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: ./build_log | |
| key: build-log-warnings-new-${{ runner.os }}-${{ github.sha }} | |
| - run: mv build_log new_warnings | |
| - name: Restore base cache | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: ./build_log | |
| key: build-log-warnings-base-${{ runner.os }}-${{ github.sha }} | |
| - run: mv build_log base_warnings | |
| - name: Print base warnings | |
| run: cat base_warnings | |
| - name: Print new warnings | |
| run: cat new_warnings | |
| - name: Create comparison diff file | |
| run: | | |
| diff base_warnings new_warnings | grep "^> *" | sed "s/^> //g" > comparison | |
| cat comparison | |
| - name: Count number of warnings | |
| run: | | |
| number_of_warnings=`cat comparison | grep "warning:" | wc -l` | |
| echo $number_of_warnings | |
| if [ $number_of_warnings -gt 0 ]; then | |
| exit 1 | |
| fi | |
| code-coverage: | |
| runs-on: ubuntu-latest | |
| needs: run-tests | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| # fetch-depth: 0 | |
| # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: ./.github/workflows/actions/setup | |
| - name: Build library for coverage | |
| run: make coverage | |
| - name: Test the library | |
| run: make test | |
| - name: Upload coverage to codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| gcov: true | |
| format-check: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: cachix/install-nix-action@v31 | |
| with: | |
| nix_path: nixpkgs=channel:nixos-unstable | |
| - uses: actions/checkout@v6 | |
| with: | |
| # fetch-depth: 0 | |
| # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: ./.github/workflows/actions/setup | |
| - name: Check formatting using treefmt through Nix | |
| run: | | |
| nix fmt | |
| if [ -n "$(git status --porcelain)" ]; then | |
| echo "ERROR: Code is not properly formatted. Please run 'nix fmt' locally and commit the changes:" | |
| git diff | |
| exit 1 | |
| else | |
| echo "Code is properly formatted." | |
| fi | |
| build-docs: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| # fetch-depth: 0 | |
| # If PR, checkout the PR's repo (needed for PRs coming from forks). | |
| repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
| ref: ${{ github.event.pull_request.head.sha || github.sha }} | |
| - uses: ./.github/workflows/actions/docs | |
| with: | |
| os: ${{ matrix.os }} |