diff --git a/.github/workflows/aws_tfhe_fast_tests.yml b/.github/workflows/aws_tfhe_fast_tests.yml index d7bf0b3a9b..59077a4fd3 100644 --- a/.github/workflows/aws_tfhe_fast_tests.yml +++ b/.github/workflows/aws_tfhe_fast_tests.yml @@ -1,4 +1,4 @@ -# Run a small subset of shortint and integer tests to ensure quick feedback. +# Run a small subset of tests to ensure quick feedback. name: Fast AWS Tests on CPU env: @@ -11,6 +11,7 @@ env: SLACK_ICON: https://pbs.twimg.com/profile_images/1274014582265298945/OjBKP9kn_400x400.png SLACK_USERNAME: ${{ secrets.BOT_USERNAME }} SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + IS_PULL_REQUEST: ${{ github.event_name == 'pull_request' }} on: # Allows you to run this workflow manually from the Actions tab as an alternative. @@ -18,8 +19,105 @@ on: pull_request: jobs: + should-run: + runs-on: ubuntu-latest + permissions: + pull-requests: write + outputs: + csprng_test: ${{ env.IS_PULL_REQUEST == 'false' || steps.changed-files.outputs.csprng_any_changed }} + zk_pok_test: ${{ env.IS_PULL_REQUEST == 'false' || steps.changed-files.outputs.zk_pok_any_changed }} + core_crypto_test: ${{ env.IS_PULL_REQUEST == 'false' || + steps.changed-files.outputs.core_crypto_any_changed || + steps.changed-files.outputs.dependencies_any_changed }} + boolean_test: ${{ env.IS_PULL_REQUEST == 'false' || + steps.changed-files.outputs.boolean_any_changed || + steps.changed-files.outputs.dependencies_any_changed }} + shortint_test: ${{ env.IS_PULL_REQUEST == 'false' || + steps.changed-files.outputs.shortint_any_changed || + steps.changed-files.outputs.dependencies_any_changed }} + integer_test: ${{ env.IS_PULL_REQUEST == 'false' || + steps.changed-files.outputs.integer_any_changed || + steps.changed-files.outputs.dependencies_any_changed }} + wasm_test: ${{ env.IS_PULL_REQUEST == 'false' || + steps.changed-files.outputs.wasm_any_changed || + steps.changed-files.outputs.dependencies_any_changed }} + high_level_api_test: ${{ env.IS_PULL_REQUEST == 'false' || + steps.changed-files.outputs.high_level_api_any_changed || + steps.changed-files.outputs.dependencies_any_changed }} + user_docs_test: ${{ env.IS_PULL_REQUEST == 'false' || + steps.changed-files.outputs.user_docs_any_changed || + steps.changed-files.outputs.dependencies_any_changed }} + any_file_changed: ${{ env.IS_PULL_REQUEST == 'false' || steps.aggregated-changes.outputs.any_changed }} + steps: + - name: Checkout tfhe-rs + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 + with: + fetch-depth: 0 + + - name: Check for file changes + id: changed-files + uses: tj-actions/changed-files@cc733854b1f224978ef800d29e4709d5ee2883e4 + with: + since_last_remote_commit: true + files_yaml: | + dependencies: + - tfhe/Cargo.toml + - concrete-csprng/** + - tfhe-zk-pok/** + csprng: + - concrete-csprng/** + zk_pok: + - tfhe-zk-pok/** + core_crypto: + - tfhe/src/core_crypto/** + boolean: + - tfhe/src/core_crypto/** + - tfhe/src/boolean/** + shortint: + - tfhe/src/core_crypto/** + - tfhe/src/shortint/** + integer: + - tfhe/src/core_crypto/** + - tfhe/src/shortint/** + - tfhe/src/integer/** + wasm: + - tfhe/src/** + - tfhe/js_on_wasm_tests/** + - tfhe/web_wasm_parallel_tests/** + - '!tfhe/src/c_api/**' + - '!tfhe/src/boolean/**' + high_level_api: + - tfhe/src/** + - '!tfhe/src/c_api/**' + - '!tfhe/src/boolean/**' + - '!tfhe/src/c_api/**' + - '!tfhe/src/js_on_wasm_api/**' + user_docs: + - tfhe/src/** + - '!tfhe/src/c_api/**' + - 'tfhe/docs/**.md' + - README.md + + - name: Aggregate file changes + id: aggregated-changes + if: ( steps.changed-files.outputs.dependencies_any_changed == 'true' || + steps.changed-files.outputs.csprng_any_changed == 'true' || + steps.changed-files.outputs.zk_pok_any_changed == 'true' || + steps.changed-files.outputs.core_crypto_any_changed == 'true' || + steps.changed-files.outputs.boolean_any_changed == 'true' || + steps.changed-files.outputs.shortint_any_changed == 'true' || + steps.changed-files.outputs.integer_any_changed == 'true' || + steps.changed-files.outputs.wasm_any_changed == 'true' || + steps.changed-files.outputs.high_level_api_any_changed == 'true' || + steps.changed-files.outputs.user_docs_any_changed == 'true') + run: | + echo "any_changed=true" >> "$GITHUB_OUTPUT" + setup-instance: name: Setup instance (fast-tests) + if: github.event_name != 'pull_request' || + needs.should-run.outputs.any_file_changed == 'true' + needs: should-run runs-on: ubuntu-latest outputs: runner-name: ${{ steps.start-instance.outputs.label }} @@ -37,7 +135,9 @@ jobs: fast-tests: name: Fast CPU tests - needs: setup-instance + if: github.event_name != 'pull_request' || + (github.event_name == 'pull_request' && needs.setup-instance.result != 'skipped') + needs: [ should-run, setup-instance ] concurrency: group: ${{ github.workflow }}_${{ github.ref }} cancel-in-progress: true @@ -62,42 +162,53 @@ jobs: sudo apt update && sudo apt -y install git-lfs - name: Run concrete-csprng tests + if: needs.should-run.outputs.csprng_test == 'true' run: | make test_concrete_csprng - name: Run tfhe-zk-pok tests + if: needs.should-run.outputs.zk_pok_test == 'true' run: | make test_zk_pok - name: Run core tests + if: needs.should-run.outputs.core_crypto_test == 'true' run: | AVX512_SUPPORT=ON make test_core_crypto - name: Run boolean tests + if: needs.should-run.outputs.boolean_test == 'true' run: | make test_boolean - name: Run user docs tests + if: needs.should-run.outputs.user_docs_test == 'true' run: | make test_user_doc - name: Run js on wasm API tests + if: needs.should-run.outputs.wasm_test == 'true' run: | make test_nodejs_wasm_api_in_docker - name: Gen Keys if required + if: needs.should-run.outputs.shortint_test == 'true' || + needs.should-run.outputs.integer_test == 'true' run: | make gen_key_cache - name: Run shortint tests + if: needs.should-run.outputs.shortint_test == 'true' run: | BIG_TESTS_INSTANCE=TRUE FAST_TESTS=TRUE make test_shortint_ci - name: Run integer tests + if: needs.should-run.outputs.integer_test == 'true' run: | BIG_TESTS_INSTANCE=TRUE FAST_TESTS=TRUE make test_integer_ci - name: Run high-level API tests + if: needs.should-run.outputs.high_level_api_test == 'true' run: | make test_high_level_api diff --git a/.github/workflows/aws_tfhe_tests.yml b/.github/workflows/aws_tfhe_tests.yml index a4d7c359dc..320c34a84e 100644 --- a/.github/workflows/aws_tfhe_tests.yml +++ b/.github/workflows/aws_tfhe_tests.yml @@ -86,6 +86,8 @@ jobs: high_level_api: - tfhe/src/** - '!tfhe/src/c_api/**' + - '!tfhe/src/boolean/**' + - '!tfhe/src/js_on_wasm_api/**' c_api: - tfhe/src/** examples: