Skip to content

Add informational arm64 build-and-test workflow - #101

Draft
matt-welch wants to merge 3 commits into
mainfrom
ci/arm-build-experiment
Draft

matt-welch wants to merge 3 commits into
mainfrom
ci/arm-build-experiment

Conversation

@matt-welch

Copy link
Copy Markdown
Contributor

Description

This PR adds a separate arm64 workflow to find out whether the extension and the SVS C API build on aarch64. It is an experiment: it is not expected to pass yet, and a failure in it must not turn CI red.

build-and-test-arm.yml runs the same ci/build_and_test.sh steps as the x86 workflow on ubuntu-24.04-arm, with its own cache keys. The job sets continue-on-error: true, so a failing step does not fail the workflow run. The check should not be added to the required status checks. It runs two SVS variants side by side. stock is the same SVS build the x86 workflow uses. open-core builds SVS with LVQ/LeanVec disabled, because the prebuilt LVQ/LeanVec core that build_svs.sh fetches is an x86-64 library and is the likely reason the stock build fails on ARM.

To support the second variant, docs/build_guide/build_svs.sh now reads SVS_ENABLE_LVQ_LEANVEC, which defaults to ON, so existing builds behave as before. When it is OFF, the script passes -DSVS_RUNTIME_ENABLE_LVQ_LEANVEC=OFF and does not pass SVS_URL.

Both workflows now print lscpu output early in the job, so each run records the CPU vendor and model it landed on. This should show whether the hosted x86 runners are Intel or AMD. That is the only change to build-and-test.yml.

Fixing anything the ARM runs turn up is out of scope here and will be follow-up work.

Related Issues

Type of Change

  • Bug fix
  • New feature
  • Refactor / code cleanup
  • Documentation update
  • Test addition or update
  • Build / CI change

Pre-Merge Checklist

Build

  • make completes without errors or warnings
  • make install completes successfully

Tests

  • If this PR introduces no new behavior: existing regression tests (make installcheck) and TAP tests (test/t/) pass with no failures
  • If this PR introduces new behavior: test cases covering it were added to test/sql/ and/or test/t/
  • If this PR adds a standalone unit-test module under test/modules/: it builds and passes (make -C test/modules/<module> installcheck)

Documentation

  • Relevant docs under docs/ updated if architecture or usage changed

Testing Notes

Nothing has been built or run locally for this change. The two workflow files parse as YAML and build_svs.sh passes bash -n, and that is all that has been checked. The first run of the ARM workflow on this PR is the real test, and its results will be added here. Still to confirm on GitHub: that a failing ARM leg leaves the PR mergeable and the workflow run green.

Find out whether the extension and SVS build on aarch64 without
affecting the existing x86 CI result.
 - Add build-and-test-arm.yml, which runs the usual ci/build_and_test.sh
   steps on ubuntu-24.04-arm. The job uses continue-on-error so a
   failure does not fail the workflow run, and it is meant to stay out
   of the required status checks.
 - Run two SVS variants: the stock build, and one with LVQ/LeanVec
   turned off, since the prebuilt LVQ/LeanVec core is an x86-64 library.
 - Add SVS_ENABLE_LVQ_LEANVEC to build_svs.sh. It defaults to ON, so
   existing builds are unchanged. When OFF, the script configures SVS
   without LVQ/LeanVec and does not pass SVS_URL.
 - Print lscpu output in both workflows so each run records the CPU it
   ran on.

Signed-off-by: Matt Welch <matt.welch@intel.com>
@matt-welch
matt-welch requested a review from a team October 21, 2026 16:28
@matt-welch
matt-welch marked this pull request as draft October 21, 2026 16:32
The first arm64 run left one TAP failure (73_primary_slot_catchup_scale.pl)
that could not be diagnosed, because the failure artifact held no TAP
logs and there was no cheap way to rerun a single test.
 - Add workflow_dispatch inputs to build-and-test-arm.yml: svs_variant
   (both, stock or open-core) selects which matrix leg runs, and
   prove_tests passes a list of TAP files to the existing PROVE_TESTS
   support in ci/build_and_test.sh. When prove_tests is set, test-sql
   is skipped. PR and push runs are unchanged.
 - Upload log/ instead of tmp_check/log/. TAP writes regress_log_* and
   the per-node postmaster logs to log/ at the repo root, so the old
   path matched nothing and the artifact contained no TAP logs. Only
   the ARM workflow is changed here.

Signed-off-by: Matt Welch <matt.welch@intel.com>
The previous commit added a job-level if that referenced the matrix
context, which GitHub does not allow there, so the workflow file was
rejected and no CI ran for the push.
 - Remove the job-level if and select the matrix legs in strategy.matrix
   instead, where the inputs context is available. A fromJSON expression
   returns only the stock or open-core leg when the svs_variant dispatch
   input asks for it, and both legs for every other event.
 - actionlint reproduced the original error and passes on the fixed file.

Signed-off-by: Matt Welch <matt.welch@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant