mirror of
https://github.com/timescale/timescaledb.git
synced 2025-06-01 18:56:47 +08:00
197 lines
6.7 KiB
YAML
197 lines
6.7 KiB
YAML
name: Regression Linux i386
|
|
"on":
|
|
push:
|
|
branches:
|
|
- main
|
|
- prerelease_test
|
|
paths-ignore:
|
|
- '**.md'
|
|
- 'LICENSE*'
|
|
- NOTICE
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
- 'LICENSE*'
|
|
- NOTICE
|
|
jobs:
|
|
config:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
pg_latest: ${{ steps.setter.outputs.PG_LATEST }}
|
|
pg15_latest: ${{ steps.setter.outputs.PG15_LATEST }}
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v3
|
|
- name: Read configuration
|
|
id: setter
|
|
run: python .github/gh_config_reader.py
|
|
|
|
regress_linux_32bit:
|
|
name: PG${{ matrix.pg }} ${{ matrix.build_type }} linux-i386
|
|
runs-on: ubuntu-latest
|
|
needs: config
|
|
container:
|
|
image: i386/debian:buster-slim
|
|
options: --privileged --ulimit core=-1
|
|
env:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
IGNORES: "append-* debug_notice transparent_decompression-*
|
|
transparent_decompress_chunk-* pg_dump
|
|
dist_move_chunk dist_param dist_insert remote_txn telemetry"
|
|
SKIPS: chunk_adaptive histogram_test
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
pg: ${{ fromJson(needs.config.outputs.pg_latest) }}
|
|
build_type: [ Debug ]
|
|
include:
|
|
- pg: ${{ fromJson(needs.config.outputs.pg15_latest) }}
|
|
ignores_version: partialize_finalize
|
|
|
|
steps:
|
|
|
|
- name: Install build dependencies
|
|
run: |
|
|
PG_MAJOR=$(echo "${{ matrix.pg }}" | sed -e 's![.].*!!')
|
|
echo '/tmp/core.%h.%e.%t' > /proc/sys/kernel/core_pattern
|
|
apt-get update
|
|
apt-get install -y gnupg postgresql-common
|
|
yes | /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
|
|
apt-get install -y gcc make cmake libssl-dev libkrb5-dev libipc-run-perl \
|
|
libtest-most-perl sudo gdb git wget gawk
|
|
apt-get install -y postgresql-${PG_MAJOR} postgresql-server-dev-${PG_MAJOR}
|
|
|
|
- name: Build pg_isolation_regress
|
|
run: |
|
|
PG_MAJOR=$(echo "${{ matrix.pg }}" | sed -e 's![.].*!!')
|
|
wget -q -O postgresql.tar.bz2 \
|
|
https://ftp.postgresql.org/pub/source/v${{ matrix.pg }}/postgresql-${{ matrix.pg }}.tar.bz2
|
|
mkdir -p ~/postgresql
|
|
tar --extract --file postgresql.tar.bz2 --directory ~/postgresql --strip-components 1
|
|
cd ~/postgresql
|
|
./configure --prefix=/usr/lib/postgresql/${PG_MAJOR} --enable-debug \
|
|
--enable-cassert --with-openssl --without-readline --without-zlib
|
|
make -C src/test/isolation
|
|
chown -R postgres:postgres ~/postgresql
|
|
|
|
- name: Checkout TimescaleDB
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Build TimescaleDB
|
|
run: |
|
|
# The owner of the checkout directory and the files do not match. Add the directory to
|
|
# Git's "safe.directory" setting. Otherwise git would complain about
|
|
# 'detected dubious ownership in repository'
|
|
git config --global --add safe.directory $(pwd)
|
|
./bootstrap -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" -DPG_SOURCE_DIR=~/postgresql -DREQUIRE_ALL_TESTS=ON
|
|
make -C build install
|
|
chown -R postgres:postgres .
|
|
|
|
- name: make installcheck
|
|
id: installcheck
|
|
shell: bash
|
|
run: |
|
|
set -o pipefail
|
|
export LANG=C.UTF-8
|
|
sudo -u postgres make -k -C build installcheck IGNORES="${IGNORES} \
|
|
${{ matrix.ignores_version }}" SKIPS="${SKIPS}" | tee installcheck.log
|
|
|
|
- name: Show regression diffs
|
|
if: always()
|
|
id: collectlogs
|
|
shell: bash
|
|
run: |
|
|
find . -name regression.diffs -exec cat {} + > regression.log
|
|
find . -name postmaster.log -exec cat {} + > postgres.log
|
|
if [[ -s regression.log ]]; then echo "regression_diff=true" >>$GITHUB_OUTPUT; fi
|
|
grep -e 'FAILED' -e 'failed (ignored)' installcheck.log || true
|
|
cat regression.log
|
|
|
|
- name: Coredumps
|
|
if: always()
|
|
id: coredumps
|
|
shell: bash
|
|
run: |
|
|
# wait in case there are in-progress coredumps
|
|
sleep 10
|
|
if compgen -G "/tmp/core*" > /dev/null; then
|
|
PG_MAJOR=$(echo "${{ matrix.pg }}" | sed -e 's![.].*!!')
|
|
apt-get install postgresql-${PG_MAJOR}-dbgsym >/dev/null
|
|
for file in /tmp/core*
|
|
do
|
|
gdb /usr/lib/postgresql/${PG_MAJOR}/bin/postgres -c $file <<<"
|
|
set verbose on
|
|
set trace-commands on
|
|
show debug-file-directory
|
|
printf "'"'"query = '%s'\n\n"'"'", debug_query_string
|
|
frame function ExceptionalCondition
|
|
printf "'"'"condition = '%s'\n"'"'", conditionName
|
|
up 1
|
|
l
|
|
info args
|
|
info locals
|
|
bt full
|
|
" | tee -a stacktrace.log
|
|
done
|
|
echo "coredumps=true" >>$GITHUB_OUTPUT
|
|
exit 1
|
|
fi
|
|
|
|
- name: Save regression diffs
|
|
if: always() && steps.collectlogs.outputs.regression_diff == 'true'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Regression diff linux-i386 PG${{ matrix.pg }}
|
|
path: |
|
|
regression.log
|
|
installcheck.log
|
|
|
|
- name: Save stacktraces
|
|
if: always() && steps.coredumps.outputs.coredumps == 'true'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Stacktraces linux-i386 PG${{ matrix.pg }}
|
|
path: stacktrace.log
|
|
|
|
- name: Save PostgreSQL log
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: PostgreSQL log linux-i386 PG${{ matrix.pg }}
|
|
path: postgres.log
|
|
|
|
- name: Save TAP test logs
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: TAP test logs ${{ matrix.os }} ${{ matrix.name }} ${{ matrix.pg }}
|
|
path: |
|
|
build/test/tmp_check/log
|
|
build/tsl/test/tmp_check/log
|
|
|
|
- name: Upload test results to the database
|
|
if: always()
|
|
shell: bash
|
|
env:
|
|
# GitHub Actions allow you neither to use the env context for the job name,
|
|
# nor to access the job name from the step context, so we have to
|
|
# duplicate it to work around this nonsense.
|
|
JOB_NAME: PG${{ matrix.pg }} ${{ matrix.build_type }} linux-i386
|
|
CI_STATS_DB: ${{ secrets.CI_STATS_DB }}
|
|
GITHUB_EVENT_NAME: ${{ github.event_name }}
|
|
GITHUB_REF_NAME: ${{ github.ref_name }}
|
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
GITHUB_RUN_ATTEMPT: ${{ github.run_attempt }}
|
|
GITHUB_RUN_ID: ${{ github.run_id }}
|
|
GITHUB_RUN_NUMBER: ${{ github.run_number }}
|
|
JOB_STATUS: ${{ job.status }}
|
|
run: |
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]] ;
|
|
then
|
|
GITHUB_PR_NUMBER="${{ github.event.number }}"
|
|
else
|
|
GITHUB_PR_NUMBER=0
|
|
fi
|
|
export GITHUB_PR_NUMBER
|
|
scripts/upload_ci_stats.sh
|