test.yml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513
  1. name: 🔬 Test
  2. run-name: 🔬 Test ${{ github.sha }}
  3. #on: workflow_call
  4. on:
  5. push:
  6. branches:
  7. - master
  8. - manticore-*
  9. paths-ignore:
  10. - 'manual/**'
  11. - '!manual/References.md'
  12. - '.translation-cache/**'
  13. - 'cmake/GetGALERA.cmake'
  14. - 'galera_packaging/**'
  15. pull_request:
  16. branches: [ master, update-buddy-version ]
  17. paths-ignore:
  18. - 'manual/**'
  19. - '!manual/References.md'
  20. - '.translation-cache/**'
  21. - 'cmake/GetGALERA.cmake'
  22. - 'galera_packaging/**'
  23. types: [opened, synchronize, reopened, labeled, unlabeled]
  24. # cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
  25. concurrency:
  26. group: test_${{ github.ref }}
  27. cancel-in-progress: true
  28. # Note: Many build jobs skip execution for PRs targeting 'update-buddy-version' branch
  29. # as these PRs only update dependency versions and don't require full builds/tests
  30. jobs:
  31. meta:
  32. name: Meta
  33. runs-on: ubuntu-22.04
  34. outputs:
  35. columnar_locator: ${{ steps.set_locator.outputs.columnar_locator }}
  36. branch_name: ${{ steps.check_branch.outputs.branch_name }}
  37. branch_tag: ${{ steps.sanitize_branch.outputs.branch_tag }}
  38. source_hash: ${{ steps.source_hash.outputs.source_hash }}
  39. image_exists: ${{ steps.image_check.outputs.image_exists }}
  40. image_tag: ${{ steps.image_check.outputs.image_tag }}
  41. image_commit: ${{ steps.image_check.outputs.image_commit }}
  42. image_source_hash: ${{ steps.image_check.outputs.image_source_hash }}
  43. source: ${{ steps.detect.outputs.source }}
  44. test: ${{ steps.detect.outputs.test }}
  45. clt: ${{ steps.detect.outputs.clt }}
  46. changes_detected: ${{ steps.calc.outputs.changes_detected }} # any relevant change (source/test/clt)
  47. skip_builds: ${{ steps.calc.outputs.skip_builds }} # only CLT tests changed and cached test-kit image exists
  48. run_builds: ${{ steps.calc.outputs.run_builds }} # build/ubertest jobs
  49. run_image_build: ${{ steps.calc.outputs.run_image_build }} # build test-kit image
  50. run_clt: ${{ steps.calc.outputs.run_clt }} # run CLT workflow
  51. run_image_push: ${{ steps.calc.outputs.run_image_push }} # push test-kit image tags
  52. steps:
  53. - uses: actions/checkout@v4
  54. with:
  55. fetch-depth: 0
  56. - name: Commit info
  57. run: |
  58. echo "# Automated Tests of commit ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
  59. echo "* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})" >> $GITHUB_STEP_SUMMARY
  60. echo "* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})" >> $GITHUB_STEP_SUMMARY
  61. echo "* Ref: ${{ github.ref_type }} \"${{ github.ref_name }}\"" >> $GITHUB_STEP_SUMMARY
  62. echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY
  63. - name: Check if branch exists in manticoresoftware/columnar
  64. id: check_branch
  65. run: |
  66. # Extract the actual branch name for pull requests
  67. if [[ "${{ github.event_name }}" == "pull_request" ]]; then
  68. BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
  69. else
  70. BRANCH_NAME="${{ github.ref_name }}"
  71. fi
  72. HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://api.github.com/repos/manticoresoftware/columnar/branches/$BRANCH_NAME)
  73. if [ "$HTTP_STATUS" -eq "200" ]; then
  74. echo "branch_exists=true" >> $GITHUB_OUTPUT
  75. echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
  76. else
  77. echo "branch_exists=false" >> $GITHUB_OUTPUT
  78. echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
  79. fi
  80. - name: Sanitize branch name for tags
  81. id: sanitize_branch
  82. run: |
  83. sanitize_tag() {
  84. local name=$1
  85. name=$(echo "$name" | tr '/' '_')
  86. name=$(echo "$name" | sed 's/[^a-zA-Z0-9_.-]//g')
  87. echo "$name"
  88. }
  89. branch_name="${{ steps.check_branch.outputs.branch_name }}"
  90. branch_tag=$(sanitize_tag "$branch_name")
  91. echo "branch_tag=$branch_tag" >> $GITHUB_OUTPUT
  92. - name: Calculate source hash
  93. id: source_hash
  94. run: |
  95. set -euo pipefail
  96. if [[ "${{ steps.check_branch.outputs.branch_exists }}" == "true" ]]; then
  97. git clone --depth 1 --branch "${{ steps.check_branch.outputs.branch_name }}" https://github.com/manticoresoftware/columnar.git columnar
  98. rm -rf columnar/.git
  99. fi
  100. HASH=$(find . -type f ! -path "./test/clt-tests/*" ! -path "./columnar/test/clt-tests/*" ! -path "./.git/*" -print0 | sort -z | xargs -0 md5sum | md5sum | awk '{print $1}')
  101. echo "source_hash=$HASH" >> $GITHUB_OUTPUT
  102. - name: Check for existing test kit image
  103. id: image_check
  104. env:
  105. REPO_OWNER: ${{ github.repository_owner }}
  106. run: |
  107. set -euo pipefail
  108. TAG="test-kit-${{ steps.sanitize_branch.outputs.branch_tag }}-${{ steps.source_hash.outputs.source_hash }}"
  109. if docker manifest inspect "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" > /dev/null 2>&1; then
  110. echo "image_exists=true" >> $GITHUB_OUTPUT
  111. echo "* Reusing cached test-kit image tag: ${TAG}." >> $GITHUB_STEP_SUMMARY
  112. docker pull "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" > /dev/null
  113. image_commit=$(docker inspect -f '{{ index .Config.Labels "org.manticore.testkit.commit" }}' "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" || true)
  114. image_source_hash=$(docker inspect -f '{{ index .Config.Labels "org.manticore.testkit.source_hash" }}' "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" || true)
  115. echo "image_commit=${image_commit}" >> $GITHUB_OUTPUT
  116. echo "image_source_hash=${image_source_hash}" >> $GITHUB_OUTPUT
  117. else
  118. echo "image_exists=false" >> $GITHUB_OUTPUT
  119. echo "image_commit=" >> $GITHUB_OUTPUT
  120. echo "image_source_hash=" >> $GITHUB_OUTPUT
  121. fi
  122. echo "image_tag=${TAG}" >> $GITHUB_OUTPUT
  123. - name: Set Columnar Locator
  124. id: set_locator
  125. run: |
  126. if [[ "${{ github.ref_name }}" != "master" && "${{ steps.check_branch.outputs.branch_exists }}" == "true" ]]; then
  127. echo "columnar_locator=GIT_REPOSITORY https://github.com/manticoresoftware/columnar.git GIT_TAG ${{ steps.check_branch.outputs.branch_name }}" >> $GITHUB_OUTPUT
  128. else
  129. echo "columnar_locator=" >> $GITHUB_OUTPUT
  130. fi
  131. - name: Detect changed files and categories
  132. id: detect
  133. shell: bash
  134. run: |
  135. set -euo pipefail
  136. head="${{ github.sha }}"
  137. base=""
  138. if [[ -n "${{ steps.image_check.outputs.image_commit }}" ]]; then
  139. base="${{ steps.image_check.outputs.image_commit }}"
  140. elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
  141. base="${{ github.event.pull_request.base.sha }}"
  142. head="${{ github.event.pull_request.head.sha }}"
  143. else
  144. base="${{ github.event.before }}"
  145. fi
  146. files=""
  147. if [[ -z "$base" || "$base" == "0000000000000000000000000000000000000000" ]]; then
  148. files=$(git ls-tree -r --name-only "$head")
  149. else
  150. if ! git cat-file -e "$base^{commit}" 2>/dev/null; then
  151. git fetch --no-tags --depth=1 origin "$base"
  152. fi
  153. files=$(git diff --name-only "$base" "$head")
  154. fi
  155. {
  156. echo "### Changed files"
  157. echo "* Base: ${base:-'(none)'}"
  158. echo "* Head: ${head}"
  159. if [[ -n "${{ steps.image_check.outputs.image_commit }}" ]]; then
  160. echo "* Using image commit as base"
  161. fi
  162. } >> "$GITHUB_STEP_SUMMARY"
  163. if [[ -z "$files" && "$base" == "$head" ]]; then
  164. echo "* No diff (base == head); forcing full run" >> "$GITHUB_STEP_SUMMARY"
  165. files="__force_all__"
  166. fi
  167. if [[ -n "$files" ]]; then
  168. echo "$files" | sed 's/^/* /' >> "$GITHUB_STEP_SUMMARY"
  169. else
  170. echo "* (no files)" >> "$GITHUB_STEP_SUMMARY"
  171. fi
  172. export FILES="$files"
  173. python3 - <<'PY'
  174. import os
  175. files = os.environ.get("FILES", "").splitlines()
  176. source = False
  177. test = False
  178. clt = False
  179. for path in files:
  180. if not path:
  181. continue
  182. if path == "__force_all__":
  183. source = True
  184. elif path.startswith("test/clt-tests/"):
  185. clt = True
  186. elif path.startswith("test/"):
  187. test = True
  188. elif path.startswith(".github/") or path.startswith("manual/") or path.startswith("doc/"):
  189. pass
  190. else:
  191. source = True
  192. output = os.environ["GITHUB_OUTPUT"]
  193. with open(output, "a", encoding="utf-8") as fh:
  194. fh.write(f"source={'true' if source else 'false'}\n")
  195. fh.write(f"test={'true' if test else 'false'}\n")
  196. fh.write(f"clt={'true' if clt else 'false'}\n")
  197. PY
  198. - name: Calculate gating
  199. id: calc
  200. run: |
  201. set -euo pipefail
  202. changes_detected=false
  203. if [[ "${{ steps.detect.outputs.source }}" == "true" || "${{ steps.detect.outputs.test }}" == "true" || "${{ steps.detect.outputs.clt }}" == "true" ]]; then
  204. changes_detected=true
  205. fi
  206. skip_builds=false
  207. if [[ "${{ steps.detect.outputs.clt }}" == "true" && "${{ steps.detect.outputs.source }}" != "true" && "${{ steps.detect.outputs.test }}" != "true" && "${{ steps.image_check.outputs.image_exists }}" == "true" ]]; then
  208. skip_builds=true
  209. fi
  210. run_builds=false
  211. if [[ "$changes_detected" == "true" && "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.base.ref }}" == "update-buddy-version" ]]; then
  212. run_builds=false
  213. elif [[ "$changes_detected" == "true" && "$skip_builds" == "false" ]]; then
  214. run_builds=true
  215. fi
  216. run_image_build="$changes_detected"
  217. run_clt="$changes_detected"
  218. run_image_push=false
  219. if [[ "$changes_detected" == "true" && "${{ steps.image_check.outputs.image_exists }}" != "true" ]]; then
  220. run_image_push=true
  221. fi
  222. echo "changes_detected=$changes_detected" >> "$GITHUB_OUTPUT"
  223. echo "skip_builds=$skip_builds" >> "$GITHUB_OUTPUT"
  224. echo "run_builds=$run_builds" >> "$GITHUB_OUTPUT"
  225. echo "run_image_build=$run_image_build" >> "$GITHUB_OUTPUT"
  226. echo "run_clt=$run_clt" >> "$GITHUB_OUTPUT"
  227. echo "run_image_push=$run_image_push" >> "$GITHUB_OUTPUT"
  228. - name: Summarize gating
  229. run: |
  230. {
  231. echo "### Gate decisions"
  232. echo "* Changes detected (source/test/CLT): ${{ steps.calc.outputs.changes_detected }}"
  233. echo "* Skip builds/ubertests (only CLT changes + cached image): ${{ steps.calc.outputs.skip_builds }}"
  234. echo "* Run build/ubertest jobs: ${{ steps.calc.outputs.run_builds }}"
  235. echo "* Build test-kit image: ${{ steps.calc.outputs.run_image_build }}"
  236. echo "* Run CLT tests: ${{ steps.calc.outputs.run_clt }}"
  237. echo "* Push test-kit image tags: ${{ steps.calc.outputs.run_image_push }}"
  238. } >> "$GITHUB_STEP_SUMMARY"
  239. win_bundle:
  240. # Skip build jobs for PRs targeting 'update-buddy-version' branch (buddy version updates don't need full builds)
  241. if: needs.meta.outputs.run_builds == 'true'
  242. needs: [meta]
  243. name: Windows supplementary files preparation
  244. runs-on: ubuntu-22.04
  245. steps:
  246. - name: Check out cache
  247. id: cache
  248. uses: actions/cache@v4
  249. with:
  250. path: |
  251. bundle
  252. boost_1_75_0
  253. enableCrossOsArchive: true
  254. key: win_bundle
  255. lookup-only: true
  256. - name: Extract Windows bundle from Windows sysroot
  257. if: steps.cache.outputs.cache-hit != 'true'
  258. run: |
  259. wget https://repo.manticoresearch.com/repository/sysroots/roots_apr15/sysroot_windows_x64.tar.xz
  260. tar -xvf sysroot_windows_x64.tar.xz
  261. mv diskc/winbundle bundle
  262. - name: Extract Boost to put it to the cache
  263. if: steps.cache.outputs.cache-hit != 'true'
  264. run: |
  265. wget https://repo.manticoresearch.com/repository/ci/boost_1_75_0.tgz
  266. tar -xf boost_1_75_0.tgz
  267. build_linux_debug:
  268. if: needs.meta.outputs.run_builds == 'true'
  269. needs: [meta]
  270. name: Linux debug build
  271. uses: ./.github/workflows/build_template.yml
  272. with:
  273. CTEST_CONFIGURATION_TYPE: "Debug"
  274. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  275. artifact_name: debug_build
  276. cache_key: build_linux_debug_x86_64
  277. cmake_command: |
  278. export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake
  279. ctest -VV -S misc/ctest/gltest.cmake --no-compress-output
  280. test_linux_debug:
  281. if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true
  282. name: Linux debug mode tests
  283. needs: [build_linux_debug, meta]
  284. uses: ./.github/workflows/test_template.yml
  285. with:
  286. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  287. build_artifact_name: debug_build
  288. artifact_name: debug_test_results
  289. results_name: "Linux debug test results"
  290. timeout: 10
  291. build_linux_release:
  292. if: needs.meta.outputs.run_builds == 'true'
  293. needs: [meta]
  294. name: Linux release build
  295. uses: ./.github/workflows/build_template.yml
  296. with:
  297. artifact_name: release_build
  298. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  299. cache_key: build_linux_release_x86_64
  300. artifact_list: "build/xml build/CMakeFiles/CMake*.log build/api/libsphinxclient/testcli build/src/indexer build/src/indextool build/src/searchd build/src/tests build/src/gtests/gmanticoretest build/config/*.c build/config/*.h build/**/*.cxx build/**/*.gcno build/manticore*deb"
  301. cmake_command: |
  302. export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake
  303. export PACK=1
  304. export PACK_KEEP_TESTS=1
  305. ctest -VV -S misc/ctest/gltest.cmake --no-compress-output
  306. cmake --build build --target package
  307. test_linux_release:
  308. if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true
  309. name: Linux release mode tests
  310. needs: [build_linux_release, meta]
  311. uses: ./.github/workflows/test_template.yml
  312. with:
  313. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  314. build_artifact_name: release_build
  315. artifact_name: release_test_results
  316. results_name: "Linux release test results"
  317. timeout: 10
  318. # When only CLT changed and a cached image exists, build jobs are skipped. A job that needs
  319. # build_linux_release would then be skipped too (GitHub skips dependents of skipped jobs),
  320. # so we use a separate reuse-only job that only needs meta. That way CLT always runs when
  321. # run_clt is true and we have a test-kit image (either built or reused).
  322. test_kit_docker_reuse:
  323. name: Test Kit docker image (reuse cache)
  324. needs: [meta]
  325. if: needs.meta.outputs.run_image_build == 'true' && needs.meta.outputs.image_exists == 'true'
  326. runs-on: ubuntu-22.04
  327. steps:
  328. - name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
  329. uses: actions/checkout@v3
  330. - name: Reuse cached test kit image
  331. env:
  332. REPO_OWNER: ${{ github.repository_owner }}
  333. IMAGE_TAG: ${{ needs.meta.outputs.image_tag }}
  334. run: |
  335. set -euo pipefail
  336. IMAGE="ghcr.io/${REPO_OWNER}/manticoresearch:${IMAGE_TAG}"
  337. docker pull "$IMAGE"
  338. docker tag "$IMAGE" test-kit:img
  339. docker create --name manticore-test-kit-src --entrypoint /bin/sh test-kit:img -c "true"
  340. docker export manticore-test-kit-src > manticore_test_kit.img
  341. docker rm manticore-test-kit-src
  342. - name: Upload docker image artifact
  343. uses: manticoresoftware/upload_artifact_with_retries@v4
  344. with:
  345. name: manticore_test_kit.img
  346. path: manticore_test_kit.img
  347. test_kit_docker_build:
  348. name: Test Kit docker image
  349. needs:
  350. - build_linux_release
  351. - meta
  352. if: needs.meta.outputs.run_image_build == 'true' && needs.meta.outputs.image_exists != 'true'
  353. runs-on: ubuntu-22.04
  354. outputs:
  355. out-build: ${{ steps.build.outputs.build_image }}
  356. steps:
  357. - name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
  358. uses: actions/checkout@v3
  359. - name: Download built x86_64 Ubuntu Jammy packages
  360. uses: manticoresoftware/download_artifact_with_retries@v3
  361. with:
  362. name: release_build
  363. path: .
  364. # Uncomment this shortcut for debug to save time by not preparing the packages in the pack_jammy job
  365. # - run: |
  366. # wget http://dev2.manticoresearch.com/build_jammy_RelWithDebInfo_x86_64.zip
  367. # unzip build_jammy_RelWithDebInfo_x86_64.zip
  368. # tar -xvf artifact.tar
  369. - name: Calculate short commit hash
  370. id: sha
  371. run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
  372. - name: Building docker
  373. id: build
  374. run: |
  375. BUILD_COMMIT=${{ steps.sha.outputs.sha_short }} /bin/bash dist/test_kit_docker_build.sh
  376. echo "build_image=ghcr.io/$REPO_OWNER/manticoresearch:test-kit-${{ steps.sha.outputs.sha_short }}" >> $GITHUB_OUTPUT
  377. - name: Upload docker image artifact
  378. uses: manticoresoftware/upload_artifact_with_retries@v4
  379. with:
  380. name: manticore_test_kit.img
  381. path: manticore_test_kit.img
  382. clt:
  383. if: always() && needs.meta.outputs.run_clt == 'true' && (needs.test_kit_docker_build.result == 'success' || needs.test_kit_docker_reuse.result == 'success')
  384. name: CLT
  385. needs: [test_kit_docker_build, test_kit_docker_reuse, meta]
  386. uses: ./.github/workflows/clt_tests.yml
  387. secrets:
  388. OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  389. VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }}
  390. JINA_API_KEY: ${{ secrets.JINA_API_KEY }}
  391. with:
  392. docker_image: test-kit:img
  393. artifact_name: manticore_test_kit.img
  394. repository: ${{ github.repository }}
  395. ref: ${{ github.sha }}
  396. test_kit_docker_push:
  397. if: always() && needs.meta.outputs.run_image_push == 'true'
  398. needs:
  399. - clt
  400. - meta
  401. - test_kit_docker_build
  402. - test_kit_docker_reuse
  403. - test_linux_debug
  404. - test_linux_release
  405. - test_windows
  406. name: Push Test Kit docker image to repo
  407. runs-on: ubuntu-22.04
  408. env:
  409. GHCR_USER: ${{ vars.GHCR_USER }}
  410. GHCR_PASSWORD: ${{ secrets.GHCR_PASSWORD }}
  411. REPO_OWNER: ${{ github.repository_owner }}
  412. SOURCE_HASH: ${{ needs.meta.outputs.source_hash }}
  413. BRANCH_TAG: ${{ needs.meta.outputs.branch_tag }}
  414. HASH_TAG_OK: ${{ needs.test_linux_debug.result == 'success' && needs.test_linux_release.result == 'success' && needs.test_windows.result == 'success' }}
  415. IMAGE_BUILD_COMMIT: ${{ github.sha }}
  416. steps:
  417. - name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
  418. uses: actions/checkout@v3
  419. - name: Download artifact
  420. uses: manticoresoftware/download_artifact_with_retries@main
  421. with:
  422. name: manticore_test_kit.img
  423. path: .
  424. - name: Calculate short commit hash
  425. id: sha
  426. run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
  427. - name: Pushing docker image to repo
  428. id: test-kit-push
  429. run: |
  430. TEST_RESULT=${{ needs.clt.result }} BUILD_COMMIT=${{ steps.sha.outputs.sha_short }} /bin/bash dist/test_kit_docker_push.sh
  431. build_aarch64:
  432. if: needs.meta.outputs.run_builds == 'true'
  433. needs: [meta]
  434. name: Linux aarch64 build
  435. uses: ./.github/workflows/build_template.yml
  436. # Use -VV instead of -V below for more verbose output
  437. with:
  438. arch: aarch64
  439. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  440. cmake_command: |
  441. mkdir build
  442. cd build
  443. export CMAKE_TOOLCHAIN_FILE=$(pwd)/../dist/build_dockers/cross/linux.cmake
  444. ctest -V -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output
  445. cache_key: build_jammy_aarch64
  446. build_freebsd:
  447. if: needs.meta.outputs.run_builds == 'true'
  448. needs: [meta]
  449. name: FreeBSD x86_64 build
  450. uses: ./.github/workflows/build_template.yml
  451. with:
  452. DISTR: freebsd13
  453. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  454. boost_url_key: none
  455. cmake_command: |
  456. mkdir build
  457. cd build
  458. export CMAKE_TOOLCHAIN_FILE=$(pwd)/../dist/build_dockers/cross/freebsd.cmake
  459. ctest -VV -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output
  460. cache_key: build_freebsd_x86_64
  461. build_windows:
  462. if: needs.meta.outputs.run_builds == 'true'
  463. needs: [meta]
  464. name: Windows x64 build
  465. uses: ./.github/workflows/build_template.yml
  466. with:
  467. DISTR: windows
  468. arch: x64
  469. sysroot_url_key: roots_mysql83_jan17
  470. boost_url_key: boost_80
  471. CTEST_CMAKE_GENERATOR: "Ninja Multi-Config"
  472. CTEST_CONFIGURATION_TYPE: Debug
  473. cache_key: build_windows_x64
  474. artifact_list: "build/xml build/src/Debug/indexer.exe build/src/Debug/indexer.pdb build/src/Debug/searchd.exe build/src/Debug/searchd.pdb build/src/gtests/Debug/gmanticoretest.exe build/src/gtests/Debug/gmanticoretest.pdb build/src/Debug/*.dll build/src/gtests/Debug/*.dll build/config/*.c build/config/*.h"
  475. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  476. test_windows:
  477. if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true
  478. name: Windows tests
  479. needs: [build_windows, win_bundle, meta]
  480. uses: ./.github/workflows/win_test_template.yml
  481. with:
  482. CTEST_START: 1
  483. CTEST_END: 999999
  484. COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
  485. artifact_name: windows_test_results