CI: user newer OS versions in CI workflow #6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2024 Rainer Gerhards and Others | ||
# | ||
# https://github.com/rsyslog/rsyslog-pkg-ubuntu | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# https://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# References: | ||
# | ||
# https://help.github.com/en/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#github-actions-notification-options | ||
# https://github.com/settings/notifications | ||
# https://software.opensuse.org//download.html?project=home%3Argerhards&package=rsyslog | ||
--- | ||
name: check | ||
on: | ||
pull_request: | ||
jobs: | ||
CI: | ||
runs-on: ubuntu-20.04 | ||
timeout-minutes: 50 | ||
strategy: | ||
# When set to true, cancel all in-progress jobs if any matrix job fails. | ||
fail-fast: false | ||
matrix: | ||
config: [centos_7, centos_8, debian_10, debian_11, | ||
fedora_35, fedora_36, | ||
ubuntu_18, ubuntu_20, ubuntu_22, | ||
ubuntu_24_san, ubuntu_24_tsan, | ||
ubuntu_22_san, ubuntu_22_tsan, ubuntu_22_distcheck, ubuntu_22_codecov, | ||
kafka_codecov, elasticsearch] | ||
steps: | ||
- name: git checkout project | ||
uses: actions/checkout@v1 | ||
- name: run container CI pipeline | ||
run: | | ||
chmod -R go+rw . | ||
export RSYSLOG_CONTAINER_UID="" # use default | ||
export RSYSLOG_STATSURL='http://build.rsyslog.com/testbench-failedtest.php' | ||
export CFLAGS='-g' | ||
export CC='gcc' | ||
export USE_AUTO_DEBUG='off' | ||
export CI_MAKE_OPT='-j20' | ||
export CI_MAKE_CHECK_OPT='-j6' | ||
export CI_CHECK_CMD='check' | ||
case "${{ matrix.config }}" in | ||
'centos_7') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_centos:7' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA='--disable-elasticsearch-tests --disable-kafka-tests --disable-snmp-tests' | ||
export CI_VALGRIND_SUPPRESSIONS='centos7.supp' | ||
;; | ||
'centos_8') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_centos:8' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests --disable-kafka-tests \ | ||
--disable-snmp-tests --enable-imdtls --enable-omdtls" | ||
;; | ||
'debian_10') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_debian:10' | ||
export CI_VALGRIND_SUPPRESSIONS='centos7.supp' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests --disable-kafka-tests \ | ||
--without-valgrind-testbench" | ||
;; | ||
'debian_11') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_debian:11' | ||
export CI_VALGRIND_SUPPRESSIONS='centos7.supp' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests --disable-kafka-tests \ | ||
--without-valgrind-testbench --enable-imdtls --enable-omdtls" | ||
;; | ||
'fedora_35') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_fedora:35' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests \ | ||
--disable-kafka-tests --enable-debug" | ||
;; | ||
'fedora_36') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_fedora:36' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests \ | ||
--disable-kafka-tests --enable-debug --enable-imdtls --enable-omdtls" | ||
;; | ||
'ubuntu_18') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:18.04' | ||
;; | ||
'ubuntu_20') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:20.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu20.04.supp" | ||
;; | ||
'tumbleweed') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_suse:tumbleweed' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests --disable-kafka-tests" | ||
;; | ||
'ubuntu_22') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--enable-imdtls --enable-omdtls" | ||
;; | ||
'ubuntu_22_distcheck') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" | ||
export CI_CHECK_CMD='distcheck' | ||
export ABORT_ALL_ON_TEST_FAIL='YES' | ||
# DO WE NEED THIS? export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-omkafka --disable-imkafka --disable-kafka-tests" | ||
;; | ||
'ubuntu_22_san') | ||
export CI_SANITIZE_BLACKLIST='tests/asan.supp' | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04' | ||
export CC='clang' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests \ | ||
--disable-libfaketime --without-valgrind-testbench --disable-valgrind \ | ||
--disable-kafka-tests --enable-imdtls --enable-omdtls" | ||
export CFLAGS="-fstack-protector -D_FORTIFY_SOURCE=2 \ | ||
-fsanitize=address,undefined,nullability,unsigned-integer-overflow \ | ||
-fno-sanitize-recover=undefined,nullability,unsigned-integer-overflow \ | ||
-g -O3 -fno-omit-frame-pointer -fno-color-diagnostics" | ||
export LSAN_OPTIONS='detect_leaks=0' | ||
export UBSAN_OPTIONS='print_stacktrace=1' | ||
;; | ||
'ubuntu_22_tsan') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" | ||
export CI_SANITIZE_BLACKLIST='tests/tsan.supp' | ||
export CC='clang' | ||
# impstats has known and OK races | ||
# mmpstrucdata TEMPORARILY disabled because of a threading hang on shutdown | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests --enable-imfile-tests \ | ||
--disable-impstats --disable-kafka-tests --disable-mmpstrucdata \ | ||
--disable-clickhouse --disable-clickhouse-tests --disable-kafka-tests \ | ||
--disable-libfaketime --without-valgrind-testbench --disable-valgrind" | ||
export CFLAGS="-g -fstack-protector -D_FORTIFY_SOURCE=2 -fsanitize=thread \ | ||
-O0 -fno-omit-frame-pointer -fno-color-diagnostics" | ||
# note: we need pathes in container, thus /rsyslog vs. $(pwd) in TSAN_OPTIONS | ||
export TSAN_OPTIONS="halt_on_error=1 suppressions=/rsyslog/tests/tsan-rt.supp" | ||
export ABORT_ALL_ON_TEST_FAIL='YES' | ||
;; | ||
'ubuntu_22_codecov') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" | ||
export CFLAGS='-g -O0 -coverage' | ||
export LDFLAGS='-lgcov' | ||
export USE_AUTO_DEBUG='off' | ||
export CI_CODECOV_TOKEN='9958eda4-50ae-4f2c-b6b6-567d3e6a2e81' | ||
export ABORT_ALL_ON_TEST_FAIL='NO' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-kafka-tests --disable-imkafka \ | ||
--disable-omkafka --enable-debug --disable-elasticsearch \ | ||
--disable-elasticsearch-tests" | ||
;; | ||
'ubuntu_24_san') | ||
export CI_SANITIZE_BLACKLIST='tests/asan.supp' | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:24.04' | ||
export CC='clang' | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests \ | ||
--disable-libfaketime --without-valgrind-testbench --disable-valgrind \ | ||
--disable-kafka-tests --enable-imdtls --enable-omdtls --disable-ommongodb" | ||
export CFLAGS="-std=c11 -fstack-protector -D_FORTIFY_SOURCE=2 \ | ||
-fsanitize=address,undefined,nullability,unsigned-integer-overflow \ | ||
-fno-sanitize-recover=undefined,nullability,unsigned-integer-overflow \ | ||
-g -O3 -fno-omit-frame-pointer -fno-color-diagnostics" | ||
export LSAN_OPTIONS='detect_leaks=0' | ||
export UBSAN_OPTIONS='print_stacktrace=1' | ||
;; | ||
'ubuntu_24_tsan') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:24.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" | ||
export CI_SANITIZE_BLACKLIST='tests/tsan.supp' | ||
export CC='clang' | ||
# impstats has known and OK races | ||
# mmpstrucdata TEMPORARILY disabled because of a threading hang on shutdown | ||
export RSYSLOG_CONFIGURE_OPTIONS_EXTRA="--disable-elasticsearch-tests --enable-imfile-tests \ | ||
--disable-impstats --disable-kafka-tests --disable-mmpstrucdata \ | ||
--disable-clickhouse --disable-clickhouse-tests --disable-kafka-tests \ | ||
--disable-libfaketime --without-valgrind-testbench --disable-valgrind \ | ||
--disable-ommongodb" | ||
export CFLAGS="-std=c11 -g -fstack-protector -D_FORTIFY_SOURCE=2 -fsanitize=thread \ | ||
-O0 -fno-omit-frame-pointer -fno-color-diagnostics" | ||
# note: we need pathes in container, thus /rsyslog vs. $(pwd) in TSAN_OPTIONS | ||
export TSAN_OPTIONS="halt_on_error=1 suppressions=/rsyslog/tests/tsan-rt.supp" | ||
export ABORT_ALL_ON_TEST_FAIL='YES' | ||
;; | ||
'kafka_codecov') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" | ||
export CFLAGS='-g -O0 -coverage' | ||
export LDFLAGS='-lgcov' | ||
export CI_CODECOV_TOKEN='9958eda4-50ae-4f2c-b6b6-567d3e6a2e81' | ||
export ABORT_ALL_ON_TEST_FAIL='NO' | ||
# Note: we completely override the container configure options here! | ||
export RSYSLOG_CONFIGURE_OPTIONS_OVERRIDE="--enable-testbench --enable-omstdout \ | ||
--enable-imdiag --disable-impstats --enable-imfile --disable-imfile-tests \ | ||
--disable-fmhttp --enable-valgrind --enable-valgrind-testbench \ | ||
--disable-helgrind --disable-default-tests --enable-kafka-tests \ | ||
--enable-omkafka --enable-gnutls --disable-gnutls-tests --enable-imkafka" | ||
;; | ||
'elasticsearch') | ||
export RSYSLOG_DEV_CONTAINER='rsyslog/rsyslog_dev_base_ubuntu:22.04' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" | ||
export CI_CODECOV_TOKEN='9958eda4-50ae-4f2c-b6b6-567d3e6a2e81' | ||
export CI_MAKE_CHECK_OPT='-j1' | ||
export ABORT_ALL_ON_TEST_FAIL='NO' | ||
export RSYSLOG_CONFIGURE_OPTIONS_OVERRIDE="--enable-testbench --enable-omstdout \ | ||
--enable-imdiag --enable-impstats --enable-imfile --disable-imfile-tests \ | ||
--disable-fmhttp --enable-valgrind --disable-default-tests \ | ||
--enable-elasticsearch-tests --enable-elasticsearch" | ||
export CI_MAKE_OPT='-j20' | ||
export CI_MAKE_CHECK_OPT='-j8' | ||
export CI_CHECK_CMD='check' | ||
export CI_VALGRIND_SUPPRESSIONS="ubuntu22.04.supp" # they are still valid | ||
devtools/devcontainer.sh --rm devtools/run-ci.sh | ||
;; | ||
esac | ||
devtools/devcontainer.sh --rm devtools/run-ci.sh | ||
- name: show error logs (if we errored) | ||
if: ${{ failure() || cancelled() }} | ||
run: | | ||
devtools/gather-check-logs.sh | ||
cat failed-tests.log |