Try running docker build commands

Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
Václav Valíček 2022-05-04 10:08:48 +02:00
parent 4b7f292beb
commit c41d31a8cd
Signed by: valicek
GPG Key ID: FF05BDCA0C73BB31
11 changed files with 202 additions and 5 deletions

2
.env Normal file
View File

@ -0,0 +1,2 @@
# env file for docker-compose
ENVFILE=static-docker-env

View File

@ -29,11 +29,6 @@ then
#green "Dump of docker-env:" #green "Dump of docker-env:"
#cat ../docker-env #cat ../docker-env
# TODO: fix later
exit 0
cd ci cd ci
#green "Dump docker-compose config:" #green "Dump docker-compose config:"

1
ci/.env Symbolic link
View File

@ -0,0 +1 @@
../.env

30
ci/docker-compose.yml Normal file
View File

@ -0,0 +1,30 @@
version: '3'
services:
sut:
build:
context: docker
dockerfile: Dockerfile
args:
PYTHON_TAG: ${PYTHON:-3}-bullseye
volumes:
# Project data
- type: bind
source: ../
target: /app
read_only: false
# pip cache
- type: volume
source: pip-cache
target: /root/.cache/pip
volume:
nocopy: true
# environment file to passthrough environment from laminar - generated by laminar init template
# automatically-generated docker-env is situated in parent of repo dir (two levels up)
env_file: ${ENVFILE:-../../docker-env}
# make it faster
tmpfs: /tmp
volumes:
pip-cache: # cache for pip

47
ci/docker/Dockerfile Normal file
View File

@ -0,0 +1,47 @@
ARG PYTHON_TAG=3
FROM python:${PYTHON_TAG}
RUN set -xeu ; \
apt update ; \
apt -yy full-upgrade ; \
apt -yy install ca-certificates \
libfontconfig1 \
libfreetype6 \
libx11-6 \
libx11-xcb1 \
libxext6 \
libxfixes3 \
libxi6 \
libxrender1 \
libxcb1 \
libxcb-util1 \
libxcb-glx0 \
libxcb-keysyms1 \
libxcb-image0 \
libxcb-shm0 \
libxcb-icccm4 \
libxcb-sync1 \
libxcb-xfixes0 \
libxcb-shape0 \
libxcb-randr0 \
libxcb-render-util0 \
libxcb-xinerama0 \
libxkbcommon0 \
libxkbcommon-x11-0 \
libdbus-1-3 \
xvfb xclip xsel xdotool; \
python -m venv /venv ;\
/venv/bin/pip install --upgrade pip ; \
apt clean ; \
rm -Rf /var/lib/apt/lists/* ; \
mkdir /app
ADD run-tests /usr/local/bin
ADD clilib /usr/local
VOLUME /app
WORKDIR /app
CMD ["/usr/local/bin/run-tests"]

55
ci/docker/clilib Normal file
View File

@ -0,0 +1,55 @@
#!/bin/bash
reset='\e[0m'
bold='\e[1m'
green='\e[92m'
red='\e[91m'
yellow='\e[93m'
cyan='\e[96m'
status(){
echo -e "$yellow$@$reset"
}
ok() {
echo -e " [ $green${bold}OK$reset ]"
}
error(){
echo -e "$red - $@$reset"
}
failure(){
echo -e "$red - $@$reset"
exit
}
info(){
echo -e "$cyan$@$reset"
}
infon(){
echo -ne "$cyan$@$reset"
}
drawexit(){
[ $1 -eq 0 ] && ok || error "Failed!"
}
filelen(){
wc -c $1 | cut -d' ' -f1
}
wraperr(){
$@ && rc=0 || rc=$?
if [ $rc -eq 0 ]
then
ok 2>&1
else
error "Command failed: \"$@\"" 2>&1
error "Return code: $rc" 2>&1
exit $rc
fi
}

50
ci/docker/run-tests Executable file
View File

@ -0,0 +1,50 @@
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'
# source cli lib
source /usr/local/clilib
status "Preparing XDG_RUNTIME_DIR"
export XDG_RUNTIME_DIR=/tmp/xdg-runtime-dir
mkdir -p $XDG_RUNTIME_DIR
# setup exit trap
function finish {
status "Changing ownership of /app directory"
perms=$(stat -c '%u:%g' /app)
wraperr chown -R $perms /app
}
trap finish EXIT
status "Loading venv"
source /venv/bin/activate
echo $VIRTUAL_ENV
status "Changing directory to /app"
wraperr cd /app
status "Installing pip depenencies"
wraperr pip install -r requirements.txt
status "Installing dev dependencies"
wraperr pip install -r requirements.dev.
# TODO: fix later
exit 0
status "Preparing data trees for tests..."
wraperr bash -c "cd tests/_support_data; ./gen-data.sh"
status "Running tests itself"
wraperr python3 -m pytest .\
-v \
-n auto \
--ignore=tests/_support_data \
--color=yes \
--cov . \
--cov-config .coveragerc \
--cov-report term-missing \
--cov-report html
exit 0

3
ci/static-docker-env Normal file
View File

@ -0,0 +1,3 @@
# This is just dummy file which would be replaced by one generated in CI pipeline
PYTHON=3

5
requirements.dev.txt Normal file
View File

@ -0,0 +1,5 @@
-r requirements.txt
pytest==6.2.5
pyinstaller==4.5.1
pytest-xdist==2.3.0
pytest-cov==2.12.1

3
requirements.txt Normal file
View File

@ -0,0 +1,3 @@
gitdb==4.0.9
GitPython==3.1.27
smmap==5.0.0

6
test.py Executable file
View File

@ -0,0 +1,6 @@
#!/usr/bin/env python3
from git import Repo
r = Repo("/home/vasek/dev/repo-cloner")
print(r.bare)