agora inbox for [email protected]
help / color / mirror / Atom feedFrom: Andres Freund <[email protected]>
Subject: [PATCH v1] ci: Introduce a SanityCheck task that other tasks depend on
Date: Sun, 2 Oct 2022 11:26:19 -0700
---
.cirrus.yml | 94 +++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 87 insertions(+), 7 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
index 531cfe96f65..87dc7025eaf 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -55,6 +55,83 @@ on_failure_meson: &on_failure_meson
type: text/plain
+# To avoid unnecessarily spinning up a lot of VMs / containers for entirely
+# broken commits, have a very minimal test that all others depend on.
+task:
+ name: SanityCheck
+
+ # If a specific OS is requested, don't run the sanity check. This shortens
+ # push-wait-for-ci cycles a bit when debugging operating system specific
+ # failures.
+ only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*'
+
+ env:
+ CPUS: 4
+ BUILD_JOBS: 8
+ TEST_JOBS: 8
+ CCACHE_DIR: ${CIRRUS_WORKING_DIR}/ccache_dir
+ # no options enabled, should be small
+ CCACHE_MAXSIZE: "150M"
+
+ container:
+ image: $CONTAINER_REPO/linux_debian_bullseye_ci:latest
+ cpu: $CPUS
+
+ ccache_cache:
+ folder: $CCACHE_DIR
+
+ create_user_script: |
+ useradd -m postgres
+ chown -R postgres:postgres .
+ mkdir -p ${CCACHE_DIR}
+ chown -R postgres:postgres ${CCACHE_DIR}
+ echo '* - memlock 134217728' > /etc/security/limits.d/postgres.conf
+ su postgres -c "ulimit -l -H && ulimit -l -S"
+ # Can't change container's kernel.core_pattern. Postgres user can't write
+ # to / normally. Change that.
+ chown root:postgres /
+ chmod g+rwx /
+
+ configure_script: |
+ su postgres <<-EOF
+ meson setup \
+ --buildtype=debug \
+ --auto-features=disabled \
+ -Dtap_tests=enabled \
+ build
+ EOF
+ build_script: |
+ su postgres <<-EOF
+ set -e
+ ccache -s
+ ccache -z
+ ninja -C build -j${BUILD_JOBS}
+ ccache -s
+ EOF
+ upload_caches: ccache
+
+ # Run a minimal set of tests. The main regression tests take too long for
+ # this purpose. I chose a random pg_regress style test, and a tap test that
+ # exercises both a frontend binary and the backend.
+ test_minimal_script: |
+ su postgres <<-EOF
+ ulimit -c unlimited
+ meson test $MTEST_ARGS --num-processes ${TEST_JOBS} \
+ tmp_install cube/regress pg_ctl/001_start_stop
+ EOF
+
+ on_failure:
+ <<: *on_failure_meson
+ cores_script: |
+ shopt -s nullglob
+ mkdir -m 770 /tmp/cores
+ ls -l /
+ if [ -n "$(echo /core*)" ] ; then
+ mv /core* /tmp/cores/
+ src/tools/ci/cores_backtrace.sh linux /tmp/cores
+ fi
+
+
task:
name: FreeBSD - 13 - Meson
@@ -69,6 +146,7 @@ task:
CPPFLAGS: -DRELCACHE_FORCE_RELEASE -DCOPY_PARSE_PLAN_TREES -DWRITE_READ_PARSE_PLAN_TREES -DRAW_EXPRESSION_COVERAGE_TEST
CFLAGS: -Og -ggdb
+ depends_on: SanityCheck
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*freebsd.*'
compute_engine_instance:
@@ -170,6 +248,7 @@ task:
LINUX_CONFIGURE_FEATURES: *LINUX_CONFIGURE_FEATURES
LINUX_MESON_FEATURES: *LINUX_MESON_FEATURES
+ depends_on: SanityCheck
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*linux.*'
compute_engine_instance:
@@ -311,6 +390,7 @@ task:
CFLAGS: -Og -ggdb
CXXFLAGS: -Og -ggdb
+ depends_on: SanityCheck
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*(macos|darwin|osx).*'
osx_instance:
@@ -428,6 +508,7 @@ task:
# 0x8001 is SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX
CIRRUS_WINDOWS_ERROR_MODE: 0x8001
+ depends_on: SanityCheck
only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*windows.*'
windows_container:
@@ -467,9 +548,12 @@ task:
task:
name: CompilerWarnings
- # To limit unnecessary work only run this once the normal linux test succeeds
- depends_on:
- - Linux - Debian Bullseye - Meson
+ # To limit unnecessary work only run this once the SanityCheck
+ # succeeds. This is particularly important for this task as we intentionally
+ # use always: to continue after failures. Task that did not run count as a
+ # success, so we need to recheck SanityChecks's condition here ...
+ depends_on: SanityCheck
+ only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*'
env:
CPUS: 4
@@ -483,10 +567,6 @@ task:
LINUX_CONFIGURE_FEATURES: *LINUX_CONFIGURE_FEATURES
LINUX_MESON_FEATURES: *LINUX_MESON_FEATURES
- # task that did not run, count as a success, so we need to recheck Linux'
- # condition here ...
- only_if: $CIRRUS_CHANGE_MESSAGE !=~ '.*\nci-os-only:.*' || $CIRRUS_CHANGE_MESSAGE =~ '.*\nci-os-only:[^\n]*linux.*'
-
container:
image: $CONTAINER_REPO/linux_debian_bullseye_ci:latest
cpu: $CPUS
--
2.37.3.542.gdd3f6c4cae
--ffcewxm2a3kvfm7l--
view thread (2+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCH v1] ci: Introduce a SanityCheck task that other tasks depend on
In-Reply-To: <no-message-id-110421@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox