From 6ffde50d249f1d7558e77080ccb2c46d59721428 Mon Sep 17 00:00:00 2001 From: Pawel Czarnecki Date: Thu, 6 Jun 2024 11:47:00 +0200 Subject: [PATCH] CI: Add custom ZSTD module workflow Internal-tag: [#52186] Signed-off-by: Pawel Czarnecki --- .github/workflows/continuous-integration.yml | 5 +- .github/workflows/modules-zstd.yml | 63 ++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/modules-zstd.yml diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 3c24746ef6..126505d810 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -41,4 +41,7 @@ jobs: - name: Bazel Test All (opt) run: | - bazel test -c opt --noshow_progress --test_output=errors -- //xls/... + # Explicitly build the whole XLS excluding rules tagged as 'manual' + bazel build -c opt --noshow_progress --test_output=errors -- //xls/... + # Test everything except ZSTD module, this is done in a separate workflow + bazel test -c opt --noshow_progress --test_output=errors -- //xls/... -//xls/modules/zstd/... diff --git a/.github/workflows/modules-zstd.yml b/.github/workflows/modules-zstd.yml new file mode 100644 index 0000000000..6e1317d249 --- /dev/null +++ b/.github/workflows/modules-zstd.yml @@ -0,0 +1,63 @@ +name: Modules (ZSTD) +on: + # Avoid triggering on pushes to /all/ open PR branches. + push: + branches: + - main + paths: + - 'xls/modules/zstd/**' + pull_request: + branches: + - main + paths: + - 'xls/modules/zstd/**' + # This lets us trigger manually from the UI. + workflow_dispatch: + +jobs: + build: + name: Test ZSTD module (opt) + runs-on: + labels: ubuntu-22.04-64core + timeout-minutes: 600 + continue-on-error: true + steps: + - uses: actions/checkout@v2 + + - name: Restore Nightly Bazel Cache + uses: actions/cache/restore@v4 + with: + path: "~/.cache/bazel" + key: bazel-cache-nightly-${{ runner.os }}-${{ github.sha }} + restore-keys: bazel-cache-nightly-${{ runner.os }}- + + - name: Install dependencies via apt + run: sudo apt-get install python3-distutils python3-dev python-is-python3 libtinfo5 build-essential liblapack-dev libblas-dev gfortran + + - name: Bazel Build Tools (opt) + run: | + bazel build -c opt --test_output=errors -- //xls/dslx:interpreter_main //xls/dslx/ir_convert:ir_converter_main //xls/tools:opt_main //xls/tools:codegen_main + + - name: Build ZSTD Module (opt) + run: | + bazel build -c opt --test_output=errors -- //xls/modules/zstd:all + + - name: Test ZSTD Module (opt) + run: | + bazel test -c opt --test_output=errors -- //xls/modules/zstd:all + + - name: Build ZSTD verilog targets (opt) + run: | + bazel build -c opt -- $(bazel query 'filter(".*_verilog", kind(rule, //xls/modules/zstd/...))') + + - name: Build and run ZSTD IR benchmark rules (opt) + run: | + bazel run -c opt -- $(bazel query 'filter(".*_ir_benchmark", kind(rule, //xls/modules/zstd/...))') + + - name: Build and run synthesis benchmarks of the ZSTD module (opt) + run: | + bazel run -c opt -- $(bazel query 'filter(".*_benchmark_synth", kind(rule, //xls/modules/zstd/...))') + + - name: Build ZSTD place and route targets (opt) + run: | + bazel build -c opt -- $(bazel query 'filter(".*_place_and_route", kind(rule, //xls/modules/zstd/...))')