@@ -10,31 +10,187 @@ permissions:
1010 contents : read
1111
1212jobs :
13- test-valgrind-no-malloc-usable-size-misc :
13+ test-ubuntu-latest :
1414 runs-on : ubuntu-latest
15- timeout-minutes : 1440
1615 steps :
17- - name : prep
18- if : github.event_name == 'workflow_dispatch'
16+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
17+ - name : make
18+ # Fail build if there are warnings
19+ # build with TLS just for compilation coverage
20+ run : make -j4 all-with-unit-tests SERVER_CFLAGS='-Werror' BUILD_TLS=yes USE_FAST_FLOAT=yes
21+ - name : install old server for compatibility testing
22+ run : |
23+ cd tests/tmp
24+ wget https://download.valkey.io/releases/valkey-8.1.3-noble-x86_64.tar.gz
25+ tar -xvf valkey-8.1.3-noble-x86_64.tar.gz
26+ - name : test
27+ run : |
28+ sudo apt-get install tcl8.6 tclx
29+ ./runtest --verbose --tags -slow --dump-logs --other-server-path tests/tmp/valkey-8.1.3-noble-x86_64/bin/valkey-server
30+ - name : module api test
31+ run : CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs --other-server-path tests/tmp/valkey-8.1.3-noble-x86_64/bin/valkey-server
32+ - name : validate commands.def up to date
1933 run : |
20- echo "GITHUB_REPOSITORY=${{github.event.inputs.use_repo}}" >> $GITHUB_ENV
21- echo "GITHUB_HEAD_REF=${{github.event.inputs.use_git_ref}}" >> $GITHUB_ENV
22- echo "skipjobs: ${{github.event.inputs.skipjobs}}"
23- echo "skiptests: ${{github.event.inputs.skiptests}}"
24- echo "test_args: ${{github.event.inputs.test_args}}"
25- echo "cluster_test_args: ${{github.event.inputs.cluster_test_args}}"
34+ touch src/commands/ping.json
35+ make commands.def
36+ dirty="$(git diff)"
37+ if [[ ! -z "$dirty" ]]; then echo "$dirty"; exit 1; fi
38+ - name : unit tests
39+ run : |
40+ ./src/valkey-unit-tests
41+
42+ test-ubuntu-latest-cmake :
43+ runs-on : ubuntu-latest
44+ steps :
45+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
46+ - name : cmake and make
47+ run : |
48+ sudo apt-get install -y cmake libssl-dev
49+ mkdir -p build-release
50+ cd build-release
51+ cmake -DCMAKE_BUILD_TYPE=Release .. -DBUILD_TLS=yes -DBUILD_UNIT_TESTS=yes
52+ make -j$(nproc)
53+ - name : test
54+ run : |
55+ sudo apt-get install -y tcl8.6 tclx
56+ ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-server
57+ ln -sf $(pwd)/build-release/bin/valkey-cli $(pwd)/src/valkey-cli
58+ ln -sf $(pwd)/build-release/bin/valkey-benchmark $(pwd)/src/valkey-benchmark
59+ ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-check-aof
60+ ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-check-rdb
61+ ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-sentinel
62+ ./runtest --verbose --tags -slow --dump-logs
63+ - name : unit tests
64+ run : |
65+ ./build-release/bin/valkey-unit-tests
66+
67+ test-sanitizer-address :
68+ runs-on : ubuntu-latest
69+ steps :
2670 - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
27- with :
28- repository : ${{ env.GITHUB_REPOSITORY }}
29- ref : ${{ env.GITHUB_HEAD_REF }}
3071 - name : make
31- run : make valgrind all-with-unit-tests CFLAGS="-DNO_MALLOC_USABLE_SIZE" SERVER_CFLAGS='-Werror'
72+ # build with TLS module just for compilation coverage
73+ run : make -j4 all-with-unit-tests SANITIZER=address SERVER_CFLAGS='-Werror' BUILD_TLS=module
3274 - name : testprep
75+ run : sudo apt-get install tcl8.6 tclx -y
76+ - name : test
77+ run : ./runtest --verbose --tags -slow --dump-logs
78+ - name : module api test
79+ run : CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs
80+ - name : unit tests
81+ run : ./src/valkey-unit-tests
82+
83+ test-rdma :
84+ runs-on : ubuntu-latest
85+ steps :
86+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
87+ - name : prepare-development-libraries
88+ run : sudo apt-get install librdmacm-dev libibverbs-dev
89+ - name : make-rdma-module
90+ run : make -j4 BUILD_RDMA=module
91+ - name : make-rdma-builtin
92+ run : |
93+ make distclean
94+ make -j4 BUILD_RDMA=yes
95+ - name : clone-rxe-kmod
96+ run : |
97+ mkdir -p tests/rdma/rxe
98+ git clone https://github.com/pizhenwei/rxe.git tests/rdma/rxe
99+ make -C tests/rdma/rxe
100+ - name : clear-kernel-log
101+ run : sudo dmesg -c > /dev/null
102+ - name : test
103+ run : sudo ./runtest-rdma --install-rxe
104+ - name : show-kernel-log
105+ run : sudo dmesg -c
106+
107+ build-debian-old :
108+ runs-on : ubuntu-latest
109+ container : debian:bullseye
110+ steps :
111+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
112+ - name : make
113+ run : |
114+ apt-get update && apt-get install -y build-essential
115+ make -j4 SERVER_CFLAGS='-Werror'
116+
117+ build-macos-latest :
118+ runs-on : macos-latest
119+ steps :
120+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
121+ - name : make
122+ # Build with additional upcoming features
123+ run : make -j3 all-with-unit-tests SERVER_CFLAGS='-Werror' USE_FAST_FLOAT=yes
124+
125+ build-32bit :
126+ runs-on : ubuntu-latest
127+ steps :
128+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
129+ - name : make
130+ # Fast float requires C++ 32-bit libraries to compile on 64-bit ubuntu
131+ # machine i.e. "-cross" suffixed version. Cross-compiling c++ to 32-bit
132+ # also requires multilib support for g++ compiler i.e. "-multilib"
133+ # suffixed version of g++. g++-multilib generally includes libstdc++.
134+ # *cross version as well, but it is also added explicitly just in case.
33135 run : |
34136 sudo apt-get update
35- sudo apt-get install tcl8.6 tclx valgrind -y
36- - name : unittest
37- if : true && !contains(github.event.inputs.skiptests, 'unittest')
137+ sudo apt-get install libc6-dev-i386 libstdc++-11-dev-i386-cross gcc-multilib g++-multilib
138+ make -j4 SERVER_CFLAGS='-Werror' 32bit USE_FAST_FLOAT=yes
139+ - name : unit tests
140+ run : |
141+ ./src/valkey-unit-tests
142+
143+ build-libc-malloc :
144+ runs-on : ubuntu-latest
145+ steps :
146+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
147+ - name : make
148+ run : make -j4 SERVER_CFLAGS='-Werror' MALLOC=libc USE_FAST_FLOAT=yes
149+
150+ build-almalinux8-jemalloc :
151+ runs-on : ubuntu-latest
152+ container : almalinux:8
153+ steps :
154+ - uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
155+
156+ - name : make
157+ run : |
158+ dnf -y install epel-release gcc gcc-c++ make procps-ng which
159+ make -j4 SERVER_CFLAGS='-Werror' USE_FAST_FLOAT=yes
160+
161+ format-yaml :
162+ runs-on : ubuntu-latest
163+ steps :
164+ - name : Checkout code
165+ uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
166+
167+ - name : Set up Go
168+ uses : actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
169+ with :
170+ go-version : " 1.22.4"
171+
172+ - name : Setup YAML formatter
173+ run : |
174+ go install github.com/google/yamlfmt/cmd/yamlfmt@latest
175+
176+ - name : Run yamlfmt
177+ id : yamlfmt
178+ run : |
179+ yamlfmt -lint -conf .config/format.yml .
180+ # Capture the diff output
181+ DIFF=$(git diff)
182+ if [ ! -z "$DIFF" ]; then
183+ # Encode the diff in Base64 to ensure it's handled as a single line
184+ ENCODED_DIFF=$(echo "$DIFF" | base64 -w 0)
185+ echo "diff=$ENCODED_DIFF" >> $GITHUB_OUTPUT
186+ fi
187+ shell : bash
188+
189+ - name : Check for formatting changes
190+ if : ${{ steps.yamlfmt.outputs.diff }}
38191 run : |
39- 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
40- if grep -q 0x err.txt; then cat err.txt; exit 1; fi
192+ echo "ERROR: YAML file is not formatted properly. Here is the diff: "
193+ # Decode the Base64 diff to display it
194+ echo "${{ steps.clang-format.outputs.diff }}" | base64 --decode
195+ exit 1
196+ shell : bash
0 commit comments