Skip to content

🔬 Test 4fa08e14e6f21b757dd9c75a1ea1d87a77b527ca #3463

🔬 Test 4fa08e14e6f21b757dd9c75a1ea1d87a77b527ca

🔬 Test 4fa08e14e6f21b757dd9c75a1ea1d87a77b527ca #3463

Workflow file for this run

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