refactor(lock_rules): small improvements (#12534) #300
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: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| workflow_dispatch: | |
| merge_group: | |
| concurrency: | |
| group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
| permissions: | |
| contents: read | |
| env: | |
| EXTRA_NIX_CONFIG: | | |
| extra-substituters = https://anmonteiro.nix-cache.workers.dev | |
| extra-trusted-public-keys = ocaml.nix-cache.com-1:/xI2h2+56rwFfKyyFVbkJSeGqSIYMC/Je+7XXqGKDIY= | |
| jobs: | |
| # | |
| # Stage 1 | |
| # | |
| nix-build: | |
| name: Nix Build | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - macos-latest | |
| - ubuntu-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 2G | |
| gc-max-store-size-macos: 2G | |
| - run: nix build | |
| nix-test: | |
| name: Nix Tests | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 10G | |
| - run: nix develop -i -c make test | |
| fmt: | |
| name: Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 2G | |
| - run: nix develop .#fmt -c make fmt | |
| doc: | |
| name: Documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 2G | |
| - run: nix develop .#doc -c make doc | |
| env: | |
| LC_ALL: C | |
| bootstrap: | |
| name: Bootstrap | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 2G | |
| - run: nix develop -i .#bootstrap-check -c make test-bootstrap-script | |
| nix-build-4-08: | |
| name: Nix Build 4.08 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 2G | |
| - run: nix develop -i .#bootstrap-check_4_08 -c make release | |
| # | |
| # Stage 2 | |
| # | |
| build: | |
| name: Build | |
| # we only start building our other jobs, once our main tests have passed | |
| needs: nix-test | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Please keep the list in sync with the minimal version of OCaml in | |
| # dune-project, dune.opam.template and bootstrap.ml | |
| # | |
| # We don't run tests on all versions of the Windows environment and on | |
| # 4.02.x and 4.07.x in other environments | |
| include: | |
| # OCaml trunk: | |
| - ocaml-compiler: ocaml-variants.5.4.0+trunk | |
| os: ubuntu-latest | |
| # OCaml 5: | |
| ## ubuntu (x86) | |
| - ocaml-compiler: 5.3.x | |
| os: ubuntu-latest | |
| run_tests: true | |
| ## macos (Apple Silicon) | |
| - ocaml-compiler: 5.3.x | |
| os: macos-latest | |
| run_tests: true | |
| ## macos (x86) | |
| - ocaml-compiler: 5.3.x | |
| os: macos-15-intel | |
| ## MSVC | |
| - ocaml-compiler: ocaml-compiler.5.3.0,system-msvc | |
| os: windows-latest | |
| run_tests: true | |
| ## mingw | |
| - ocaml-compiler: ocaml-base-compiler.5.3.0,system-mingw | |
| os: windows-latest | |
| run_tests: true | |
| # OCaml 4: | |
| ## ubuntu (x86) | |
| - ocaml-compiler: 4.14.x | |
| os: ubuntu-latest | |
| ## ubuntu (x86-32) | |
| - ocaml-compiler: "ocaml-variants.4.14.2+options,ocaml-option-32bit" | |
| os: ubuntu-latest | |
| apt_update: true | |
| ## macos (Apple Silicon) | |
| - ocaml-compiler: 4.14.x | |
| os: macos-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| # The 32 bit gcc/g++ packages are by default out-of-date so we need to | |
| # manually update our package listing. | |
| - name: Update apt package listing | |
| if: ${{ matrix.apt_update == true }} | |
| run: sudo apt update | |
| - name: Use OCaml ${{ matrix.ocaml-compiler }} | |
| uses: ocaml/setup-ocaml@v3 | |
| with: | |
| ocaml-compiler: ${{ matrix.ocaml-compiler }} | |
| # Install ocamlfind-secondary and ocaml-secondary-compiler, if needed | |
| - run: | | |
| opam pin -n . --with-version=3.20 | |
| opam install ./dune.opam --deps-only | |
| - name: Install system deps on macOS | |
| run: brew install coreutils pkg-config file | |
| if: ${{ matrix.os == 'macos-latest' }} | |
| # dune doesn't have any additional dependencies so we can build it right | |
| # away this makes it possible to see build errors as soon as possible | |
| - run: opam exec -- make release | |
| - name: Install deps | |
| # CR-soon Alizter: Lwt 5.9.2 breaks on msvc so we pin it here. Remove | |
| # this when https://github.com/ocsigen/lwt/issues/1071 is fixed. | |
| run: | | |
| opam pin add lwt 5.9.1 --no-action | |
| opam install . --deps-only --with-test | |
| opam exec -- make dev-deps | |
| if: ${{ matrix.run_tests }} | |
| - name: Run test suite on Unix | |
| run: opam exec -- make test | |
| if: ${{ matrix.os != 'windows-latest' && matrix.run_tests }} | |
| - name: Run test suite on Win32 | |
| run: opam exec -- make test-windows | |
| if: ${{ matrix.os == 'windows-latest' && matrix.run_tests }} | |
| # We never build configurator | |
| - name: Build configurator | |
| run: opam install ./dune-configurator.opam | |
| if: ${{ matrix.configurator == true }} | |
| coq: | |
| name: Coq 8.16.1 | |
| needs: nix-build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 5G | |
| - run: nix develop .#coq -c make test-coq | |
| env: | |
| # We disable the Dune cache when running the tests | |
| DUNE_CACHE: disabled | |
| wasm: | |
| name: Wasm_of_ocaml | |
| needs: nix-build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Install Node | |
| uses: actions/setup-node@v5 | |
| with: | |
| node-version: latest | |
| - name: Set-up Binaryen | |
| uses: Aandreba/[email protected] | |
| with: | |
| token: ${{ github.token }} | |
| - name: Checkout Code | |
| uses: actions/checkout@v5 | |
| - name: Use OCaml 5.2.x | |
| uses: ocaml/setup-ocaml@v3 | |
| with: | |
| ocaml-compiler: 5.2.x | |
| - name: Install faked binaryen-bin package | |
| # The binaries have already been downloaded | |
| run: opam install --fake binaryen-bin | |
| - name: Install Wasm_of_ocaml | |
| run: opam install "wasm_of_ocaml-compiler>=6.1" re spawn uutf | |
| - name: Set Git User | |
| run: | | |
| git config --global user.name github-actions[bot] | |
| git config --global user.email github-actions[bot]@users.noreply.github.com | |
| - name: Run Tests | |
| run: opam exec -- make test-wasm | |
| cygwin: | |
| name: Cygwin Build | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Setup Cygwin | |
| uses: cygwin/cygwin-install-action@v6 | |
| with: | |
| packages: ocaml gcc-core make | |
| - name: Bootstrap Dune | |
| run: make bootstrap | |
| ## In order to build dune locally we need to have the re library | |
| ## available. Even if we do, it is likely that our vendored blake3 rules | |
| ## will miss cygwin support. So for now, we don't enable the rest. | |
| # - name: Build Dune | |
| # run: _boot/dune build dune.install | |
| create-local-opam-switch: | |
| name: Create local opam switch | |
| needs: nix-build | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| os: | |
| - macos-latest | |
| - ubuntu-latest | |
| ocaml-compiler: | |
| - 5 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Use OCaml ${{ matrix.ocaml-compiler }} | |
| uses: ocaml/setup-ocaml@v3 | |
| with: | |
| ocaml-compiler: ${{ matrix.ocaml-compiler }} | |
| - uses: actions/checkout@v5 | |
| - name: Create an empty switch | |
| run: opam switch create . --empty | |
| - name: Pin local packages to local dependencies | |
| run: opam pin add . -n --with-version=dev | |
| - name: Install external dependencies | |
| run: opam install . | |
| build-microbench: | |
| name: Build microbenchmarks | |
| needs: nix-build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: nixbuild/nix-quick-install-action@v34 | |
| with: | |
| nix_conf: ${{ env.EXTRA_NIX_CONFIG }} | |
| - uses: nix-community/cache-nix-action@v6 | |
| with: | |
| primary-key: | | |
| nix-${{ runner.os }}-${{ github.job }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} | |
| restore-prefixes-first-match: nix-${{ runner.os }}-${{ github.job }}- | |
| gc-max-store-size-linux: 5G | |
| - run: nix develop .#microbench -c make dune build bench/micro |