Repository navigation
Add informational arm64 build-and-test workflow - #101
Draft
matt-welch wants to merge 3 commits into
Draft
matt-welch wants to merge 3 commits into
matt-welch wants to merge 3 commits into
Conversation
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
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>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.ymlruns the sameci/build_and_test.shsteps as the x86 workflow onubuntu-24.04-arm, with its own cache keys. The job setscontinue-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.stockis the same SVS build the x86 workflow uses.open-corebuilds SVS with LVQ/LeanVec disabled, because the prebuilt LVQ/LeanVec core thatbuild_svs.shfetches 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.shnow readsSVS_ENABLE_LVQ_LEANVEC, which defaults toON, so existing builds behave as before. When it isOFF, the script passes-DSVS_RUNTIME_ENABLE_LVQ_LEANVEC=OFFand does not passSVS_URL.Both workflows now print
lscpuoutput 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 tobuild-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
Pre-Merge Checklist
Build
makecompletes without errors or warningsmake installcompletes successfullyTests
make installcheck) and TAP tests (test/t/) pass with no failurestest/sql/and/ortest/t/test/modules/: it builds and passes (make -C test/modules/<module> installcheck)Documentation
docs/updated if architecture or usage changedTesting Notes
Nothing has been built or run locally for this change. The two workflow files parse as YAML and
build_svs.shpassesbash -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.