Skip to content

DO NOT MERGE: run only the -j comparison #1

DO NOT MERGE: run only the -j comparison

DO NOT MERGE: run only the -j comparison #1

Workflow file for this run

name: freebsd-e2e
on: [push, pull_request]
permissions:
contents: read
jobs:
freebsd-e2e:
# Run on a branch push and on a pull request from a fork. A pull request
# from a branch of this repository is tested by the push of that branch.
if: |
github.event_name == 'push' ||
github.event_name == 'pull_request' &&
github.event.pull_request.head.repo.full_name != github.repository
# DO NOT MERGE: the PR's job as it is against the test-run route at the
# same parallelism (-j CPUs), five runs each.
strategy:
fail-fast: false
matrix:
variant: [pr, test-run]
run: [1, 2, 3, 4, 5]
# ubuntu-latest will be 26.04 soon. Switch ahead of time.
#
# https://github.com/actions/runner-images/issues/14748
runs-on: ubuntu-26.04
timeout-minutes: 30
steps:
# Speeds up actions/checkout.
#
# https://github.com/actions/checkout/issues/945
- name: Parallelize submodules fetching
run: git config --global submodule.fetchJobs 8
- uses: actions/checkout@v7
with:
# The version of the build is `git describe` of the tree.
fetch-depth: 0
submodules: recursive
- name: Start FreeBSD VM
uses: cross-platform-actions/action@v1
with:
operating_system: freebsd
version: '15.1'
# The default is 2: the CPU count of a standard Linux runner when
# the option appeared (2023) and of a private repository's runner
# now. A public repository's runner has 4.
cpu_count: 4
# FreeBSD offers only /dev/fd/{0,1,2} by default.
#
# luatest uses /dev/fd/* to point tarantool's logger to luatest's pipe.
# If the file to write doesn't exist, the logger process fails:
#
# | /bin/sh: cannot create /dev/fd/15: Operation not supported
#
# Usually it happens in the background and is harmless, but sometimes the
# logger fails fast enough, so log_pipe_init() sees it, reports up and
# tarantool initialization fails.
- name: Mount fdescfs
shell: cpa.sh {0}
run: sudo mount -t fdescfs null /dev/fd
- name: Install dependencies
if: matrix.variant == 'pr'
shell: cpa.sh {0}
run: sudo pkg install -y cmake-core git-lite icu ninja readline
- name: Install dependencies
if: matrix.variant == 'test-run'
shell: cpa.sh {0}
run: |
sudo pkg install -y cmake-core git-lite icu ninja readline \
python3 py312-gevent py312-pyyaml
- name: Build
if: matrix.variant == 'pr'
shell: cpa.sh {0}
run: |
cmake . -G Ninja -DCMAKE_BUILD_TYPE=Debug -DTEST_BUILD=ON
cmake --build . --target tarantool app-luatest-deps
- name: Build
if: matrix.variant == 'test-run'
shell: cpa.sh {0}
run: |
cmake . -G Ninja -DCMAKE_BUILD_TYPE=Debug -DTEST_BUILD=ON
cmake --build .
# The PR's exclusions, with ulid_test (gh-11728) as in its FIXUP.
- name: Run app-luatest
if: matrix.variant == 'pr'
shell: cpa.sh {0}
run: |
ctest \
--no-tests=error \
--output-on-failure \
--timeout 120 \
-j $(nproc) \
-L app-luatest \
-E 'http_client_test|protobuf_module_test|gh_8613|ulid_test'
# The test-run route's exclusions: the gh_8613 tests hang in `tarantool
# -i </dev/null` (gh-6231); http_client_test failed with 408 instead of
# 200 in 2 of 10 runs.
- name: Run tests
if: matrix.variant == 'test-run'
shell: cpa.sh {0}
run: |
./test/test-run.py --force -j $(nproc) \
--exclude gh_8613 \
--exclude http_client_test \
unit/ app-luatest/