Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
CaosDB Python Integration Tests
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
caosdb
Software
CaosDB Python Integration Tests
Commits
4841fbd5
Commit
4841fbd5
authored
5 years ago
by
Henrik tom Wörden
Browse files
Options
Downloads
Patches
Plain Diff
ci
parent
18121e3a
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
.docker/Dockerfile
+5
-0
5 additions, 0 deletions
.docker/Dockerfile
.docker/docker-compose.yml
+18
-0
18 additions, 0 deletions
.docker/docker-compose.yml
.docker/wait-for-it.sh
+181
-0
181 additions, 0 deletions
.docker/wait-for-it.sh
.gitlab-ci.yml
+37
-7
37 additions, 7 deletions
.gitlab-ci.yml
with
241 additions
and
7 deletions
.docker/Dockerfile
0 → 100644
+
5
−
0
View file @
4841fbd5
FROM
debian:latest
RUN
apt-get update
&&
\
apt-get
install
tox curl
-y
COPY
wait-for-it.sh /wait-for-it.sh
CMD
/wait-for-it.sh caosdb-server:10443 -- curl https://caosdb-server:10443
This diff is collapsed.
Click to expand it.
.docker-compose
-base
.yml
→
.docker
/docker
-compose.yml
+
18
−
0
View file @
4841fbd5
...
...
@@ -12,14 +12,7 @@ services:
# - "from_outside:from_inside"
-
"
10443:10443"
-
"
10080:10080"
# Pass information to the running docker ontainer.
# These variables should be set when calling docker-compose.
# environment:
# - SQL_RESTORE
# - NIS_ENABLE
# - NIS_DOMAIN
# - NIS_SERVER
# - PORT_SSL
# - DOCKER_TZ
# - DOCKER_MAIL
# - MAKE_TEST
tester
:
image
:
pyint-tester:0.3
depends_on
:
-
caosdb-server
This diff is collapsed.
Click to expand it.
.docker/wait-for-it.sh
0 → 100755
+
181
−
0
View file @
4841fbd5
#!/usr/bin/env bash
# TODO add proper license
# from githu:
# Use this script to test if a given TCP host/port are available
WAITFORIT_cmdname
=
${
0
##*/
}
echoerr
()
{
if
[[
$WAITFORIT_QUIET
-ne
1
]]
;
then
echo
"
$@
"
1>&2
;
fi
}
usage
()
{
cat
<<
USAGE
>&2
Usage:
$WAITFORIT_cmdname
host:port [-s] [-t timeout] [-- command args]
-h HOST | --host=HOST Host or IP under test
-p PORT | --port=PORT TCP port under test
Alternatively, you specify the host and port as host:port
-s | --strict Only execute subcommand if the test succeeds
-q | --quiet Don't output any status messages
-t TIMEOUT | --timeout=TIMEOUT
Timeout in seconds, zero for no timeout
-- COMMAND ARGS Execute command with args after the test finishes
USAGE
exit
1
}
wait_for
()
{
if
[[
$WAITFORIT_TIMEOUT
-gt
0
]]
;
then
echoerr
"
$WAITFORIT_cmdname
: waiting
$WAITFORIT_TIMEOUT
seconds for
$WAITFORIT_HOST
:
$WAITFORIT_PORT
"
else
echoerr
"
$WAITFORIT_cmdname
: waiting for
$WAITFORIT_HOST
:
$WAITFORIT_PORT
without a timeout"
fi
WAITFORIT_start_ts
=
$(
date
+%s
)
while
:
do
if
[[
$WAITFORIT_ISBUSY
-eq
1
]]
;
then
nc
-z
$WAITFORIT_HOST
$WAITFORIT_PORT
WAITFORIT_result
=
$?
else
(
echo
>
/dev/tcp/
$WAITFORIT_HOST
/
$WAITFORIT_PORT
)
>
/dev/null 2>&1
WAITFORIT_result
=
$?
fi
if
[[
$WAITFORIT_result
-eq
0
]]
;
then
WAITFORIT_end_ts
=
$(
date
+%s
)
echoerr
"
$WAITFORIT_cmdname
:
$WAITFORIT_HOST
:
$WAITFORIT_PORT
is available after
$((
WAITFORIT_end_ts
-
WAITFORIT_start_ts
))
seconds"
break
fi
sleep
1
done
return
$WAITFORIT_result
}
wait_for_wrapper
()
{
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
if
[[
$WAITFORIT_QUIET
-eq
1
]]
;
then
timeout
$WAITFORIT_BUSYTIMEFLAG
$WAITFORIT_TIMEOUT
$0
--quiet
--child
--host
=
$WAITFORIT_HOST
--port
=
$WAITFORIT_PORT
--timeout
=
$WAITFORIT_TIMEOUT
&
else
timeout
$WAITFORIT_BUSYTIMEFLAG
$WAITFORIT_TIMEOUT
$0
--child
--host
=
$WAITFORIT_HOST
--port
=
$WAITFORIT_PORT
--timeout
=
$WAITFORIT_TIMEOUT
&
fi
WAITFORIT_PID
=
$!
trap
"kill -INT -
$WAITFORIT_PID
"
INT
wait
$WAITFORIT_PID
WAITFORIT_RESULT
=
$?
if
[[
$WAITFORIT_RESULT
-ne
0
]]
;
then
echoerr
"
$WAITFORIT_cmdname
: timeout occurred after waiting
$WAITFORIT_TIMEOUT
seconds for
$WAITFORIT_HOST
:
$WAITFORIT_PORT
"
fi
return
$WAITFORIT_RESULT
}
# process arguments
while
[[
$#
-gt
0
]]
do
case
"
$1
"
in
*
:
*
)
WAITFORIT_hostport
=(
${
1
//
:/
}
)
WAITFORIT_HOST
=
${
WAITFORIT_hostport
[0]
}
WAITFORIT_PORT
=
${
WAITFORIT_hostport
[1]
}
shift
1
;;
--child
)
WAITFORIT_CHILD
=
1
shift
1
;;
-q
|
--quiet
)
WAITFORIT_QUIET
=
1
shift
1
;;
-s
|
--strict
)
WAITFORIT_STRICT
=
1
shift
1
;;
-h
)
WAITFORIT_HOST
=
"
$2
"
if
[[
$WAITFORIT_HOST
==
""
]]
;
then
break
;
fi
shift
2
;;
--host
=
*
)
WAITFORIT_HOST
=
"
${
1
#*=
}
"
shift
1
;;
-p
)
WAITFORIT_PORT
=
"
$2
"
if
[[
$WAITFORIT_PORT
==
""
]]
;
then
break
;
fi
shift
2
;;
--port
=
*
)
WAITFORIT_PORT
=
"
${
1
#*=
}
"
shift
1
;;
-t
)
WAITFORIT_TIMEOUT
=
"
$2
"
if
[[
$WAITFORIT_TIMEOUT
==
""
]]
;
then
break
;
fi
shift
2
;;
--timeout
=
*
)
WAITFORIT_TIMEOUT
=
"
${
1
#*=
}
"
shift
1
;;
--
)
shift
WAITFORIT_CLI
=(
"
$@
"
)
break
;;
--help
)
usage
;;
*
)
echoerr
"Unknown argument:
$1
"
usage
;;
esac
done
if
[[
"
$WAITFORIT_HOST
"
==
""
||
"
$WAITFORIT_PORT
"
==
""
]]
;
then
echoerr
"Error: you need to provide a host and port to test."
usage
fi
WAITFORIT_TIMEOUT
=
${
WAITFORIT_TIMEOUT
:-
15
}
WAITFORIT_STRICT
=
${
WAITFORIT_STRICT
:-
0
}
WAITFORIT_CHILD
=
${
WAITFORIT_CHILD
:-
0
}
WAITFORIT_QUIET
=
${
WAITFORIT_QUIET
:-
0
}
# check to see if timeout is from busybox?
WAITFORIT_TIMEOUT_PATH
=
$(
type
-p
timeout
)
WAITFORIT_TIMEOUT_PATH
=
$(
realpath
$WAITFORIT_TIMEOUT_PATH
2>/dev/null
||
readlink
-f
$WAITFORIT_TIMEOUT_PATH
)
if
[[
$WAITFORIT_TIMEOUT_PATH
=
~
"busybox"
]]
;
then
WAITFORIT_ISBUSY
=
1
WAITFORIT_BUSYTIMEFLAG
=
"-t"
else
WAITFORIT_ISBUSY
=
0
WAITFORIT_BUSYTIMEFLAG
=
""
fi
if
[[
$WAITFORIT_CHILD
-gt
0
]]
;
then
wait_for
WAITFORIT_RESULT
=
$?
exit
$WAITFORIT_RESULT
else
if
[[
$WAITFORIT_TIMEOUT
-gt
0
]]
;
then
wait_for_wrapper
WAITFORIT_RESULT
=
$?
else
wait_for
WAITFORIT_RESULT
=
$?
fi
fi
if
[[
$WAITFORIT_CLI
!=
""
]]
;
then
if
[[
$WAITFORIT_RESULT
-ne
0
&&
$WAITFORIT_STRICT
-eq
1
]]
;
then
echoerr
"
$WAITFORIT_cmdname
: strict mode, refusing to execute subprocess"
exit
$WAITFORIT_RESULT
fi
exec
"
${
WAITFORIT_CLI
[@]
}
"
else
exit
$WAITFORIT_RESULT
fi
This diff is collapsed.
Click to expand it.
.gitlab-ci.yml
+
37
−
7
View file @
4841fbd5
...
...
@@ -22,16 +22,46 @@
# ** end header
#
#
variables
:
MYSQL_ROOT_PASSWORD
:
caosdb1234
CI_REGISTRY_IMAGE
:
$CI_REGISTRY/caosdb-pyint-testenv
# When using dind service we need to instruct docker, to talk with the
# daemon started inside of the service. The daemon is available with
# a network connection instead of the default /var/run/docker.sock socket.
#
# The 'docker' hostname is the alias of the service container as described at
# https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#accessing-the-services
#
# Note that if you're using the Kubernetes executor, the variable should be set to
# tcp://localhost:2375/ because of how the Kubernetes executor connects services
# to the job container
# DOCKER_HOST: tcp://localhost:2375/
#
# For non-Kubernetes executors, we use tcp://docker:2375/
DOCKER_HOST
:
tcp://docker:2375/
# When using dind, it's wise to use the overlayfs driver for
# improved performance.
DOCKER_DRIVER
:
overlay2
services
:
-
name
:
mariadb:10.4
alias
:
mysql
-
name
:
nginx:latest
alias
:
nginx
-
docker:dind
test
:
image
:
d
ebian:stretch
image
:
d
ocker:latest
script
:
-
sleep
120
-
docker-compose -f .docker/docker-compose.yml up
build-testenv
:
image
:
docker:latest
stage
:
setup
script
:
-
docker login -u testuser -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
# use here general latest or specific branch latest...
-
docker pull $CI_REGISTRY_IMAGE:latest ||
true
-
docker build
--pull
--file .dockerfile
--cache-from $CI_REGISTRY_IMAGE:latest
-t $CI_REGISTRY_IMAGE:latest .
-
docker push $CI_REGISTRY_IMAGE:latest
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment