🔬 Test 4fa08e14e6f21b757dd9c75a1ea1d87a77b527ca #3463
This file contains 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
name: 🔬 Test | |
run-name: 🔬 Test ${{ github.sha }} | |
#on: workflow_call | |
on: | |
push: | |
branches: | |
- master | |
- manticore-* | |
paths-ignore: | |
- 'manual/**' | |
- '!manual/References.md' | |
- 'cmake/GetGALERA.cmake' | |
- 'galera_packaging/**' | |
pull_request: | |
branches: [ master, update-buddy-version ] | |
paths-ignore: | |
- 'manual/**' | |
- '!manual/References.md' | |
- 'cmake/GetGALERA.cmake' | |
- 'galera_packaging/**' | |
types: [opened, synchronize, reopened, labeled, unlabeled] | |
# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch) | |
concurrency: | |
group: test_${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
commit_info: | |
name: Commit info | |
runs-on: ubuntu-22.04 | |
steps: | |
- run: | | |
echo "# Automated Tests of commit ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY | |
echo "* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})" >> $GITHUB_STEP_SUMMARY | |
echo "* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})" >> $GITHUB_STEP_SUMMARY | |
echo "* Ref: ${{ github.ref_type }} \"${{ github.ref_name }}\"" >> $GITHUB_STEP_SUMMARY | |
echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY | |
changes: | |
name: Detect changes in commit | |
runs-on: ubuntu-22.04 | |
outputs: | |
source: ${{ steps.filter.outputs.source }} | |
test: ${{ steps.filter.outputs.test }} | |
clt: ${{ steps.filter.outputs.clt }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: manticoresoftware/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
source: | |
- '**' | |
- '!.github/**' | |
- '!manual/**' | |
- '!doc/**' | |
- '!test/**' | |
test: | |
- 'test/**' | |
- '!test/clt-tests/**' | |
clt: | |
- 'test/clt-tests/**' | |
win_bundle: | |
if: (needs.changes.outputs.source == 'true') && (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: changes | |
name: Windows supplementary files preparation | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Check out cache | |
id: cache | |
uses: actions/[email protected] | |
with: | |
path: | | |
bundle | |
boost_1_75_0 | |
enableCrossOsArchive: true | |
key: win_bundle | |
lookup-only: true | |
- name: Extract Windows bundle from Windows sysroot | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
wget https://repo.manticoresearch.com/repository/sysroots/roots_apr15/sysroot_windows_x64.tar.xz | |
tar -xvf sysroot_windows_x64.tar.xz | |
mv diskc/winbundle bundle | |
- name: Extract Boost to put it to the cache | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: | | |
wget https://repo.manticoresearch.com/repository/ci/boost_1_75_0.tgz | |
tar -xf boost_1_75_0.tgz | |
build_linux_debug: | |
if: (needs.changes.outputs.source == 'true') && (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: changes | |
name: Linux debug build | |
uses: ./.github/workflows/build_template.yml | |
with: | |
CTEST_CONFIGURATION_TYPE: "Debug" | |
artifact_name: debug_build | |
cmake_command: | | |
export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake | |
ctest -VV -S misc/ctest/gltest.cmake --no-compress-output | |
test_linux_debug: | |
if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: build_linux_debug | |
name: Linux debug mode tests | |
uses: ./.github/workflows/test_template.yml | |
with: | |
build_artifact_name: debug_build | |
artifact_name: debug_test_results | |
results_name: "Linux debug test results" | |
timeout: 10 | |
build_linux_release: | |
if: (needs.changes.outputs.source == 'true') && (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: changes | |
name: Linux release build | |
uses: ./.github/workflows/build_template.yml | |
with: | |
artifact_name: release_build | |
cmake_command: | | |
export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake | |
ctest -VV -S misc/ctest/gltest.cmake --no-compress-output | |
test_linux_release: | |
if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: build_linux_release | |
name: Linux release mode tests | |
uses: ./.github/workflows/test_template.yml | |
with: | |
build_artifact_name: release_build | |
artifact_name: release_test_results | |
results_name: "Linux release test results" | |
timeout: 10 | |
pack_jammy_cache_check: | |
needs: changes | |
name: Jammy x86_64 package [check cache] | |
runs-on: ubuntu-22.04 | |
outputs: | |
cache-key: ${{ steps.generate-key.outputs.cache-key }} | |
cache-hit: ${{ steps.cache.outputs.cache-hit }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Generate cache key | |
id: generate-key | |
run: | | |
if [ "${{ github.event_name }}" == "pull_request" ]; then | |
branch=${{ github.head_ref }} | |
else | |
branch=$(git rev-parse --abbrev-ref HEAD) | |
fi | |
cache_key="jammy-build-${branch}" | |
echo "cache-key=${cache_key}" >> $GITHUB_OUTPUT | |
- name: Set up cache | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: ${{ steps.generate-key.outputs.cache-key }} | |
- name: Override cache hit | |
id: override-cache-hit | |
run: | | |
if [ "${{ needs.changes.outputs.source }}" == "true" ]; then | |
echo "cache-hit=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Upload build artifacts from cache | |
if: ${{ steps.override-cache-hit.outputs.cache-hit == 'true' }} | |
uses: manticoresoftware/upload_artifact_with_retries@v4 | |
with: | |
name: build_jammy_RelWithDebInfo_x86_64 | |
path: "build/manticore*deb" | |
pack_jammy: | |
needs: [pack_jammy_cache_check, changes] | |
if: | | |
needs.pack_jammy_cache_check.outputs.cache-hit != 'true' || | |
needs.changes.outputs.source == 'true' | |
name: Jammy x86_64 package [build] | |
uses: ./.github/workflows/build_template.yml | |
with: | |
DISTR: jammy | |
arch: x86_64 | |
cmake_command: | | |
mkdir build | |
cd build | |
cmake -DPACK=1 .. | |
export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake | |
cmake --build . --target package | |
cache_key: pack_jammy_x86_64 | |
artifact_list: "build/manticore*deb" | |
pack_jammy_cache_update: | |
if: (needs.pack_jammy_cache_check.outputs.cache-hit != 'true') && (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
name: Jammy x86_64 package [update cache] | |
needs: [pack_jammy, pack_jammy_cache_check] | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository # We have to checkout to access .github/workflows/ in further steps | |
uses: actions/checkout@v3 | |
- name: Download built x86_64 Ubuntu Jammy packages | |
uses: manticoresoftware/download_artifact_with_retries@v3 | |
continue-on-error: true | |
with: | |
name: build_jammy_RelWithDebInfo_x86_64 | |
path: . | |
- name: Save cache | |
uses: actions/cache@v4 | |
with: | |
path: build | |
key: ${{ needs.pack_jammy_cache_check.outputs.cache-key }} | |
test_kit_docker_build: | |
name: Test Kit docker image | |
needs: [pack_jammy, pack_jammy_cache_check] | |
if: always() && needs.pack_jammy.result != 'failure' | |
runs-on: ubuntu-22.04 | |
outputs: | |
out-build: ${{ steps.build.outputs.build_image }} | |
steps: | |
- name: Checkout repository # We have to checkout to access .github/workflows/ in further steps | |
uses: actions/checkout@v3 | |
- name: Download built x86_64 Ubuntu Jammy packages | |
uses: manticoresoftware/download_artifact_with_retries@v3 | |
continue-on-error: true | |
with: | |
name: build_jammy_RelWithDebInfo_x86_64 | |
path: . | |
# Uncomment this shortcut for debug to save time by not preparing the packages in the pack_jammy job | |
# - run: | | |
# wget http://dev2.manticoresearch.com/build_jammy_RelWithDebInfo_x86_64.zip | |
# unzip build_jammy_RelWithDebInfo_x86_64.zip | |
# tar -xvf artifact.tar | |
- name: Calculate short commit hash | |
id: sha | |
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
- name: Building docker | |
id: build | |
run: | | |
BUILD_COMMIT=${{ steps.sha.outputs.sha_short }} /bin/bash dist/test_kit_docker_build.sh | |
echo "build_image=ghcr.io/$REPO_OWNER/manticoresearch:test-kit-${{ steps.sha.outputs.sha_short }}" >> $GITHUB_OUTPUT | |
- name: Upload docker image artifact | |
uses: manticoresoftware/upload_artifact_with_retries@v4 | |
with: | |
name: manticore_test_kit.img | |
path: manticore_test_kit.img | |
clt: | |
if: always() && needs.test_kit_docker_build.result != 'failure' | |
name: CLT | |
needs: test_kit_docker_build | |
uses: ./.github/workflows/clt_tests.yml | |
with: | |
docker_image: test-kit:img | |
artifact_name: manticore_test_kit.img | |
repository: ${{ github.repository }} | |
ref: ${{ github.sha }} | |
test_kit_docker_push: | |
if: always() && needs.changes.outputs.source == 'true' | |
needs: | |
- changes | |
- clt | |
name: Push Test Kit docker image to repo | |
runs-on: ubuntu-22.04 | |
env: | |
GHCR_USER: ${{ vars.GHCR_USER }} | |
GHCR_PASSWORD: ${{ secrets.GHCR_PASSWORD }} | |
REPO_OWNER: ${{ github.repository_owner }} | |
steps: | |
- name: Checkout repository # We have to checkout to access .github/workflows/ in further steps | |
uses: actions/checkout@v3 | |
- name: Download artifact | |
uses: manticoresoftware/download_artifact_with_retries@main | |
with: | |
name: manticore_test_kit.img | |
path: . | |
- name: Calculate short commit hash | |
id: sha | |
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
- name: Pushing docker image to repo | |
id: test-kit-push | |
run: | | |
TEST_RESULT=${{ needs.clt.result }} BUILD_COMMIT=${{ steps.sha.outputs.sha_short }} /bin/bash dist/test_kit_docker_push.sh | |
build_aarch64: | |
if: (needs.changes.outputs.source == 'true') && (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: changes | |
name: Linux aarch64 build | |
uses: ./.github/workflows/build_template.yml | |
# Use -VV instead of -V below for more verbose output | |
with: | |
arch: aarch64 | |
cmake_command: | | |
mkdir build | |
cd build | |
export CMAKE_TOOLCHAIN_FILE=$(pwd)/../dist/build_dockers/cross/linux.cmake | |
ctest -V -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output | |
cache_key: build_jammy_aarch64 | |
build_freebsd: | |
if: (needs.changes.outputs.source == 'true') && (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: changes | |
name: FreeBSD x86_64 build | |
uses: ./.github/workflows/build_template.yml | |
with: | |
DISTR: freebsd13 | |
boost_url_key: none | |
cmake_command: | | |
mkdir build | |
cd build | |
export CMAKE_TOOLCHAIN_FILE=$(pwd)/../dist/build_dockers/cross/freebsd.cmake | |
ctest -VV -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output | |
cache_key: build_freebsd_x86_64 | |
build_windows: | |
if: (needs.changes.outputs.source == 'true') && (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
needs: changes | |
name: Windows x64 build | |
uses: ./.github/workflows/build_template.yml | |
with: | |
DISTR: windows | |
arch: x64 | |
sysroot_url_key: roots_mysql83_jan17 | |
boost_url_key: boost_80 | |
CTEST_CMAKE_GENERATOR: "Ninja Multi-Config" | |
CTEST_CONFIGURATION_TYPE: Debug | |
cache_key: build_windows_x64 | |
artifact_list: "build/xml build/src/Debug/indexer.exe build/src/Debug/searchd.exe build/src/gtests/Debug/gmanticoretest.exe build/src/Debug/*.dll build/src/gtests/Debug/*.dll build/config/*.c build/config/*.h" | |
test_windows: | |
if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true | |
name: Windows tests | |
needs: [build_windows, win_bundle] | |
uses: ./.github/workflows/win_test_template.yml | |
strategy: | |
fail-fast: false | |
matrix: | |
name: [1_400, 401_650, 651_and_on] | |
include: | |
- name: 1_350 | |
start: 1 | |
end: 350 | |
- name: 351_570 | |
start: 351 | |
end: 570 | |
- name: 571_790 | |
start: 571 | |
end: 790 | |
- name: 791_and_on | |
start: 791 | |
end: 999999 | |
with: | |
CTEST_START: ${{ matrix.start }} | |
CTEST_END: ${{ matrix.end }} | |
artifact_name: windows_test_${{ matrix.name }} | |
windows_tests_report: | |
name: Windows tests summary and report | |
needs: test_windows | |
runs-on: ubuntu-22.04 | |
container: | |
image: manticoresearch/ubertests_ctest:3263_20241105 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Download test report artifacts 1_400 | |
uses: manticoresoftware/download_artifact_with_retries@v3 | |
continue-on-error: true | |
with: | |
name: windows_test_1_400 | |
path: . | |
- name: Download test report artifacts 401_650 | |
uses: manticoresoftware/download_artifact_with_retries@v3 | |
continue-on-error: true | |
with: | |
name: windows_test_401_650 | |
path: . | |
- name: Download test report artifacts 651_and_on | |
uses: manticoresoftware/download_artifact_with_retries@v3 | |
continue-on-error: true | |
with: | |
name: windows_test_651_and_on | |
path: . | |
- name: Convert the XML to JUnit format | |
run: for dir in build/xml_*; do xsltproc -o $dir/junit_tests.xml misc/junit/ctest2junit.xsl $dir/Test.xml; done; | |
shell: bash | |
- name: Publish test results | |
uses: manticoresoftware/publish-unit-test-result-action@v2 | |
with: | |
check_name: Windows test results | |
compare_to_earlier_commit: false | |
files: build/xml_*/junit_tests.xml | |
comment_mode: failures | |
- name: Per-test results | |
# IMPORTANT: The value of 3 below should correspond to the test shard count, needs.<job_name>.strategy.job-total doesn't work | |
run: | | |
for file in build/status*; do echo -n "$file: "; cat "$file"; done | |
grep -o "success" build/status* | wc -l | awk '{if ($1==3) exit 0; else {print "Found only "$1" successful runs out of 3"; exit 1}}' | |
shell: bash | |
- name: Upload combined artifacts | |
if: always() | |
continue-on-error: true | |
uses: manticoresoftware/upload_artifact_with_retries@v4 | |
with: | |
name: windows_test_resuls | |
path: build |