mirror of
https://github.com/FirebirdSQL/firebird-qa.git
synced 2025-01-22 13:33:07 +01:00
Make it possible to run with docker in Linux.
This commit is contained in:
parent
2c87e4fdf1
commit
6e8bf513f8
42
Dockerfile
Normal file
42
Dockerfile
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
apt-get update && \
|
||||||
|
\
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get -y install \
|
||||||
|
libicu70 \
|
||||||
|
libncurses5 \
|
||||||
|
libtommath1 \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
sudo && \
|
||||||
|
\
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
\
|
||||||
|
ln -s /usr/lib/x86_64-linux-gnu/libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0
|
||||||
|
|
||||||
|
ARG UID=1000
|
||||||
|
|
||||||
|
COPY setup.cfg pyproject.toml /qa-run/
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
useradd -u $UID user -G sudo && \
|
||||||
|
groupadd firebird && \
|
||||||
|
useradd --non-unique -M -b /opt -s /sbin/nologin -g firebird -u $UID firebird && \
|
||||||
|
usermod -G sudo firebird && \
|
||||||
|
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
|
||||||
|
\
|
||||||
|
mkdir /qa-out && \
|
||||||
|
chown -R user:user /qa-out && \
|
||||||
|
chown -R firebird:firebird /qa-run && \
|
||||||
|
cd /qa-run && \
|
||||||
|
pip install -e . && \
|
||||||
|
pip install pytest-md-report pytest-timeout
|
||||||
|
|
||||||
|
USER user
|
||||||
|
|
||||||
|
ENV PATH=/opt/firebird/bin:$PATH
|
||||||
|
ENV TERMINFO_DIRS=/lib/terminfo
|
||||||
|
ENV LD_LIBRARY_PATH=/opt/firebird/lib
|
||||||
|
|
||||||
|
CMD /qa/docker/run.sh
|
25
docker/run.sh
Executable file
25
docker/run.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
sudo /qa/docker/setup.sh
|
||||||
|
|
||||||
|
cd /qa-run
|
||||||
|
|
||||||
|
pytest \
|
||||||
|
--server local \
|
||||||
|
--save-output \
|
||||||
|
--extend-xml \
|
||||||
|
--junitxml /qa-out/junit.xml \
|
||||||
|
--disable-warnings \
|
||||||
|
-vv \
|
||||||
|
--tb=long \
|
||||||
|
--basetemp=/tmp/pytest-tmp \
|
||||||
|
--timeout 250 \
|
||||||
|
--md-report \
|
||||||
|
--md-report-flavor gfm \
|
||||||
|
--md-report-verbose 1 \
|
||||||
|
--md-report-color never \
|
||||||
|
--md-report-output /qa-out/md_report.md \
|
||||||
|
--ignore=tests/functional/replication \
|
||||||
|
--ignore=tests/functional/basic/isql/test_08.py \
|
||||||
|
./tests/
|
71
docker/setup.sh
Executable file
71
docker/setup.sh
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
mkdir /tmp/firebird-installer
|
||||||
|
cd /tmp/firebird-installer
|
||||||
|
tar xzvf /firebird-installer.tar.gz --strip=1
|
||||||
|
./install.sh -silent
|
||||||
|
echo
|
||||||
|
|
||||||
|
/etc/init.d/firebird stop
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo Changing SYSDBA password
|
||||||
|
echo "alter user sysdba password 'masterkey';" | /opt/firebird/bin/isql -q employee
|
||||||
|
|
||||||
|
echo Configuring
|
||||||
|
|
||||||
|
cat <<EOF > /opt/firebird/firebird.conf
|
||||||
|
BugcheckAbort = 1
|
||||||
|
ExternalFileAccess = Full
|
||||||
|
AuthServer = Srp, Win_Sspi, Legacy_Auth
|
||||||
|
UserManager = Srp, Legacy_UserManager
|
||||||
|
ReadConsistency = 0
|
||||||
|
WireCrypt = Enabled
|
||||||
|
ExtConnPoolSize = 10
|
||||||
|
ExtConnPoolLifeTime = 10
|
||||||
|
UseFileSystemCache = true
|
||||||
|
IpcName = xnet_fb4x_qa
|
||||||
|
DefaultDbCachePages = 2048
|
||||||
|
MaxUnflushedWrites = -1
|
||||||
|
MaxUnflushedWriteTime = -1
|
||||||
|
StatementTimeout = 7200
|
||||||
|
KeyHolderPlugin = fbSampleKeyHolder
|
||||||
|
RemoteServicePort = 3050
|
||||||
|
ParallelWorkers = 1
|
||||||
|
MaxParallelWorkers = 8
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if test -f /opt/firebird/examples/prebuilt/plugins/fbSampleDbCrypt.conf; then
|
||||||
|
cp /opt/firebird/examples/prebuilt/plugins/fbSampleDbCrypt.conf /opt/firebird/plugins/
|
||||||
|
cp /opt/firebird/examples/prebuilt/plugins/libfbSample*.so /opt/firebird/plugins/
|
||||||
|
|
||||||
|
cat <<EOF > /opt/firebird/plugins/fbSampleKeyHolder.conf
|
||||||
|
Auto = true
|
||||||
|
KeyRed=111
|
||||||
|
KeyGreen = 119
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat <<EOF > /opt/firebird/databases.conf
|
||||||
|
employee.fdb = \$(dir_sampleDb)/employee.fdb
|
||||||
|
employee = \$(dir_sampleDb)/employee.fdb
|
||||||
|
|
||||||
|
security.db = \$(dir_secDb)/$(basename $(ls /opt/firebird/security*.fdb))
|
||||||
|
{
|
||||||
|
RemoteAccess = true
|
||||||
|
DefaultDbCachePages = 256
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat /qa/files/qa-databases.conf >> /opt/firebird/databases.conf
|
||||||
|
|
||||||
|
/etc/init.d/firebird start
|
||||||
|
echo
|
||||||
|
|
||||||
|
rm -r /tmp/firebird-installer
|
||||||
|
|
||||||
|
mkdir /opt/firebird/examples/empbuild/qa
|
||||||
|
chmod -R 777 /opt/firebird/examples/empbuild
|
||||||
|
|
||||||
|
cp -rn /qa/* /qa-run/
|
25
run-docker.sh
Executable file
25
run-docker.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Syntax:
|
||||||
|
# Run this script passing environment variables:
|
||||||
|
# FBQA_OUT=/path/to/out FBQA_INSTALLER=/path/to/Firebird.tar.gz ./run-docker.sh
|
||||||
|
|
||||||
|
THIS_DIR=`readlink -f $0`
|
||||||
|
THIS_DIR=`dirname $THIS_DIR`
|
||||||
|
|
||||||
|
if [ -z "$FBQA_OUT" ]; then
|
||||||
|
echo \$FBQA_OUT is not defined.
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$FBQA_INSTALLER" ]; then
|
||||||
|
echo \$FBQA_INSTALLER is not defined.
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$FBQA_OUT" ] || [ -z "$FBQA_INSTALLER" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) --progress=plain -t firebird-qa $THIS_DIR
|
||||||
|
mkdir -p $FBQA_OUT/tests
|
||||||
|
docker run --user $(id -u) --rm -v `realpath $FBQA_OUT`:/qa-out -v `realpath $FBQA_OUT/tests`:/qa-run/out/tests -v `realpath $THIS_DIR`:/qa -v `realpath $FBQA_INSTALLER`:/firebird-installer.tar.gz firebird-qa
|
Loading…
Reference in New Issue
Block a user