mirror of
https://github.com/postgrespro/pg_probackup.git
synced 2025-03-18 21:28:07 +02:00
try travis without docker
This commit is contained in:
parent
f2f47f7734
commit
0f7e01b7f3
55
.travis.yml
55
.travis.yml
@ -1,23 +1,60 @@
|
||||
os: linux
|
||||
|
||||
dist: bionic
|
||||
dist: jammy
|
||||
|
||||
language: c
|
||||
|
||||
services:
|
||||
- docker
|
||||
cache: ccache
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- sudo
|
||||
- libc-dev
|
||||
- bison
|
||||
- flex
|
||||
- libreadline-dev
|
||||
- zlib1g-dev
|
||||
- libzstd-dev
|
||||
- libssl-dev
|
||||
- perl
|
||||
- libperl-dev
|
||||
- libdbi-perl
|
||||
- cpanminus
|
||||
- locales
|
||||
- python3
|
||||
- python3-dev
|
||||
- python3-pip
|
||||
- libicu-dev
|
||||
- libgss-dev
|
||||
- libkrb5-dev
|
||||
- libxml2-dev
|
||||
- libxslt1-dev
|
||||
- libldap2-dev
|
||||
- tcl-dev
|
||||
- diffutils
|
||||
- gdb
|
||||
- gettext
|
||||
- lcov
|
||||
- openssh-client
|
||||
- openssh-server
|
||||
- libipc-run-perl
|
||||
- libtime-hires-perl
|
||||
- libtimedate-perl
|
||||
- libdbd-pg-perl
|
||||
|
||||
before_install:
|
||||
- cp travis/* .
|
||||
- sudo travis/before-install.sh
|
||||
|
||||
install:
|
||||
- ./make_dockerfile.sh
|
||||
- docker-compose build
|
||||
- travis/install.sh
|
||||
|
||||
before_script:
|
||||
- sudo travis/before-script.sh
|
||||
- travis/before-script-user.sh
|
||||
|
||||
script:
|
||||
- docker-compose run tests
|
||||
# - docker-compose run $(bash <(curl -s https://codecov.io/env)) tests
|
||||
# - docker run -v $(pwd):/tests --rm centos:7 /tests/travis/backup_restore.sh
|
||||
- travis/script.sh
|
||||
|
||||
notifications:
|
||||
email:
|
||||
|
@ -1,30 +0,0 @@
|
||||
FROM ololobus/postgres-dev:stretch
|
||||
|
||||
USER root
|
||||
RUN apt-get update
|
||||
RUN apt-get -yq install python3 python3-pip
|
||||
|
||||
# RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
|
||||
# RUN python2 get-pip.py
|
||||
RUN python3 -m pip install virtualenv
|
||||
|
||||
# Environment
|
||||
ENV PG_MAJOR=${PG_VERSION} PG_BRANCH=${PG_BRANCH}
|
||||
ENV PTRACK_PATCH_PG_BRANCH=${PTRACK_PATCH_PG_BRANCH}
|
||||
ENV PGPROBACKUP_GDB=${PGPROBACKUP_GDB}
|
||||
ENV LANG=C.UTF-8 PGHOME=/pg/testdir/pgbin
|
||||
|
||||
# Make directories
|
||||
RUN mkdir -p /pg/testdir
|
||||
|
||||
COPY run_tests.sh /run.sh
|
||||
RUN chmod 755 /run.sh
|
||||
|
||||
COPY . /pg/testdir
|
||||
WORKDIR /pg/testdir
|
||||
|
||||
# Grant privileges
|
||||
RUN chown -R postgres:postgres /pg/testdir
|
||||
|
||||
USER postgres
|
||||
ENTRYPOINT MODE=${MODE} /run.sh
|
@ -1,66 +0,0 @@
|
||||
#!/bin/sh -ex
|
||||
|
||||
# vars
|
||||
export PGVERSION=9.5.4
|
||||
export PATH=$PATH:/usr/pgsql-9.5/bin
|
||||
export PGUSER=pgbench
|
||||
export PGDATABASE=pgbench
|
||||
export PGDATA=/var/lib/pgsql/9.5/data
|
||||
export BACKUP_PATH=/backups
|
||||
export ARCLOG_PATH=$BACKUP_PATH/backup/pg_xlog
|
||||
export PGDATA2=/var/lib/pgsql/9.5/data2
|
||||
export PGBENCH_SCALE=100
|
||||
export PGBENCH_TIME=60
|
||||
|
||||
# prepare directory
|
||||
cp -a /tests /build
|
||||
pushd /build
|
||||
|
||||
# download postgresql
|
||||
yum install -y wget
|
||||
wget -k https://ftp.postgresql.org/pub/source/v$PGVERSION/postgresql-$PGVERSION.tar.gz -O postgresql.tar.gz
|
||||
tar xf postgresql.tar.gz
|
||||
|
||||
# install pg_probackup
|
||||
yum install -y https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
|
||||
yum install -y postgresql95-devel make gcc readline-devel openssl-devel pam-devel libxml2-devel libxslt-devel
|
||||
make top_srcdir=postgresql-$PGVERSION
|
||||
make install top_srcdir=postgresql-$PGVERSION
|
||||
|
||||
# initialize cluster and database
|
||||
yum install -y postgresql95-server
|
||||
su postgres -c "/usr/pgsql-9.5/bin/initdb -D $PGDATA -k"
|
||||
cat <<EOF > $PGDATA/pg_hba.conf
|
||||
local all all trust
|
||||
host all all 127.0.0.1/32 trust
|
||||
local replication pgbench trust
|
||||
host replication pgbench 127.0.0.1/32 trust
|
||||
EOF
|
||||
cat <<EOF > $PGDATA/postgresql.auto.conf
|
||||
max_wal_senders = 2
|
||||
wal_level = logical
|
||||
wal_log_hints = on
|
||||
EOF
|
||||
su postgres -c "/usr/pgsql-9.5/bin/pg_ctl start -w -D $PGDATA"
|
||||
su postgres -c "createdb -U postgres $PGUSER"
|
||||
su postgres -c "createuser -U postgres -a -d -E $PGUSER"
|
||||
pgbench -i -s $PGBENCH_SCALE
|
||||
|
||||
# Count current
|
||||
COUNT=$(psql -Atc "select count(*) from pgbench_accounts")
|
||||
pgbench -s $PGBENCH_SCALE -T $PGBENCH_TIME -j 2 -c 10 &
|
||||
|
||||
# create backup
|
||||
pg_probackup init
|
||||
pg_probackup backup -b full --disable-ptrack-clear --stream -v
|
||||
pg_probackup show
|
||||
sleep $PGBENCH_TIME
|
||||
|
||||
# restore from backup
|
||||
chown -R postgres:postgres $BACKUP_PATH
|
||||
su postgres -c "pg_probackup restore -D $PGDATA2"
|
||||
|
||||
# start backup server
|
||||
su postgres -c "/usr/pgsql-9.5/bin/pg_ctl stop -w -D $PGDATA"
|
||||
su postgres -c "/usr/pgsql-9.5/bin/pg_ctl start -w -D $PGDATA2"
|
||||
( psql -Atc "select count(*) from pgbench_accounts" | grep $COUNT ) || (cat $PGDATA2/pg_log/*.log ; exit 1)
|
6
travis/before-install.sh
Executable file
6
travis/before-install.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -xe
|
||||
|
||||
mkdir /pg
|
||||
chown travis /pg
|
7
travis/before-script-user.sh
Executable file
7
travis/before-script-user.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -xe
|
||||
|
||||
ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ""
|
||||
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
|
||||
ssh-keyscan -H localhost >> ~/.ssh/known_hosts
|
19
travis/before-script.sh
Executable file
19
travis/before-script.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -xe
|
||||
|
||||
/etc/init.d/ssh start
|
||||
|
||||
# Show pg_config path (just in case)
|
||||
echo "############### pg_config path:"
|
||||
which pg_config
|
||||
|
||||
# Show pg_config just in case
|
||||
echo "############### pg_config:"
|
||||
pg_config
|
||||
|
||||
# Show kernel parameters
|
||||
echo "############### kernel params:"
|
||||
cat /proc/sys/kernel/yama/ptrace_scope
|
||||
sudo sysctl kernel.yama.ptrace_scope=0
|
||||
cat /proc/sys/kernel/yama/ptrace_scope
|
@ -1,17 +0,0 @@
|
||||
version: "3.7"
|
||||
services:
|
||||
tests:
|
||||
build:
|
||||
context: .
|
||||
|
||||
cap_add:
|
||||
- SYS_PTRACE
|
||||
|
||||
security_opt:
|
||||
- seccomp=unconfined
|
||||
|
||||
# don't work
|
||||
#sysctls:
|
||||
# kernel.yama.ptrace_scope: 0
|
||||
privileged: true
|
||||
|
66
travis/install.sh
Executable file
66
travis/install.sh
Executable file
@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -xe
|
||||
|
||||
if [ -z ${PG_VERSION+x} ]; then
|
||||
echo PG_VERSION is not set!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z ${PG_BRANCH+x} ]; then
|
||||
echo PG_BRANCH is not set!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z ${PTRACK_PATCH_PG_BRANCH+x} ]; then
|
||||
PTRACK_PATCH_PG_BRANCH=OFF
|
||||
fi
|
||||
|
||||
# fix
|
||||
sudo chown -R travis /home/travis/.ccache
|
||||
|
||||
export PGHOME=/pg
|
||||
|
||||
# Clone Postgres
|
||||
echo "############### Getting Postgres sources:"
|
||||
git clone https://github.com/postgres/postgres.git -b $PG_BRANCH --depth=1
|
||||
|
||||
# Clone ptrack
|
||||
if [ "$PTRACK_PATCH_PG_BRANCH" != "OFF" ]; then
|
||||
git clone https://github.com/postgrespro/ptrack.git -b master --depth=1 postgres/contrib/ptrack
|
||||
export PG_PROBACKUP_PTRACK=ON
|
||||
else
|
||||
export PG_PROBACKUP_PTRACK=OFF
|
||||
fi
|
||||
|
||||
# Compile and install Postgres
|
||||
echo "############### Compiling Postgres:"
|
||||
cd postgres # Go to postgres dir
|
||||
if [ "$PG_PROBACKUP_PTRACK" = "ON" ]; then
|
||||
git apply -3 contrib/ptrack/patches/${PTRACK_PATCH_PG_BRANCH}-ptrack-core.diff
|
||||
fi
|
||||
CC='ccache gcc' CFLAGS="-Og" ./configure --prefix=$PGHOME \
|
||||
--cache-file=~/.ccache/configure-cache \
|
||||
--enable-debug --enable-cassert --enable-depend \
|
||||
--enable-tap-tests --enable-nls
|
||||
make -s -j$(nproc) install
|
||||
make -s -j$(nproc) -C contrib/ install
|
||||
|
||||
# Override default Postgres instance
|
||||
export PATH=$PGHOME/bin:$PATH
|
||||
export LD_LIBRARY_PATH=$PGHOME/lib
|
||||
export PG_CONFIG=$(which pg_config)
|
||||
|
||||
if [ "$PG_PROBACKUP_PTRACK" = "ON" ]; then
|
||||
echo "############### Compiling Ptrack:"
|
||||
make -C contrib/ptrack install
|
||||
fi
|
||||
|
||||
# Get amcheck if missing
|
||||
if [ ! -d "contrib/amcheck" ]; then
|
||||
echo "############### Getting missing amcheck:"
|
||||
git clone https://github.com/petergeoghegan/amcheck.git --depth=1 contrib/amcheck
|
||||
make -C contrib/amcheck install
|
||||
fi
|
||||
|
||||
pip3 install testgres
|
@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
if [ -z ${PG_VERSION+x} ]; then
|
||||
echo PG_VERSION is not set!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z ${PG_BRANCH+x} ]; then
|
||||
echo PG_BRANCH is not set!
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z ${MODE+x} ]; then
|
||||
MODE=basic
|
||||
fi
|
||||
|
||||
if [ -z ${PTRACK_PATCH_PG_BRANCH+x} ]; then
|
||||
PTRACK_PATCH_PG_BRANCH=OFF
|
||||
fi
|
||||
|
||||
if [ -z ${PGPROBACKUP_GDB+x} ]; then
|
||||
PGPROBACKUP_GDB=ON
|
||||
fi
|
||||
|
||||
echo PG_VERSION=${PG_VERSION}
|
||||
echo PG_BRANCH=${PG_BRANCH}
|
||||
echo MODE=${MODE}
|
||||
echo PTRACK_PATCH_PG_BRANCH=${PTRACK_PATCH_PG_BRANCH}
|
||||
echo PGPROBACKUP_GDB=${PGPROBACKUP_GDB}
|
||||
|
||||
sed \
|
||||
-e 's/${PG_VERSION}/'${PG_VERSION}/g \
|
||||
-e 's/${PG_BRANCH}/'${PG_BRANCH}/g \
|
||||
-e 's/${MODE}/'${MODE}/g \
|
||||
-e 's/${PTRACK_PATCH_PG_BRANCH}/'${PTRACK_PATCH_PG_BRANCH}/g \
|
||||
-e 's/${PGPROBACKUP_GDB}/'${PGPROBACKUP_GDB}/g \
|
||||
Dockerfile.in > Dockerfile
|
@ -1,124 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#
|
||||
# Copyright (c) 2019-2022, Postgres Professional
|
||||
#
|
||||
set -xe
|
||||
|
||||
sudo su -c 'mkdir /run/sshd'
|
||||
sudo su -c 'apt-get update -y'
|
||||
sudo su -c 'apt-get install openssh-client openssh-server -y'
|
||||
sudo su -c '/etc/init.d/ssh start'
|
||||
|
||||
ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ""
|
||||
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
|
||||
ssh-keyscan -H localhost >> ~/.ssh/known_hosts
|
||||
|
||||
PG_SRC=$PWD/postgres
|
||||
|
||||
# # Here PG_VERSION is provided by postgres:X-alpine docker image
|
||||
# curl "https://ftp.postgresql.org/pub/source/v$PG_VERSION/postgresql-$PG_VERSION.tar.bz2" -o postgresql.tar.bz2
|
||||
# echo "$PG_SHA256 *postgresql.tar.bz2" | sha256sum -c -
|
||||
|
||||
# mkdir $PG_SRC
|
||||
|
||||
# tar \
|
||||
# --extract \
|
||||
# --file postgresql.tar.bz2 \
|
||||
# --directory $PG_SRC \
|
||||
# --strip-components 1
|
||||
|
||||
# Clone Postgres
|
||||
echo "############### Getting Postgres sources:"
|
||||
git clone https://github.com/postgres/postgres.git -b $PG_BRANCH --depth=1
|
||||
|
||||
# Clone ptrack
|
||||
if [ "$PTRACK_PATCH_PG_BRANCH" != "OFF" ]; then
|
||||
git clone https://github.com/postgrespro/ptrack.git -b master --depth=1
|
||||
export PG_PROBACKUP_PTRACK=ON
|
||||
else
|
||||
export PG_PROBACKUP_PTRACK=OFF
|
||||
fi
|
||||
|
||||
|
||||
# Compile and install Postgres
|
||||
echo "############### Compiling Postgres:"
|
||||
cd postgres # Go to postgres dir
|
||||
if [ "$PG_PROBACKUP_PTRACK" = "ON" ]; then
|
||||
git apply -3 ../ptrack/patches/${PTRACK_PATCH_PG_BRANCH}-ptrack-core.diff
|
||||
fi
|
||||
CFLAGS="-O0" ./configure --prefix=$PGHOME --enable-debug --enable-cassert --enable-depend --enable-tap-tests --enable-nls --with-python
|
||||
make -s -j$(nproc) install
|
||||
#make -s -j$(nproc) -C 'src/common' install
|
||||
#make -s -j$(nproc) -C 'src/port' install
|
||||
#make -s -j$(nproc) -C 'src/interfaces' install
|
||||
make -s -j$(nproc) -C contrib/ install
|
||||
|
||||
# Override default Postgres instance
|
||||
export PATH=$PGHOME/bin:$PATH
|
||||
export LD_LIBRARY_PATH=$PGHOME/lib
|
||||
export PG_CONFIG=$(which pg_config)
|
||||
|
||||
if [ "$PG_PROBACKUP_PTRACK" = "ON" ]; then
|
||||
echo "############### Compiling Ptrack:"
|
||||
make USE_PGXS=1 -C ../ptrack install
|
||||
fi
|
||||
|
||||
# Get amcheck if missing
|
||||
if [ ! -d "contrib/amcheck" ]; then
|
||||
echo "############### Getting missing amcheck:"
|
||||
git clone https://github.com/petergeoghegan/amcheck.git --depth=1 contrib/amcheck
|
||||
make USE_PGXS=1 -C contrib/amcheck install
|
||||
fi
|
||||
|
||||
# Get back to testdir
|
||||
cd ..
|
||||
|
||||
# Show pg_config path (just in case)
|
||||
echo "############### pg_config path:"
|
||||
which pg_config
|
||||
|
||||
# Show pg_config just in case
|
||||
echo "############### pg_config:"
|
||||
pg_config
|
||||
|
||||
# Show kernel parameters
|
||||
echo "############### kernel params:"
|
||||
cat /proc/sys/kernel/yama/ptrace_scope
|
||||
sudo sysctl kernel.yama.ptrace_scope=0
|
||||
cat /proc/sys/kernel/yama/ptrace_scope
|
||||
|
||||
# Build and install pg_probackup (using PG_CPPFLAGS and SHLIB_LINK for gcov)
|
||||
echo "############### Compiling and installing pg_probackup:"
|
||||
# make USE_PGXS=1 PG_CPPFLAGS="-coverage" SHLIB_LINK="-coverage" top_srcdir=$CUSTOM_PG_SRC install
|
||||
make USE_PGXS=1 top_srcdir=$PG_SRC install
|
||||
|
||||
# Setup python environment
|
||||
echo "############### Setting up python env:"
|
||||
python3 -m virtualenv pyenv
|
||||
source pyenv/bin/activate
|
||||
pip3 install testgres
|
||||
|
||||
echo "############### Testing:"
|
||||
echo PG_PROBACKUP_PARANOIA=${PG_PROBACKUP_PARANOIA}
|
||||
echo ARCHIVE_COMPRESSION=${ARCHIVE_COMPRESSION}
|
||||
echo PGPROBACKUPBIN_OLD=${PGPROBACKUPBIN_OLD}
|
||||
echo PGPROBACKUPBIN=${PGPROBACKUPBIN}
|
||||
echo PGPROBACKUP_SSH_REMOTE=${PGPROBACKUP_SSH_REMOTE}
|
||||
echo PGPROBACKUP_GDB=${PGPROBACKUP_GDB}
|
||||
echo PG_PROBACKUP_PTRACK=${PG_PROBACKUP_PTRACK}
|
||||
if [ "$MODE" = "basic" ]; then
|
||||
export PG_PROBACKUP_TEST_BASIC=ON
|
||||
echo PG_PROBACKUP_TEST_BASIC=${PG_PROBACKUP_TEST_BASIC}
|
||||
python3 -m unittest -v tests
|
||||
python3 -m unittest -v tests.init_test
|
||||
else
|
||||
echo PG_PROBACKUP_TEST_BASIC=${PG_PROBACKUP_TEST_BASIC}
|
||||
python3 -m unittest -v tests.$MODE
|
||||
fi
|
||||
|
||||
# Generate *.gcov files
|
||||
# gcov src/*.c src/*.h
|
||||
|
||||
# Send coverage stats to Codecov
|
||||
# bash <(curl -s https://codecov.io/bash)
|
41
travis/script.sh
Executable file
41
travis/script.sh
Executable file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -xe
|
||||
|
||||
export PGHOME=/pg
|
||||
export PG_SRC=$PWD/postgres
|
||||
export PATH=$PGHOME/bin:$PATH
|
||||
export LD_LIBRARY_PATH=$PGHOME/lib
|
||||
export PG_CONFIG=$(which pg_config)
|
||||
|
||||
# Build and install pg_probackup (using PG_CPPFLAGS and SHLIB_LINK for gcov)
|
||||
echo "############### Compiling and installing pg_probackup:"
|
||||
# make USE_PGXS=1 PG_CPPFLAGS="-coverage" SHLIB_LINK="-coverage" top_srcdir=$CUSTOM_PG_SRC install
|
||||
make USE_PGXS=1 top_srcdir=$PG_SRC install
|
||||
|
||||
if [ -z ${MODE+x} ]; then
|
||||
MODE=basic
|
||||
fi
|
||||
|
||||
if [ -z ${PGPROBACKUP_GDB+x} ]; then
|
||||
PGPROBACKUP_GDB=ON
|
||||
fi
|
||||
|
||||
echo "############### Testing:"
|
||||
echo PG_PROBACKUP_PARANOIA=${PG_PROBACKUP_PARANOIA}
|
||||
echo ARCHIVE_COMPRESSION=${ARCHIVE_COMPRESSION}
|
||||
echo PGPROBACKUPBIN_OLD=${PGPROBACKUPBIN_OLD}
|
||||
echo PGPROBACKUPBIN=${PGPROBACKUPBIN}
|
||||
echo PGPROBACKUP_SSH_REMOTE=${PGPROBACKUP_SSH_REMOTE}
|
||||
echo PGPROBACKUP_GDB=${PGPROBACKUP_GDB}
|
||||
echo PG_PROBACKUP_PTRACK=${PG_PROBACKUP_PTRACK}
|
||||
|
||||
if [ "$MODE" = "basic" ]; then
|
||||
export PG_PROBACKUP_TEST_BASIC=ON
|
||||
echo PG_PROBACKUP_TEST_BASIC=${PG_PROBACKUP_TEST_BASIC}
|
||||
python3 -m unittest -v tests
|
||||
python3 -m unittest -v tests.init_test
|
||||
else
|
||||
echo PG_PROBACKUP_TEST_BASIC=${PG_PROBACKUP_TEST_BASIC}
|
||||
python3 -m unittest -v tests.$MODE
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user