mirror of
https://github.com/valkey-io/valkey.git
synced 2026-05-06 05:26:42 -04:00
ff80b2d1dc
Migrated the remaining cluster tests to tests/unit/cluster/ to use the same framework for all cluster tests. Cleaned up the obsolete cluster test framework files and updated the CI workflows to use the new unified test runner. Changes: Moved and mapped 6 test files: - 03-failover-loop.tcl → Merged into existing failover.tcl - 04-resharding.tcl → resharding.tcl - 12-replica-migration-2.tcl + 12.1-replica-migration-3.tcl → replica-migration-slow.tcl - 07-replica-migration.tcl → Merged into existing replica-migration.tcl - 28-cluster-shards.tcl → Merged into existing cluster-shards.tcl Other changes: - Converted old framework APIs (e.g., K, RI) to new framework APIs (e.g., R, srv) - Added process_is_alive check in cluster_util.tcl to fix an exception in failover tests caused by executing ps on dead processes - Heavy tests (resharding, replica-migration-slow) marked with slow tag and wrapped in run_solo to prevent resource contention in sanitizer environments - replica-migration-slow marked with valgrind:skip tag since it is very slow - Removed the entire tests/cluster/ directory including run.tcl, cluster.tcl, includes/, and helpers/ - Kept runtest-cluster as a wrapper script (exec ./runtest --cluster "$@") - Removed ./runtest-cluster calls from .github/workflows/daily.yml as cluster tests are now included in ./runtest Closes #2297. Signed-off-by: Jun Yeong Kim <junyeonggim5@gmail.com> Signed-off-by: Binbin <binloveplay1314@qq.com> Co-authored-by: Binbin <binloveplay1314@qq.com>
1917 lines
100 KiB
YAML
1917 lines
100 KiB
YAML
name: Daily
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, labeled]
|
|
branches:
|
|
# any PR to a release branch.
|
|
- "[0-9].[0-9]"
|
|
- "unstable"
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- '**/00-RELEASENOTES'
|
|
- '**/COPYING'
|
|
schedule:
|
|
- cron: "0 0 * * *"
|
|
workflow_dispatch:
|
|
inputs:
|
|
skipjobs:
|
|
description: "jobs to skip (delete the ones you wanna keep, do not leave empty)"
|
|
default: "valgrind,sanitizer,tls,freebsd,macos,alpine,32bit,iothreads,ubuntu,rpm-distros,malloc,specific,fortify,reply-schema,arm,lttng"
|
|
skiptests:
|
|
description: "tests to skip (delete the ones you wanna keep, do not leave empty)"
|
|
default: "valkey,modules,sentinel,cluster,unittest,large-memory"
|
|
test_args:
|
|
description: "extra test arguments"
|
|
default: ""
|
|
cluster_test_args:
|
|
description: "extra cluster / sentinel test arguments"
|
|
default: ""
|
|
use_repo:
|
|
description: "repo owner and name"
|
|
default: "valkey-io/valkey"
|
|
use_git_ref:
|
|
description: "git branch or sha to use"
|
|
default: "unstable"
|
|
workflow_call:
|
|
inputs:
|
|
skipjobs:
|
|
description: "jobs to skip (delete the ones you wanna keep, do not leave empty)"
|
|
required: false
|
|
type: string
|
|
default: ""
|
|
skiptests:
|
|
description: "tests to skip (delete the ones you wanna keep, do not leave empty)"
|
|
required: false
|
|
type: string
|
|
default: ""
|
|
test_args:
|
|
description: "extra test arguments"
|
|
required: false
|
|
type: string
|
|
default: ""
|
|
cluster_test_args:
|
|
description: "extra cluster / sentinel test arguments"
|
|
required: false
|
|
type: string
|
|
default: ""
|
|
use_repo:
|
|
description: "repo owner and name"
|
|
required: false
|
|
type: string
|
|
default: "valkey-io/valkey"
|
|
use_git_ref:
|
|
description: "git branch or sha to use"
|
|
required: false
|
|
type: string
|
|
default: "unstable"
|
|
concurrency:
|
|
group: daily-${{ github.head_ref || inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
cancel-in-progress: ${{ github.event_name != 'pull_request' || github.event.action != 'labeled' }}
|
|
permissions:
|
|
contents: read
|
|
pull-requests: read
|
|
jobs:
|
|
test-ubuntu-jemalloc:
|
|
runs-on: ubuntu-latest
|
|
# pull_request gate breakdown:
|
|
# 1) (base != unstable) OR PR currently has run-extra-tests.
|
|
# 2) Exclude all labeled events, except unstable + newly added run-extra-tests.
|
|
# 3) release branches run on opened/reopened/synchronize, never label-only events.
|
|
# 4) unstable runs when run-extra-tests is added, and on later code updates while it remains.
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'ubuntu')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit accurate=1
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests --accurate
|
|
fi
|
|
- name: install Redis OSS 6.2 server for compatibility testing
|
|
run: |
|
|
cd tests/tmp
|
|
wget https://download.redis.io/releases/redis-6.2.14.tar.gz
|
|
tar -xvf redis-6.2.14.tar.gz
|
|
- name: make Redis OSS 6.2 server
|
|
run: |
|
|
cd tests/tmp/redis-6.2.14
|
|
make
|
|
- name: backward compatibility tests with OSS Redis 6.2
|
|
run: |
|
|
sudo apt-get install tcl8.6 tclx
|
|
./runtest --verbose --tags compatible-redis --dump-logs --other-server-path tests/tmp/redis-6.2.14/src/redis-server
|
|
- name: install Redis OSS 7.0 server for compatibility testing
|
|
run: |
|
|
cd tests/tmp
|
|
wget https://download.redis.io/releases/redis-7.0.15.tar.gz
|
|
tar -xvf redis-7.0.15.tar.gz
|
|
- name: make Redis OSS 7.0 server
|
|
run: |
|
|
cd tests/tmp/redis-7.0.15
|
|
make
|
|
- name: backward compatibility tests with OSS Redis 7.0
|
|
run: |
|
|
sudo apt-get install tcl8.6 tclx
|
|
./runtest --verbose --tags compatible-redis --dump-logs --other-server-path tests/tmp/redis-7.0.15/src/redis-server
|
|
test-ubuntu-arm:
|
|
runs-on: ubuntu-24.04-arm
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
(!contains(github.event.inputs.skipjobs, 'ubuntu') || !contains(github.event.inputs.skipjobs, 'arm'))
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit accurate=1
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests --accurate
|
|
fi
|
|
test-ubuntu-jemalloc-fortify:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'fortify')
|
|
container: ubuntu:plucky
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
apt-get update && apt-get install -y make gcc-13 git cmake g++ python3
|
|
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 100
|
|
cd libbacktrace && ./configure && make && make install
|
|
- name: Install gtest
|
|
run: apt-get install -y pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests CC=gcc OPT=-O3 SERVER_CFLAGS='-Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: apt-get install -y tcl8.6 tclx procps
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit accurate=1
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests --accurate
|
|
fi
|
|
test-ubuntu-libc-malloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'malloc')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make MALLOC=libc SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-ubuntu-no-malloc-usable-size:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'malloc')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make MALLOC=libc CFLAGS=-DNO_MALLOC_USABLE_SIZE SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-ubuntu-32bit:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, '32bit')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
sudo apt-get update && sudo apt-get install libc6-dev-i386 g++-multilib
|
|
cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install libgtest-dev
|
|
mkdir -p /tmp/gtest32
|
|
cd /tmp/gtest32
|
|
cmake -B build32 \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_C_FLAGS="-m32" \
|
|
-DCMAKE_CXX_FLAGS="-m32" \
|
|
-DCMAKE_EXE_LINKER_FLAGS="-m32" \
|
|
/usr/src/googletest
|
|
cmake --build build32 --parallel
|
|
sudo cp build32/lib/*.a /usr/lib32/
|
|
cd $GITHUB_WORKSPACE
|
|
- name: make
|
|
run: |
|
|
make 32bit SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes \
|
|
GTEST_CFLAGS="-I/usr/src/googletest/googletest/include -I/usr/src/googletest/googlemock/include" \
|
|
GTEST_LIBS="/usr/lib32/libgtest.a /usr/lib32/libgmock.a"
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
make -C tests/modules 32bit # the script below doesn't have an argument, we must build manually ahead of time
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit accurate=1 \
|
|
GTEST_CFLAGS="-I/usr/src/googletest/googletest/include -I/usr/src/googletest/googlemock/include" \
|
|
GTEST_LIBS="/usr/lib32/libgtest.a /usr/lib32/libgmock.a"
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests --accurate
|
|
fi
|
|
test-ubuntu-tls:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make BUILD_TLS=yes SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get install tcl8.6 tclx tcl-tls
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs --tls --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --tls --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel --tls ${{github.event.inputs.cluster_test_args}}
|
|
test-ubuntu-tls-no-tls:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make BUILD_TLS=yes SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get install tcl8.6 tclx tcl-tls
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-ubuntu-io-threads:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'iothreads')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --io-threads --accurate --verbose --tags network --dump-logs ${{github.event.inputs.test_args}}
|
|
test-ubuntu-tls-io-threads:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls') && !contains(github.event.inputs.skipjobs, 'iothreads')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make BUILD_TLS=yes SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get install tcl8.6 tclx tcl-tls
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest --io-threads --tls --accurate --verbose --tags network --dump-logs ${{github.event.inputs.test_args}}
|
|
test-ubuntu-reclaim-cache:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'specific')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: "sudo apt-get install vmtouch\nmkdir /tmp/master \nmkdir /tmp/slave\n"
|
|
- name: warm up
|
|
run: |
|
|
./src/valkey-server --daemonize yes --logfile /dev/null
|
|
./src/valkey-benchmark -n 1 > /dev/null
|
|
./src/valkey-cli save | grep OK > /dev/null
|
|
vmtouch -v ./dump.rdb > /dev/null
|
|
- name: test
|
|
run: |
|
|
echo "test SAVE doesn't increase cache"
|
|
CACHE0=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE0"
|
|
./src/valkey-server --daemonize yes --logfile /dev/null --dir /tmp/master --port 8080 --repl-diskless-sync no --pidfile /tmp/master/valkey.pid --rdbcompression no --enable-debug-command yes
|
|
sleep 1 # wait for server startup
|
|
./src/valkey-cli -p 8080 debug populate 10000 k 102400
|
|
./src/valkey-server --daemonize yes --logfile /dev/null --dir /tmp/slave --port 8081 --repl-diskless-load disabled --rdbcompression no
|
|
sleep 1 # wait for server startup
|
|
./src/valkey-cli -p 8080 save > /dev/null
|
|
VMOUT=$(vmtouch -v /tmp/master/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
CACHE=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE"
|
|
if [ "$(( $CACHE-$CACHE0 ))" -gt "8000000" ]; then exit 1; fi
|
|
echo "test replication doesn't increase cache"
|
|
./src/valkey-cli -p 8081 REPLICAOF 127.0.0.1 8080 > /dev/null
|
|
while [ $(./src/valkey-cli -p 8081 info replication | grep "master_link_status:down") ]; do sleep 1; done;
|
|
sleep 1 # wait for the completion of cache reclaim bio
|
|
VMOUT=$(vmtouch -v /tmp/master/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
VMOUT=$(vmtouch -v /tmp/slave/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
CACHE=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE"
|
|
if [ "$(( $CACHE-$CACHE0 ))" -gt "8000000" ]; then exit 1; fi
|
|
|
|
echo "test reboot doesn't increase cache"
|
|
PID=$(cat /tmp/master/valkey.pid)
|
|
kill -15 $PID
|
|
while [ -x /proc/${PID} ]; do sleep 1; done
|
|
./src/valkey-server --daemonize yes --logfile /dev/null --dir /tmp/master --port 8080
|
|
sleep 1 # wait for server startup
|
|
while [ $(./src/valkey-cli -p 8080 info persistence | grep "loading:1") ]; do sleep 1; done;
|
|
sleep 1 # wait for the completion of cache reclaim bio
|
|
VMOUT=$(vmtouch -v /tmp/master/dump.rdb)
|
|
echo $VMOUT
|
|
grep -q " 0%" <<< $VMOUT
|
|
CACHE=$(grep -w file /sys/fs/cgroup/memory.stat | awk '{print $2}')
|
|
echo "$CACHE"
|
|
if [ "$(( $CACHE-$CACHE0 ))" -gt "8000000" ]; then exit 1; fi
|
|
test-valgrind-test:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !contains(github.event.inputs.skiptests, 'valkey')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make valgrind SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
test-valgrind-misc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !(contains(github.event.inputs.skiptests, 'modules') && contains(github.event.inputs.skiptests, 'unittest'))
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make valgrind all-with-unit-tests SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
./deps/gtest-parallel/gtest-parallel valgrind -- --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.%p.txt ./src/unit/valkey-unit-gtests --valgrind
|
|
if grep -qlE '0x[0-9A-Fa-f]+:' err.*.txt 2>/dev/null; then grep -lE '0x[0-9A-Fa-f]+:' err.*.txt | xargs cat; exit 1; fi
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
valgrind --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.txt ./src/valkey-unit-tests --valgrind
|
|
if grep -q 0x err.txt; then cat err.txt; exit 1; fi
|
|
fi
|
|
test-valgrind-no-malloc-usable-size-test:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !contains(github.event.inputs.skiptests, 'valkey')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make valgrind CFLAGS="-DNO_MALLOC_USABLE_SIZE" SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
test-valgrind-no-malloc-usable-size-misc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'valgrind') && !(contains(github.event.inputs.skiptests, 'modules') && contains(github.event.inputs.skiptests, 'unittest'))
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make valgrind all-with-unit-tests CFLAGS="-DNO_MALLOC_USABLE_SIZE" SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx valgrind -y
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --valgrind --no-latency --verbose --clients 1 --timeout 2400 --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
./deps/gtest-parallel/gtest-parallel valgrind -- --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.%p.txt ./src/unit/valkey-unit-gtests --valgrind
|
|
if grep -qlE '0x[0-9A-Fa-f]+:' err.*.txt 2>/dev/null; then grep -lE '0x[0-9A-Fa-f]+:' err.*.txt | xargs cat; exit 1; fi
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
valgrind --track-origins=yes --suppressions=./src/valgrind.sup --show-reachable=no --show-possibly-lost=no --leak-check=full --log-file=err.txt ./src/valkey-unit-tests --valgrind
|
|
if grep -q 0x err.txt; then cat err.txt; exit 1; fi
|
|
fi
|
|
test-sanitizer-address:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'sanitizer')
|
|
timeout-minutes: 1440
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler: [gcc, clang]
|
|
env:
|
|
CC: ${{ matrix.compiler }}
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests OPT=-O3 SANITIZER=address SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests
|
|
fi
|
|
# Large-memory tests with sanitizers require 10-14GB RAM due to ASAN/UBSAN overhead.
|
|
# GitHub-hosted runners for public repos provide 16GB (ubuntu-latest).
|
|
# These tests are borderline - monitoring memory usage to determine if they can run reliably.
|
|
test-sanitizer-address-large-memory:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'sanitizer') &&
|
|
!contains(github.event.inputs.skiptests, 'large-memory')
|
|
timeout-minutes: 1440
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler: [gcc, clang]
|
|
env:
|
|
CC: ${{ matrix.compiler }}
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- name: Log runner memory
|
|
run: free -h
|
|
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests OPT=-O3 SANITIZER=address SERVER_CFLAGS='-Werror'
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx -y
|
|
- name: Start memory monitor
|
|
run: |
|
|
# Track minimum free memory to detect OOM risk
|
|
(while true; do
|
|
FREE=$(awk '/MemAvailable/ {print $2}' /proc/meminfo)
|
|
echo "$FREE" >> /tmp/memfree.log
|
|
sleep 5
|
|
done) &
|
|
echo $! > /tmp/memmon.pid
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit large_memory=1
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests --large-memory
|
|
fi
|
|
- name: large memory tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs --clients 1 --large-memory --tags large-memory ${{github.event.inputs.test_args}}
|
|
- name: large memory module api tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --clients 1 --large-memory --tags large-memory ${{github.event.inputs.test_args}}
|
|
- name: Memory usage summary
|
|
if: always()
|
|
run: |
|
|
kill $(cat /tmp/memmon.pid) 2>/dev/null || true
|
|
echo "=== Memory Summary ==="
|
|
printf "Total RAM: %.1fGB\n" $(awk '/MemTotal/ {print $2/1024/1024}' /proc/meminfo)
|
|
if [ -f /tmp/memfree.log ]; then
|
|
MIN_FREE=$(sort -n /tmp/memfree.log | head -1)
|
|
printf "Minimum free memory: %.1fGB\n" $(echo "$MIN_FREE/1024/1024" | bc -l)
|
|
fi
|
|
test-sanitizer-undefined:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'sanitizer')
|
|
timeout-minutes: 1440
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler: [gcc, clang]
|
|
env:
|
|
CC: ${{ matrix.compiler }}
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests OPT=-O3 SANITIZER=undefined SERVER_CFLAGS='-Werror' LUA_DEBUG=yes USE_LIBBACKTRACE=yes # we (ab)use this flow to also check Lua C API violations
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit accurate=1
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests --accurate
|
|
fi
|
|
# Large-memory tests with sanitizers require 10-14GB RAM due to ASAN/UBSAN overhead.
|
|
# GitHub-hosted runners for public repos provide 16GB (ubuntu-latest).
|
|
# These tests are borderline - monitoring memory usage to determine if they can run reliably.
|
|
test-sanitizer-undefined-large-memory:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'sanitizer') &&
|
|
!contains(github.event.inputs.skiptests, 'large-memory')
|
|
timeout-minutes: 1440
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler: [gcc, clang]
|
|
env:
|
|
CC: ${{ matrix.compiler }}
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- name: Log runner memory
|
|
run: free -h
|
|
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests OPT=-O3 SANITIZER=undefined SERVER_CFLAGS='-Werror' LUA_DEBUG=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx -y
|
|
- name: Start memory monitor
|
|
run: |
|
|
# Track minimum free memory to detect OOM risk
|
|
(while true; do
|
|
FREE=$(awk '/MemAvailable/ {print $2}' /proc/meminfo)
|
|
echo "$FREE" >> /tmp/memfree.log
|
|
sleep 5
|
|
done) &
|
|
echo $! > /tmp/memmon.pid
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit accurate=1 large_memory=1
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests --accurate --large-memory
|
|
fi
|
|
- name: large memory tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs --clients 1 --large-memory --tags large-memory ${{github.event.inputs.test_args}}
|
|
- name: large memory module api tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --clients 1 --large-memory --tags large-memory ${{github.event.inputs.test_args}}
|
|
- name: Memory usage summary
|
|
if: always()
|
|
run: |
|
|
kill $(cat /tmp/memmon.pid) 2>/dev/null || true
|
|
echo "=== Memory Summary ==="
|
|
printf "Total RAM: %.1fGB\n" $(awk '/MemTotal/ {print $2/1024/1024}' /proc/meminfo)
|
|
if [ -f /tmp/memfree.log ]; then
|
|
MIN_FREE=$(sort -n /tmp/memfree.log | head -1)
|
|
printf "Minimum free memory: %.1fGB\n" $(echo "$MIN_FREE/1024/1024" | bc -l)
|
|
fi
|
|
test-sanitizer-force-defrag:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'sanitizer')
|
|
timeout-minutes: 1440
|
|
strategy:
|
|
fail-fast: false
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: Install gtest
|
|
run: sudo apt-get install pkg-config libgtest-dev libgmock-dev
|
|
- name: make
|
|
run: make all-with-unit-tests OPT=-O3 SANITIZER=address DEBUG_FORCE_DEFRAG=yes USE_JEMALLOC=no SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install tcl8.6 tclx -y
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
- name: unittest
|
|
if: true && !contains(github.event.inputs.skiptests, 'unittest')
|
|
run: |
|
|
if [ -f ./src/unit/valkey-unit-gtests ]; then
|
|
make test-unit
|
|
elif [ -f ./src/valkey-unit-tests ]; then
|
|
./src/valkey-unit-tests
|
|
fi
|
|
test-ubuntu-lttng:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'lttng')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
sudo apt-get update && sudo apt-get install lttng-tools lttng-modules-dkms liblttng-ust-dev
|
|
cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make -j4 USE_LTTNG=yes USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-rpm-distros-jemalloc:
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'rpm-distros')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: test-almalinux8-jemalloc
|
|
container: almalinux:8
|
|
install_epel: true
|
|
- name: test-almalinux9-jemalloc
|
|
container: almalinux:9
|
|
install_epel: true
|
|
- name: test-centosstream9-jemalloc
|
|
container: quay.io/centos/centos:stream9
|
|
install_epel: true
|
|
- name: test-fedoralatest-jemalloc
|
|
container: fedora:latest
|
|
- name: test-fedorarawhide-jemalloc
|
|
container: fedora:rawhide
|
|
name: ${{ matrix.name }}
|
|
runs-on: ubuntu-latest
|
|
container: ${{ matrix.container }}
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install EPEL
|
|
if: matrix.install_epel
|
|
run: dnf -y install epel-release
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
dnf -y install gcc make procps-ng which /usr/bin/kill /usr/bin/awk
|
|
cd libbacktrace && ./configure && make && make install
|
|
- name: make
|
|
run: make -j SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: dnf -y install tcl tcltls
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-rpm-distros-tls-module:
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: test-almalinux8-tls-module
|
|
container: almalinux:8
|
|
install_epel: true
|
|
- name: test-almalinux9-tls-module
|
|
container: almalinux:9
|
|
install_epel: true
|
|
- name: test-centosstream9-tls-module
|
|
container: quay.io/centos/centos:stream9
|
|
install_epel: true
|
|
- name: test-fedoralatest-tls-module
|
|
container: fedora:latest
|
|
- name: test-fedorarawhide-tls-module
|
|
container: fedora:rawhide
|
|
name: ${{ matrix.name }}
|
|
runs-on: ubuntu-latest
|
|
container: ${{ matrix.container }}
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install EPEL
|
|
if: matrix.install_epel
|
|
run: dnf -y install epel-release
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
dnf -y install make gcc openssl-devel openssl procps-ng which /usr/bin/kill /usr/bin/awk
|
|
cd libbacktrace && ./configure && make && make install
|
|
- name: make
|
|
run: make -j BUILD_TLS=module SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
dnf -y install tcl tcltls
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --tls-module --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-rpm-distros-tls-module-no-tls:
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' && github.event.pull_request.base.ref != 'unstable' && github.event.action != 'labeled')) &&
|
|
!contains(github.event.inputs.skipjobs, 'tls')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: test-almalinux8-tls-module-no-tls
|
|
container: almalinux:8
|
|
install_epel: true
|
|
- name: test-almalinux9-tls-module-no-tls
|
|
container: almalinux:9
|
|
install_epel: true
|
|
- name: test-centosstream9-tls-module-no-tls
|
|
container: quay.io/centos/centos:stream9
|
|
install_epel: true
|
|
- name: test-fedoralatest-tls-module-no-tls
|
|
container: fedora:latest
|
|
- name: test-fedorarawhide-tls-module-no-tls
|
|
container: fedora:rawhide
|
|
name: ${{ matrix.name }}
|
|
runs-on: ubuntu-latest
|
|
container: ${{ matrix.container }}
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install EPEL
|
|
if: matrix.install_epel
|
|
run: dnf -y install epel-release
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
dnf -y install make gcc openssl-devel openssl procps-ng which /usr/bin/kill /usr/bin/awk
|
|
cd libbacktrace && ./configure && make && make install
|
|
- name: make
|
|
run: make -j BUILD_TLS=module SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: |
|
|
dnf -y install tcl tcltls
|
|
./utils/gen-test-certs.sh
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: |
|
|
./runtest --accurate --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: |
|
|
CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: |
|
|
./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-macos-latest:
|
|
runs-on: macos-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos') && !(contains(github.event.inputs.skiptests, 'valkey') && contains(github.event.inputs.skiptests, 'modules'))
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --clients 1 --no-latency --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --clients 1 --no-latency --dump-logs ${{github.event.inputs.test_args}}
|
|
test-macos-latest-sentinel:
|
|
runs-on: macos-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos') && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-macos-latest-cluster:
|
|
runs-on: macos-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos') && !contains(github.event.inputs.skiptests, 'cluster')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
build-old-macos-versions:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [macos-14]
|
|
runs-on: ${{ matrix.os }}
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'macos')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
|
|
with:
|
|
xcode-version: latest
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
test-freebsd:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'freebsd')
|
|
timeout-minutes: 1440
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: test
|
|
uses: cross-platform-actions/action@39a2a80642eca0947594ad03e4355dc3d28c617a # v0.32.0
|
|
with:
|
|
operating_system: freebsd
|
|
environment_variables: MAKE
|
|
version: 13.2
|
|
shell: bash
|
|
run: |
|
|
sudo pkg install -y bash gmake lang/tcl86 lang/tclX
|
|
gmake
|
|
./runtest --single unit/keyspace --single unit/auth --single unit/networking --single unit/protocol
|
|
test-alpine-jemalloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'alpine')
|
|
container: alpine:latest
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
apk add build-base git
|
|
cd libbacktrace && ./configure && make && make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: apk add tcl procps tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
test-alpine-libc-malloc:
|
|
runs-on: ubuntu-latest
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'alpine')
|
|
container: alpine:latest
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- name: Build libbacktrace
|
|
run: |
|
|
apk add build-base git
|
|
cd libbacktrace && ./configure && make && make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror' USE_JEMALLOC=no CFLAGS=-DUSE_MALLOC_USABLE_SIZE USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: apk add tcl procps tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest ${{ github.event_name != 'pull_request' && '--accurate' || '' }} --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel ${{github.event.inputs.cluster_test_args}}
|
|
reply-schemas-validator:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 1440
|
|
if: |
|
|
(github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' ||
|
|
(github.event_name == 'schedule' && github.repository == 'valkey-io/valkey') ||
|
|
(github.event_name == 'pull_request' &&
|
|
(github.event.pull_request.base.ref != 'unstable' ||
|
|
contains(github.event.pull_request.labels.*.name, 'run-extra-tests')) &&
|
|
(github.event.action != 'labeled' ||
|
|
(github.event.pull_request.base.ref == 'unstable' && github.event.label.name == 'run-extra-tests'))
|
|
)) &&
|
|
!contains(github.event.inputs.skipjobs, 'reply-schema')
|
|
steps:
|
|
- name: prep
|
|
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call'
|
|
run: |
|
|
echo "GITHUB_REPOSITORY=${{inputs.use_repo || github.event.inputs.use_repo}}" >> $GITHUB_ENV
|
|
echo "GITHUB_HEAD_REF=${{inputs.use_git_ref || github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
|
|
echo "skipjobs: ${{github.event.inputs.skipjobs}}"
|
|
echo "skiptests: ${{github.event.inputs.skiptests}}"
|
|
echo "test_args: ${{github.event.inputs.test_args}}"
|
|
echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ${{ inputs.use_repo || github.event.inputs.use_repo || github.repository }}
|
|
ref: ${{ inputs.use_git_ref || github.event.inputs.use_git_ref || github.ref }}
|
|
- name: Install libbacktrace
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
repository: ianlancetaylor/libbacktrace
|
|
ref: b9e40069c0b47a722286b94eb5231f7f05c08713
|
|
path: libbacktrace
|
|
- run: cd libbacktrace && ./configure && make && sudo make install
|
|
- name: make
|
|
run: make SERVER_CFLAGS='-Werror -DLOG_REQ_RES' USE_LIBBACKTRACE=yes
|
|
- name: testprep
|
|
run: sudo apt-get install tcl8.6 tclx
|
|
- name: test
|
|
if: true && !contains(github.event.inputs.skiptests, 'valkey')
|
|
run: ./runtest --log-req-res --no-latency --dont-clean --force-resp3 --tags -slow --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: module api test
|
|
if: true && !contains(github.event.inputs.skiptests, 'modules')
|
|
run: CFLAGS='-Werror' ./runtest-moduleapi --log-req-res --no-latency --dont-clean --force-resp3 --dont-pre-clean --verbose --dump-logs ${{github.event.inputs.test_args}}
|
|
- name: sentinel tests
|
|
if: true && !contains(github.event.inputs.skiptests, 'sentinel')
|
|
run: ./runtest-sentinel --log-req-res --dont-clean --force-resp3 ${{github.event.inputs.cluster_test_args}}
|
|
- name: Install Python dependencies
|
|
uses: py-actions/py-dependency-install@30aa0023464ed4b5b116bd9fbdab87acf01a484e # v4.1.0
|
|
with:
|
|
path: "./utils/req-res-validator/requirements.txt"
|
|
- name: validator
|
|
run: ./utils/req-res-log-validator.py --verbose --fail-missing-reply-schemas ${{ (!contains(github.event.inputs.skiptests, 'valkey') && !contains(github.event.inputs.skiptests, 'module') && !contains(github.event.inputs.skiptests, 'sentinel') && !contains(github.event.inputs.skiptests, 'cluster')) && (inputs.test_args || github.event.inputs.test_args || '') == '' && (inputs.cluster_test_args || github.event.inputs.cluster_test_args || '') == '' && '--fail-commands-not-all-hit' || '' }}
|
|
notify-about-job-results:
|
|
runs-on: ubuntu-latest
|
|
if: always() && github.event_name == 'schedule' && github.repository == 'valkey-io/valkey'
|
|
needs:
|
|
- test-ubuntu-jemalloc
|
|
- test-ubuntu-arm
|
|
- test-ubuntu-jemalloc-fortify
|
|
- test-ubuntu-libc-malloc
|
|
- test-ubuntu-no-malloc-usable-size
|
|
- test-ubuntu-32bit
|
|
- test-ubuntu-tls
|
|
- test-ubuntu-tls-no-tls
|
|
- test-ubuntu-io-threads
|
|
- test-ubuntu-tls-io-threads
|
|
- test-ubuntu-reclaim-cache
|
|
- test-valgrind-test
|
|
- test-valgrind-misc
|
|
- test-valgrind-no-malloc-usable-size-test
|
|
- test-valgrind-no-malloc-usable-size-misc
|
|
- test-sanitizer-address
|
|
- test-sanitizer-address-large-memory
|
|
- test-sanitizer-undefined
|
|
- test-sanitizer-undefined-large-memory
|
|
- test-sanitizer-force-defrag
|
|
- test-ubuntu-lttng
|
|
- test-rpm-distros-jemalloc
|
|
- test-rpm-distros-tls-module
|
|
- test-rpm-distros-tls-module-no-tls
|
|
- test-macos-latest
|
|
- test-macos-latest-sentinel
|
|
- test-macos-latest-cluster
|
|
- build-old-macos-versions
|
|
- test-freebsd
|
|
- test-alpine-jemalloc
|
|
- test-alpine-libc-malloc
|
|
- reply-schemas-validator
|
|
steps:
|
|
- name: Collect job status
|
|
run: |
|
|
FAILED_JOBS=()
|
|
NEEDS_JSON='${{ toJSON(needs) }}'
|
|
JOBS=($(echo "$NEEDS_JSON" | jq 'keys' | tr -d '[] ,'))
|
|
for JOB in ${JOBS[@]}; do
|
|
JOB_RESULT=$(echo "$NEEDS_JSON" | jq ".[$JOB][\"result\"]" | tr -d '"')
|
|
if [ $JOB_RESULT = "failure" ]; then
|
|
FAILED_JOBS+=($JOB)
|
|
fi
|
|
done
|
|
|
|
if [[ ${#FAILED_JOBS[@]} -ne 0 ]]; then
|
|
echo "FAILED_JOBS=${FAILED_JOBS[@]}" >> $GITHUB_ENV
|
|
echo "STATUS=failure" >> $GITHUB_ENV
|
|
else
|
|
echo "STATUS=success" >> $GITHUB_ENV
|
|
fi
|
|
- name: Notify about results
|
|
uses: ravsamhq/notify-slack-action@042f29088bb3bdbda5b4ff7b4818466a277fa8f7 # v2.5.0
|
|
with:
|
|
status: ${{ env.STATUS }}
|
|
notify_when: "failure"
|
|
notification_title: "Daily test run <${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}|Failure>"
|
|
message_format: ":fire: Tests failed: ${{ env.FAILED_JOBS }}"
|
|
env:
|
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_NOTIFICATIONS_WEBHOOK_URL }}
|