* [tarantool-patches] [PATCH v2 1/2] Gitlab-ci updated after reiview - w/o perf
@ 2019-06-15 4:46 Alexander V. Tikhonov
2019-06-18 11:07 ` [tarantool-patches] " Alexander Turenko
0 siblings, 1 reply; 3+ messages in thread
From: Alexander V. Tikhonov @ 2019-06-15 4:46 UTC (permalink / raw)
To: Alexander Turenko; +Cc: Alexander V. Tikhonov, tarantool-patches
---
Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-4156-gitlab-ci-testing
Issue: https://github.com/tarantool/tarantool/issues/4156
.gitlab-ci.yml | 328 +++++++++++++++++++++++++++++++++++++++
.gitlab.mk | 57 +++++++
.travis.mk | 101 +++++++++---
.travis.yml | 3 +
images/Dockerfile.debian | 4 +
images/Dockerfile.lto | 5 +
6 files changed, 475 insertions(+), 23 deletions(-)
create mode 100644 .gitlab-ci.yml
create mode 100644 .gitlab.mk
create mode 100644 images/Dockerfile.debian
create mode 100644 images/Dockerfile.lto
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 000000000..01c4eacea
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,328 @@
+stages:
+ - bootstrap
+ - test
+ - perf_deploy
+
+variables:
+ VERSION_SUFFIX: "master"
+ IMAGE_TEST: "${CI_REGISTRY}/${CI_PROJECT_PATH}:debian-stretch_${VERSION_SUFFIX}"
+ IMAGE_TEST_LTO: "${CI_REGISTRY}/${CI_PROJECT_PATH}:debian-buster_${VERSION_SUFFIX}"
+ FLAG_LTO: "-DENABLE_LTO=ON"
+ GITLAB_MAKE: "make -f .gitlab.mk"
+
+# Bootstraps
+
+debian9:
+ stage: bootstrap
+ tags:
+ - bootstrap
+ variables:
+ IMAGE: ${IMAGE_TEST}
+ DOCKERFILE_SUFFIX: "debian"
+ script:
+ - ${GITLAB_MAKE} docker_bootstrap
+
+debian10_lto:
+ only:
+ refs:
+ - master
+ - /.*/
+ stage: bootstrap
+ tags:
+ - bootstrap
+ variables:
+ IMAGE: ${IMAGE_TEST_LTO}
+ DOCKERFILE_SUFFIX: "lto"
+ script:
+ - ${GITLAB_MAKE} docker_bootstrap
+
+# Tests
+
+release:
+ image: ${IMAGE_TEST}
+ stage: test
+ tags:
+ - docker_test
+ script:
+ - ${GITLAB_MAKE} runtest_ubuntu
+
+debug:
+ image: ${IMAGE_TEST}
+ stage: test
+ tags:
+ - docker_test
+ script:
+ - ${GITLAB_MAKE} runtest_cov_ubuntu
+
+release_clang:
+ image: ${IMAGE_TEST}
+ stage: test
+ tags:
+ - docker_test
+ variables:
+ CC: clang
+ CXX: clang++
+ script:
+ - ${GITLAB_MAKE} runtest_ubuntu
+
+release_lto:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: ${IMAGE_TEST_LTO}
+ stage: test
+ tags:
+ - docker_test
+ variables:
+ CMAKE_EXTRA_PARAMS: ${FLAG_LTO}
+ script:
+ - ${GITLAB_MAKE} runtest_ubuntu
+
+release_lto_clang8:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: ${IMAGE_TEST_LTO}
+ stage: test
+ tags:
+ - docker_test
+ variables:
+ CC: clang-8
+ CXX: clang++-8
+ CMAKE_EXTRA_PARAMS: ${FLAG_LTO}
+ script:
+ - ${GITLAB_MAKE} runtest_ubuntu
+
+osx13_release:
+ only:
+ refs:
+ - master
+ - /.*/
+ stage: test
+ tags:
+ - vms_sierra
+ variables:
+ VMS_NAME: 'Sierra'
+ VMS_USER: 'tarantool'
+ VMS_PORT: '2212'
+ before_script:
+ - ${GITLAB_MAKE} vms_start
+ script:
+ - export
+ - ${GITLAB_MAKE} vms_test_osx
+ after_script:
+ - ${GITLAB_MAKE} vms_shutdown
+
+osx14_release:
+ stage: test
+ tags:
+ - vms_mojave
+ variables:
+ VMS_NAME: 'Mojave'
+ VMS_USER: 'tarantool'
+ VMS_PORT: '2222'
+ before_script:
+ - ${GITLAB_MAKE} vms_start
+ script:
+ - export
+ - ${GITLAB_MAKE} vms_test_osx
+ after_script:
+ - ${GITLAB_MAKE} vms_shutdown
+
+osx14_release_lto:
+ only:
+ refs:
+ - master
+ - /.*/
+ stage: test
+ tags:
+ - vms_mojave
+ variables:
+ EXTRA_ENV: "export CMAKE_EXTRA_PARAMS=${FLAG_LTO} ;"
+ VMS_NAME: 'Mojave'
+ VMS_USER: 'tarantool'
+ VMS_PORT: '2222'
+ before_script:
+ - ${GITLAB_MAKE} vms_start
+ script:
+ - export
+ - ${GITLAB_MAKE} vms_test_osx
+ after_script:
+ - ${GITLAB_MAKE} vms_shutdown
+
+freebsd_release:
+ stage: test
+ tags:
+ - vms_freebsd
+ variables:
+ VMS_NAME: 'Freebsd'
+ VMS_USER: 'vagrant'
+ VMS_PORT: '2232'
+ TRAVIS_MAKE: 'gmake -f .travis.mk'
+ before_script:
+ - ${GITLAB_MAKE} vms_start
+ script:
+ - export
+ - ${GITLAB_MAKE} vms_test_freebsd
+ after_script:
+ - ${GITLAB_MAKE} vms_shutdown
+
+# Packs
+
+pack_cent6:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:el-6
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run_cent6
+
+pack_cent7:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:el-7
+ stage: perf_deploy
+ tags:
+ - deploy_test
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_fedora28:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:fedora-28
+ stage: perf_deploy
+ tags:
+ - deploy_test
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_fedora29:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:fedora-29
+ stage: perf_deploy
+ tags:
+ - deploy_test
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_fedora30:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:fedora-30
+ stage: perf_deploy
+ tags:
+ - deploy_test
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_ubuntu14:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:ubuntu-trusty
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_ubuntu16:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:ubuntu-xenial
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_ubuntu18:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:ubuntu-bionic
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_ubuntu1810:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:ubuntu-cosmic
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_ubuntu19:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:ubuntu-disco
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_debian8:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:debian-jessie
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_debian9:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:debian-stretch
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
+
+pack_debian10:
+ only:
+ refs:
+ - master
+ - /.*/
+ image: packpack/packpack:debian-buster
+ stage: perf_deploy
+ tags:
+ - deploy
+ script:
+ - ${GITLAB_MAKE} pack_run
diff --git a/.gitlab.mk b/.gitlab.mk
new file mode 100644
index 000000000..00a75a389
--- /dev/null
+++ b/.gitlab.mk
@@ -0,0 +1,57 @@
+GITLAB_MAKE?=make -f .gitlab.mk
+TRAVIS_MAKE?=make -f .travis.mk
+GIT_SUBMODULES_UPDATE?=git submodule update --recursive --init
+DOCKER_BUILD=docker build --network=host
+
+# docker images bootstrap
+docker_login:
+ docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
+
+docker_bootstrap: docker_login
+ cp .travis.mk images/
+ ${DOCKER_BUILD} -t ${IMAGE} -f images/Dockerfile.${DOCKERFILE_SUFFIX} images
+ docker push ${IMAGE}
+
+# build sources with different flags and test
+git_submodules_update:
+ ${GIT_SUBMODULES_UPDATE} --force
+
+git_submodules_update_cent6:
+ ${GIT_SUBMODULES_UPDATE}
+
+runtest_%: git_submodules_update
+ ${TRAVIS_MAKE} $@
+
+# build sources with different flags and test under VBox virtual machines
+vms_start:
+ VBoxManage controlvm ${VMS_NAME} poweroff || true
+ VBoxManage snapshot ${VMS_NAME} restore ${VMS_NAME}
+ VBoxManage startvm ${VMS_NAME} --type headless
+
+vms_test_%:
+ ssh -A ${VMS_USER}@127.0.0.1 -p ${VMS_PORT} "/bin/bash -c \
+ '${EXTRA_ENV} \
+ export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ; \
+ cd tarantool && \
+ git fetch -p && \
+ git checkout --force ${CI_BUILD_REF} && \
+ ${GITLAB_MAKE} git_submodules_update && \
+ ${TRAVIS_MAKE} $(subst vms_,,$@)'"
+
+vms_shutdown:
+ VBoxManage controlvm ${VMS_NAME} poweroff
+
+# build packs and test
+pack_clone:
+ git clone https://github.com/packpack/packpack.git packpack
+
+pack_make:
+ # to avoid of issue with too long names build path is short
+ make -f packpack/pack/Makefile -C . BUILDDIR=/builds/pack -j
+
+pack_build: pack_clone pack_make
+
+pack_run: git_submodules_update pack_build
+
+pack_run_cent6: git_submodules_update_cent6 pack_build
+
diff --git a/.travis.mk b/.travis.mk
index 6d0c42207..7d61c218b 100644
--- a/.travis.mk
+++ b/.travis.mk
@@ -3,6 +3,7 @@
#
DOCKER_IMAGE?=packpack/packpack:debian-stretch
+NO_PARALLEL_TESTING?=
all: package
@@ -33,8 +34,12 @@ docker_%:
${DOCKER_IMAGE} \
make -f .travis.mk $(subst docker_,,$@)
+#########
+# Linux #
+#########
+
deps_ubuntu:
- sudo apt-get update && apt-get install -y -f \
+ apt-get -y update && apt-get install -y -f \
build-essential cmake coreutils sed \
libreadline-dev libncurses5-dev libyaml-dev libssl-dev \
libcurl4-openssl-dev libunwind-dev libicu-dev \
@@ -42,34 +47,29 @@ deps_ubuntu:
python-msgpack python-yaml python-argparse python-six python-gevent \
lcov ruby clang llvm llvm-dev
-test_ubuntu: deps_ubuntu
+deps_buster_clang_8:
+ echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" > /etc/apt/sources.list.d/clang_8.list
+ echo "deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" >> /etc/apt/sources.list.d/clang_8.list
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
+ apt-get -y update
+ apt-get -y install clang-8 llvm-8 llvm-8-dev
+
+build_ubuntu:
cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
- make -j8
- cd test && /usr/bin/python test-run.py --force -j 1
+ make -j
-deps_osx:
- brew update
- brew install openssl readline curl icu4c --force
- python2 -V || brew install python2 --force
- curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python
- pip install -r test-run/requirements.txt
+runtest_ubuntu: build_ubuntu
+ cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING)
-test_osx: deps_osx
- cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
- # Increase the maximum number of open file descriptors on macOS
- sudo sysctl -w kern.maxfiles=20480 || :
- sudo sysctl -w kern.maxfilesperproc=20480 || :
- sudo launchctl limit maxfiles 20480 || :
- ulimit -S -n 20480 || :
- ulimit -n
- make -j8
- cd test && ./test-run.py --force -j 1 unit/ app/ app-tap/ box/ box-tap/
+test_ubuntu: deps_ubuntu runtest_ubuntu
-coverage_ubuntu: deps_ubuntu
+build_cov_ubuntu:
cmake . -DCMAKE_BUILD_TYPE=Debug -DENABLE_GCOV=ON
- make -j8
+ make -j
+
+runtest_cov_ubuntu: build_cov_ubuntu
# Enable --long tests for coverage
- cd test && /usr/bin/python test-run.py --force -j 1 --long
+ cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING) --long
lcov --compat-libtool --directory src/ --capture --output-file coverage.info.tmp
lcov --compat-libtool --remove coverage.info.tmp 'tests/*' 'third_party/*' '/usr/*' \
--output-file coverage.info
@@ -81,6 +81,61 @@ coverage_ubuntu: deps_ubuntu
coveralls-lcov --service-name travis-ci --service-job-id $(TRAVIS_JOB_ID) --repo-token $(COVERALLS_TOKEN) coverage.info; \
fi;
+coverage_ubuntu: deps_ubuntu runtest_cov_ubuntu
+
+#######
+# OSX #
+#######
+
+deps_osx:
+ brew update
+ brew install openssl readline curl icu4c --force
+ python2 -V || brew install python2 --force
+ curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py >get-pip.py
+ python get-pip.py --user
+ pip install --user --ignore-installed -r test-run/requirements.txt
+
+build_osx:
+ cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
+ make -j
+
+runtest_osx: build_osx
+ # Increase the maximum number of open file descriptors on macOS
+ sudo sysctl -w kern.maxfiles=20480 || :
+ sudo sysctl -w kern.maxfilesperproc=20480 || :
+ sudo launchctl limit maxfiles 20480 || :
+ ulimit -S -n 20480 || :
+ ulimit -n
+ cd test && ./test-run.py --force $(NO_PARALLEL_TESTING) unit/ app/ app-tap/ box/ box-tap/
+
+test_osx: deps_osx runtest_osx
+
+###########
+# FreeBSD #
+###########
+
+deps_freebsd:
+ # don't use bad py27-msgpack-python
+ sudo pkg install -y sudo git cmake gmake gcc coreutils \
+ readline ncurses libyaml openssl curl libunwind icu \
+ python27 py27-pip py27-setuptools py27-daemon \
+ py27-yaml py27-argparse py27-six py27-gevent \
+ gdb bash vim
+
+build_freebsd:
+ cmake .
+ gmake
+ sudo make install
+
+runtest_freebsd: build_freebsd
+ cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING) || true
+
+test_freebsd: deps_freebsd runtest_freebsd
+
+###################
+# Sources & Packs #
+###################
+
source:
git clone https://github.com/packpack/packpack.git packpack
TARBALL_COMPRESSOR=gz packpack/packpack tarball
diff --git a/.travis.yml b/.travis.yml
index e94d02ef5..a22197845 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,6 +17,9 @@ cache:
git:
depth: 100500
+env: >
+ NO_PARALLEL_TESTING="-j 1"
+
jobs:
include:
# Testing targets (just run tests on Debian Stretch or OS X).
diff --git a/images/Dockerfile.debian b/images/Dockerfile.debian
new file mode 100644
index 000000000..eb5278343
--- /dev/null
+++ b/images/Dockerfile.debian
@@ -0,0 +1,4 @@
+FROM packpack/packpack:debian-stretch
+
+COPY .travis.mk .
+RUN make -f .travis.mk deps_ubuntu
diff --git a/images/Dockerfile.lto b/images/Dockerfile.lto
new file mode 100644
index 000000000..54c585acc
--- /dev/null
+++ b/images/Dockerfile.lto
@@ -0,0 +1,5 @@
+FROM packpack/packpack:debian-buster
+
+COPY .travis.mk .
+RUN make -f .travis.mk deps_ubuntu
+RUN make -f .travis.mk deps_buster_clang_8
--
2.17.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [tarantool-patches] Re: [PATCH v2 1/2] Gitlab-ci updated after reiview - w/o perf
2019-06-15 4:46 [tarantool-patches] [PATCH v2 1/2] Gitlab-ci updated after reiview - w/o perf Alexander V. Tikhonov
@ 2019-06-18 11:07 ` Alexander Turenko
2019-06-19 6:52 ` [tarantool-patches] " Alexander Tikhonov
0 siblings, 1 reply; 3+ messages in thread
From: Alexander Turenko @ 2019-06-18 11:07 UTC (permalink / raw)
To: Alexander V. Tikhonov; +Cc: tarantool-patches
Thanks, Alexander!
test_foo runs runtest_foo, which runs test-run.py. This looks confusing
for me. We can use names like `test_ubuntu` and `test_ubuntu_no_deps`.
Comments below are generally re decreasing number of goals that I think
will simplify the configuration at whole.
WBR, Alexander Turenko.
On Sat, Jun 15, 2019 at 07:46:23AM +0300, Alexander V. Tikhonov wrote:
> ---
>
> Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-4156-gitlab-ci-testing
> Issue: https://github.com/tarantool/tarantool/issues/4156
>
> .gitlab-ci.yml | 328 +++++++++++++++++++++++++++++++++++++++
> .gitlab.mk | 57 +++++++
> .travis.mk | 101 +++++++++---
> .travis.yml | 3 +
> images/Dockerfile.debian | 4 +
> images/Dockerfile.lto | 5 +
> 6 files changed, 475 insertions(+), 23 deletions(-)
> create mode 100644 .gitlab-ci.yml
> create mode 100644 .gitlab.mk
> create mode 100644 images/Dockerfile.debian
> create mode 100644 images/Dockerfile.lto
>
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> new file mode 100644
> index 000000000..01c4eacea
> --- /dev/null
> +++ b/.gitlab-ci.yml
> @@ -0,0 +1,328 @@
> +stages:
> + - bootstrap
> + - test
> + - perf_deploy
Nit: Maybe perf_and_deploy?
However I would name it just 'deploy' within this patch.
> +
> +variables:
> + VERSION_SUFFIX: "master"
> + IMAGE_TEST: "${CI_REGISTRY}/${CI_PROJECT_PATH}:debian-stretch_${VERSION_SUFFIX}"
> + IMAGE_TEST_LTO: "${CI_REGISTRY}/${CI_PROJECT_PATH}:debian-buster_${VERSION_SUFFIX}"
This suffix does not resolve any problems with changed dependencies. So,
we should either remove it for now or really resolve the problem: say,
use $(md5sum .travis.mk | awk '{ print $1 }') as a tag name.
BTW, I would prefer to use tags instead of suffixes; gitlab ci supports
it.
> + FLAG_LTO: "-DENABLE_LTO=ON"
I think -DENABLE_LTO-ON is more self-descriptive then this variable
name. There is no need to extract it to a variable.
> + GITLAB_MAKE: "make -f .gitlab.mk"
> +
> +# Bootstraps
> +
> +debian9:
> + stage: bootstrap
> + tags:
> + - bootstrap
> + variables:
> + IMAGE: ${IMAGE_TEST}
> + DOCKERFILE_SUFFIX: "debian"
> + script:
> + - ${GITLAB_MAKE} docker_bootstrap
> +
> +debian10_lto:
> + only:
> + refs:
> + - master
> + - /.*/
As we discusssed voicely: /.*/ should not be here in a final patch. We
however can provide an ability to run full testing on a branch different
from master. Say, match /.*-full/.
(The same is applicable for all such patterns below.)
> + stage: bootstrap
> + tags:
> + - bootstrap
> + variables:
> + IMAGE: ${IMAGE_TEST_LTO}
> + DOCKERFILE_SUFFIX: "lto"
> + script:
> + - ${GITLAB_MAKE} docker_bootstrap
> +
> +# Tests
> +
> +release:
> + image: ${IMAGE_TEST}
> + stage: test
> + tags:
> + - docker_test
> + script:
> + - ${GITLAB_MAKE} runtest_ubuntu
> +
> +debug:
> + image: ${IMAGE_TEST}
> + stage: test
> + tags:
> + - docker_test
> + script:
> + - ${GITLAB_MAKE} runtest_cov_ubuntu
> +
> +release_clang:
> + image: ${IMAGE_TEST}
> + stage: test
> + tags:
> + - docker_test
> + variables:
> + CC: clang
> + CXX: clang++
> + script:
> + - ${GITLAB_MAKE} runtest_ubuntu
> +
> +release_lto:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: ${IMAGE_TEST_LTO}
> + stage: test
> + tags:
> + - docker_test
> + variables:
> + CMAKE_EXTRA_PARAMS: ${FLAG_LTO}
> + script:
> + - ${GITLAB_MAKE} runtest_ubuntu
> +
> +release_lto_clang8:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: ${IMAGE_TEST_LTO}
> + stage: test
> + tags:
> + - docker_test
> + variables:
> + CC: clang-8
> + CXX: clang++-8
> + CMAKE_EXTRA_PARAMS: ${FLAG_LTO}
> + script:
> + - ${GITLAB_MAKE} runtest_ubuntu
> +
> +osx13_release:
> + only:
> + refs:
> + - master
> + - /.*/
> + stage: test
> + tags:
> + - vms_sierra
> + variables:
> + VMS_NAME: 'Sierra'
> + VMS_USER: 'tarantool'
> + VMS_PORT: '2212'
> + before_script:
> + - ${GITLAB_MAKE} vms_start
> + script:
> + - export
Forgotten debug? Below too.
> + - ${GITLAB_MAKE} vms_test_osx
> + after_script:
> + - ${GITLAB_MAKE} vms_shutdown
> +
> +osx14_release:
> + stage: test
> + tags:
> + - vms_mojave
> + variables:
> + VMS_NAME: 'Mojave'
> + VMS_USER: 'tarantool'
> + VMS_PORT: '2222'
> + before_script:
> + - ${GITLAB_MAKE} vms_start
> + script:
> + - export
> + - ${GITLAB_MAKE} vms_test_osx
> + after_script:
> + - ${GITLAB_MAKE} vms_shutdown
> +
> +osx14_release_lto:
> + only:
> + refs:
> + - master
> + - /.*/
> + stage: test
> + tags:
> + - vms_mojave
> + variables:
> + EXTRA_ENV: "export CMAKE_EXTRA_PARAMS=${FLAG_LTO} ;"
> + VMS_NAME: 'Mojave'
> + VMS_USER: 'tarantool'
> + VMS_PORT: '2222'
> + before_script:
> + - ${GITLAB_MAKE} vms_start
> + script:
> + - export
> + - ${GITLAB_MAKE} vms_test_osx
> + after_script:
> + - ${GITLAB_MAKE} vms_shutdown
> +
> +freebsd_release:
> + stage: test
> + tags:
> + - vms_freebsd
> + variables:
> + VMS_NAME: 'Freebsd'
I would include a version number into the virtual machine name (and the
job name too).
> + VMS_USER: 'vagrant'
> + VMS_PORT: '2232'
> + TRAVIS_MAKE: 'gmake -f .travis.mk'
> + before_script:
> + - ${GITLAB_MAKE} vms_start
> + script:
> + - export
> + - ${GITLAB_MAKE} vms_test_freebsd
> + after_script:
> + - ${GITLAB_MAKE} vms_shutdown
> +
> +# Packs
> +
> +pack_cent6:
Why cent, not centos?
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:el-6
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run_cent6
> +
> +pack_cent7:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:el-7
> + stage: perf_deploy
> + tags:
> + - deploy_test
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_fedora28:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:fedora-28
> + stage: perf_deploy
> + tags:
> + - deploy_test
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_fedora29:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:fedora-29
> + stage: perf_deploy
> + tags:
> + - deploy_test
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_fedora30:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:fedora-30
> + stage: perf_deploy
> + tags:
> + - deploy_test
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_ubuntu14:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:ubuntu-trusty
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_ubuntu16:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:ubuntu-xenial
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_ubuntu18:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:ubuntu-bionic
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_ubuntu1810:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:ubuntu-cosmic
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_ubuntu19:
I would name it 'package_ubuntu_19_04'.
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:ubuntu-disco
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_debian8:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:debian-jessie
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_debian9:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:debian-stretch
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> +
> +pack_debian10:
> + only:
> + refs:
> + - master
> + - /.*/
> + image: packpack/packpack:debian-buster
> + stage: perf_deploy
> + tags:
> + - deploy
> + script:
> + - ${GITLAB_MAKE} pack_run
> diff --git a/.gitlab.mk b/.gitlab.mk
> new file mode 100644
> index 000000000..00a75a389
> --- /dev/null
> +++ b/.gitlab.mk
> @@ -0,0 +1,57 @@
> +GITLAB_MAKE?=make -f .gitlab.mk
> +TRAVIS_MAKE?=make -f .travis.mk
> +GIT_SUBMODULES_UPDATE?=git submodule update --recursive --init
Nit: I would name it GIT_SUBMODULE_UPDATE (w/o 'S'), because the command
is named so.
> +DOCKER_BUILD=docker build --network=host
I think there is no much reason to extract it from 'docker_bootstrap'
goal.
> +
> +# docker images bootstrap
> +docker_login:
> + docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
Why do we need to extract this goal? It is used only in
docker_bootstrap.
> +
> +docker_bootstrap: docker_login
> + cp .travis.mk images/
> + ${DOCKER_BUILD} -t ${IMAGE} -f images/Dockerfile.${DOCKERFILE_SUFFIX} images
We can give . (a current directory) as a context, so we'll not need to
copy .travis.mk.
Also we can generate a dockerfile on-the-fly: I don't see much need to
keep it in the repository.
If a docker version allows we can even pass a dockerfile to stdin:
https://stackoverflow.com/a/42559367/1598057
> + docker push ${IMAGE}
> +
> +# build sources with different flags and test
It is the title for the set of goals below? Looks as a comment for one
goal. Also here I see that bootstrap, submodules update and runnign
tests are doing, but not build sources. It seems the comment is not
precise.
> +git_submodules_update:
> + ${GIT_SUBMODULES_UPDATE} --force
Nit: The same as for GIT_SUBMODULES_UPDATE -> GIT_SUBMODULE_UPDATE:
git_submodules_update -> git_submodule_update.
Is there real need in this flag (some specific case when it is needed)?
What will going on CentOS 6 if we'll run into this case?
If it is really needed and we don't want to handle it on CentOS 6 (that
is strange), can we just run it like so?
$ git submodule update --recursive --init --force || git submodule update --recursive --init
It will allow to reduce amount of goals and so simplify the file.
> +
> +git_submodules_update_cent6:
> + ${GIT_SUBMODULES_UPDATE}
> +
> +runtest_%: git_submodules_update
> + ${TRAVIS_MAKE} $@
> +
> +# build sources with different flags and test under VBox virtual machines
> +vms_start:
> + VBoxManage controlvm ${VMS_NAME} poweroff || true
> + VBoxManage snapshot ${VMS_NAME} restore ${VMS_NAME}
> + VBoxManage startvm ${VMS_NAME} --type headless
> +
> +vms_test_%:
> + ssh -A ${VMS_USER}@127.0.0.1 -p ${VMS_PORT} "/bin/bash -c \
Should we really expose host keys into a virtual environment (-A
option)?
> + '${EXTRA_ENV} \
> + export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ; \
> + cd tarantool && \
> + git fetch -p && \
> + git checkout --force ${CI_BUILD_REF} && \
> + ${GITLAB_MAKE} git_submodules_update && \
> + ${TRAVIS_MAKE} $(subst vms_,,$@)'"
> +
> +vms_shutdown:
> + VBoxManage controlvm ${VMS_NAME} poweroff
> +
> +# build packs and test
> +pack_clone:
> + git clone https://github.com/packpack/packpack.git packpack
> +
> +pack_make:
> + # to avoid of issue with too long names build path is short
> + make -f packpack/pack/Makefile -C . BUILDDIR=/builds/pack -j
Why do we need to split 'pack_build' into 'pack_clone' and 'pack_make'?
> +
> +pack_build: pack_clone pack_make
> +
> +pack_run: git_submodules_update pack_build
> +
> +pack_run_cent6: git_submodules_update_cent6 pack_build
> +
Nit: Extra empty line at the of the file.
I would squash all pack goals into one w/o deps (just 'package') and
update submodules just with a command. I guess --force is not really
needed and the command can be the same on all OSes.
Yep, we'll duplicate the command in +vms_test_%, but the structure of
the file will be simpler and one can read a certain sequince of commands
w/o look into dependent goals tree.
> diff --git a/.travis.mk b/.travis.mk
> index 6d0c42207..7d61c218b 100644
> --- a/.travis.mk
> +++ b/.travis.mk
> @@ -3,6 +3,7 @@
> #
>
> DOCKER_IMAGE?=packpack/packpack:debian-stretch
> +NO_PARALLEL_TESTING?=
I would name it TEST_RUN_EXTRA_PARAMS (we already have
CMAKE_EXTRA_PARAMS).
>
> all: package
>
> @@ -33,8 +34,12 @@ docker_%:
> ${DOCKER_IMAGE} \
> make -f .travis.mk $(subst docker_,,$@)
>
> +#########
> +# Linux #
> +#########
> +
> deps_ubuntu:
> - sudo apt-get update && apt-get install -y -f \
> + apt-get -y update && apt-get install -y -f \
> build-essential cmake coreutils sed \
> libreadline-dev libncurses5-dev libyaml-dev libssl-dev \
> libcurl4-openssl-dev libunwind-dev libicu-dev \
> @@ -42,34 +47,29 @@ deps_ubuntu:
> python-msgpack python-yaml python-argparse python-six python-gevent \
> lcov ruby clang llvm llvm-dev
>
> -test_ubuntu: deps_ubuntu
> +deps_buster_clang_8:
> + echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" > /etc/apt/sources.list.d/clang_8.list
> + echo "deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" >> /etc/apt/sources.list.d/clang_8.list
> + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
You removed 'sudo' above, but added it here. Is it the typo?
> + apt-get -y update
> + apt-get -y install clang-8 llvm-8 llvm-8-dev
Are llvm headers really needed? BTW, the same question re llvm-dev
above.
> +
> +build_ubuntu:
> cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
> - make -j8
> - cd test && /usr/bin/python test-run.py --force -j 1
> + make -j
>
> -deps_osx:
> - brew update
> - brew install openssl readline curl icu4c --force
> - python2 -V || brew install python2 --force
> - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python
> - pip install -r test-run/requirements.txt
> +runtest_ubuntu: build_ubuntu
> + cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING)
>
> -test_osx: deps_osx
> - cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
> - # Increase the maximum number of open file descriptors on macOS
> - sudo sysctl -w kern.maxfiles=20480 || :
> - sudo sysctl -w kern.maxfilesperproc=20480 || :
> - sudo launchctl limit maxfiles 20480 || :
> - ulimit -S -n 20480 || :
> - ulimit -n
> - make -j8
> - cd test && ./test-run.py --force -j 1 unit/ app/ app-tap/ box/ box-tap/
> +test_ubuntu: deps_ubuntu runtest_ubuntu
>
> -coverage_ubuntu: deps_ubuntu
> +build_cov_ubuntu:
I would use the word 'coverage' everywhere instead of 'coverage' and
'cov' here and there.
> cmake . -DCMAKE_BUILD_TYPE=Debug -DENABLE_GCOV=ON
> - make -j8
> + make -j
> +
> +runtest_cov_ubuntu: build_cov_ubuntu
> # Enable --long tests for coverage
> - cd test && /usr/bin/python test-run.py --force -j 1 --long
> + cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING) --long
> lcov --compat-libtool --directory src/ --capture --output-file coverage.info.tmp
> lcov --compat-libtool --remove coverage.info.tmp 'tests/*' 'third_party/*' '/usr/*' \
> --output-file coverage.info
> @@ -81,6 +81,61 @@ coverage_ubuntu: deps_ubuntu
> coveralls-lcov --service-name travis-ci --service-job-id $(TRAVIS_JOB_ID) --repo-token $(COVERALLS_TOKEN) coverage.info; \
> fi;
>
> +coverage_ubuntu: deps_ubuntu runtest_cov_ubuntu
> +
> +#######
> +# OSX #
> +#######
> +
> +deps_osx:
> + brew update
> + brew install openssl readline curl icu4c --force
> + python2 -V || brew install python2 --force
> + curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py >get-pip.py
> + python get-pip.py --user
> + pip install --user --ignore-installed -r test-run/requirements.txt
> +
> +build_osx:
> + cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
> + make -j
> +
> +runtest_osx: build_osx
> + # Increase the maximum number of open file descriptors on macOS
> + sudo sysctl -w kern.maxfiles=20480 || :
> + sudo sysctl -w kern.maxfilesperproc=20480 || :
> + sudo launchctl limit maxfiles 20480 || :
> + ulimit -S -n 20480 || :
> + ulimit -n
> + cd test && ./test-run.py --force $(NO_PARALLEL_TESTING) unit/ app/ app-tap/ box/ box-tap/
> +
> +test_osx: deps_osx runtest_osx
> +
> +###########
> +# FreeBSD #
> +###########
> +
> +deps_freebsd:
> + # don't use bad py27-msgpack-python
Can you link exact problem description here or in the commit message?
> + sudo pkg install -y sudo git cmake gmake gcc coreutils \
> sudo pkg install -y sudo
If sudo is not installed, then this command will fail. If it is
installed, then we don't need to add it to the package list.
> + readline ncurses libyaml openssl curl libunwind icu \
> + python27 py27-pip py27-setuptools py27-daemon \
> + py27-yaml py27-argparse py27-six py27-gevent \
> + gdb bash vim
Installing vim in a testing environment is the strange thing.
> +
> +build_freebsd:
> + cmake .
I would explicitly set a build type (I guess it worth to test
RelWithDebInfo), set -DENABLE_WERROR=ON and pass ${CMAKE_EXTRA_PARAMS}
here (even despite we don't use it right now).
> + gmake
Use -j as in other make invocations?
> + sudo make install
Why do we need to install tarantool into a system? test-run able to
detect in-source build.
> +
> +runtest_freebsd: build_freebsd
> + cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING) || true
Volkswagen mode?
> +
> +test_freebsd: deps_freebsd runtest_freebsd
> +
> +###################
> +# Sources & Packs #
> +###################
I would say 'Source tarballs', because we have no such separate things
as 'source' and 'pack'. I mean, it is possible to undestand the header
in a wrong way.
> +
> source:
> git clone https://github.com/packpack/packpack.git packpack
> TARBALL_COMPRESSOR=gz packpack/packpack tarball
> diff --git a/.travis.yml b/.travis.yml
> index e94d02ef5..a22197845 100644
> --- a/.travis.yml
> +++ b/.travis.yml
> @@ -17,6 +17,9 @@ cache:
> git:
> depth: 100500
>
> +env: >
> + NO_PARALLEL_TESTING="-j 1"
> +
> jobs:
> include:
> # Testing targets (just run tests on Debian Stretch or OS X).
> diff --git a/images/Dockerfile.debian b/images/Dockerfile.debian
> new file mode 100644
> index 000000000..eb5278343
> --- /dev/null
> +++ b/images/Dockerfile.debian
> @@ -0,0 +1,4 @@
> +FROM packpack/packpack:debian-stretch
> +
> +COPY .travis.mk .
> +RUN make -f .travis.mk deps_ubuntu
> diff --git a/images/Dockerfile.lto b/images/Dockerfile.lto
> new file mode 100644
> index 000000000..54c585acc
> --- /dev/null
> +++ b/images/Dockerfile.lto
> @@ -0,0 +1,5 @@
> +FROM packpack/packpack:debian-buster
> +
> +COPY .travis.mk .
> +RUN make -f .travis.mk deps_ubuntu
> +RUN make -f .travis.mk deps_buster_clang_8
I guess we can remove these files, se the comment to 'docker_bootstrap'
goal above.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [tarantool-patches] Re: [tarantool-patches] Re: [PATCH v2 1/2] Gitlab-ci updated after reiview - w/o perf
2019-06-18 11:07 ` [tarantool-patches] " Alexander Turenko
@ 2019-06-19 6:52 ` Alexander Tikhonov
0 siblings, 0 replies; 3+ messages in thread
From: Alexander Tikhonov @ 2019-06-19 6:52 UTC (permalink / raw)
To: tarantool-patches, Alexander Turenko
[-- Attachment #1: Type: text/plain, Size: 20359 bytes --]
>Вторник, 18 июня 2019, 14:08 +03:00 от Alexander Turenko <alexander.turenko@tarantool.org>:
>Thanks, Alexander!
>
>test_foo runs runtest_foo, which runs test-run.py. This looks confusing
>for me. We can use names like `test_ubuntu` and `test_ubuntu_no_deps`.
>
>Comments below are generally re decreasing number of goals that I think
>will simplify the configuration at whole.
>
>WBR, Alexander Turenko.
>
Fixed.
>
>On Sat, Jun 15, 2019 at 07:46:23AM +0300, Alexander V. Tikhonov wrote:
>> ---
>>
>> Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-4156-gitlab-ci-testing
>> Issue: https://github.com/tarantool/tarantool/issues/4156
>>
>> .gitlab-ci.yml | 328 +++++++++++++++++++++++++++++++++++++++
>> .gitlab.mk | 57 +++++++
>> .travis.mk | 101 +++++++++---
>> .travis.yml | 3 +
>> images/Dockerfile.debian | 4 +
>> images/Dockerfile.lto | 5 +
>> 6 files changed, 475 insertions(+), 23 deletions(-)
>> create mode 100644 .gitlab-ci.yml
>> create mode 100644 .gitlab.mk
>> create mode 100644 images/Dockerfile.debian
>> create mode 100644 images/Dockerfile.lto
>>
>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>> new file mode 100644
>> index 000000000..01c4eacea
>> --- /dev/null
>> +++ b/.gitlab-ci.yml
>> @@ -0,0 +1,328 @@
>> +stages:
>> + - bootstrap
>> + - test
>> + - perf_deploy
>
>Nit: Maybe perf_and_deploy?
>
>However I would name it just 'deploy' within this patch.
>
Fixed.
>
>> +
>> +variables:
>> + VERSION_SUFFIX: "master"
>> + IMAGE_TEST: "${CI_REGISTRY}/${CI_PROJECT_PATH}:debian-stretch_${VERSION_SUFFIX}"
>> + IMAGE_TEST_LTO: "${CI_REGISTRY}/${CI_PROJECT_PATH}:debian-buster_${VERSION_SUFFIX}"
>
>This suffix does not resolve any problems with changed dependencies. So,
>we should either remove it for now or really resolve the problem: say,
>use $(md5sum .travis.mk | awk '{ print $1 }') as a tag name.
>
Not possible to use scripts for variables, neither use API to remove images from registry. Not resolved.
>
>BTW, I would prefer to use tags instead of suffixes; gitlab ci supports
>it.
>
Fixed.
>
>> + FLAG_LTO: "-DENABLE_LTO=ON"
>
>I think -DENABLE_LTO-ON is more self-descriptive then this variable
>name. There is no need to extract it to a variable.
>
Fixed, set name to: 'DENABLE_LTO_ON'
>
>> + GITLAB_MAKE: "make -f .gitlab.mk"
>> +
>> +# Bootstraps
>> +
>> +debian9:
>> + stage: bootstrap
>> + tags:
>> + - bootstrap
>> + variables:
>> + IMAGE: ${IMAGE_TEST}
>> + DOCKERFILE_SUFFIX: "debian"
>> + script:
>> + - ${GITLAB_MAKE} docker_bootstrap
>> +
>> +debian10_lto:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>
>As we discusssed voicely: /.*/ should not be here in a final patch. We
>however can provide an ability to run full testing on a branch different
>from master. Say, match /.*-full/.
>
>(The same is applicable for all such patterns below.)
>
Working on.
>
>> + stage: bootstrap
>> + tags:
>> + - bootstrap
>> + variables:
>> + IMAGE: ${IMAGE_TEST_LTO}
>> + DOCKERFILE_SUFFIX: "lto"
>> + script:
>> + - ${GITLAB_MAKE} docker_bootstrap
>> +
>> +# Tests
>> +
>> +release:
>> + image: ${IMAGE_TEST}
>> + stage: test
>> + tags:
>> + - docker_test
>> + script:
>> + - ${GITLAB_MAKE} runtest_ubuntu
>> +
>> +debug:
>> + image: ${IMAGE_TEST}
>> + stage: test
>> + tags:
>> + - docker_test
>> + script:
>> + - ${GITLAB_MAKE} runtest_cov_ubuntu
>> +
>> +release_clang:
>> + image: ${IMAGE_TEST}
>> + stage: test
>> + tags:
>> + - docker_test
>> + variables:
>> + CC: clang
>> + CXX: clang++
>> + script:
>> + - ${GITLAB_MAKE} runtest_ubuntu
>> +
>> +release_lto:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: ${IMAGE_TEST_LTO}
>> + stage: test
>> + tags:
>> + - docker_test
>> + variables:
>> + CMAKE_EXTRA_PARAMS: ${FLAG_LTO}
>> + script:
>> + - ${GITLAB_MAKE} runtest_ubuntu
>> +
>> +release_lto_clang8:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: ${IMAGE_TEST_LTO}
>> + stage: test
>> + tags:
>> + - docker_test
>> + variables:
>> + CC: clang-8
>> + CXX: clang++-8
>> + CMAKE_EXTRA_PARAMS: ${FLAG_LTO}
>> + script:
>> + - ${GITLAB_MAKE} runtest_ubuntu
>> +
>> +osx13_release:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + stage: test
>> + tags:
>> + - vms_sierra
>> + variables:
>> + VMS_NAME: 'Sierra'
>> + VMS_USER: 'tarantool'
>> + VMS_PORT: '2212'
>> + before_script:
>> + - ${GITLAB_MAKE} vms_start
>> + script:
>> + - export
>
>Forgotten debug? Below too.
Fixed.
>
>
>> + - ${GITLAB_MAKE} vms_test_osx
>> + after_script:
>> + - ${GITLAB_MAKE} vms_shutdown
>> +
>> +osx14_release:
>> + stage: test
>> + tags:
>> + - vms_mojave
>> + variables:
>> + VMS_NAME: 'Mojave'
>> + VMS_USER: 'tarantool'
>> + VMS_PORT: '2222'
>> + before_script:
>> + - ${GITLAB_MAKE} vms_start
>> + script:
>> + - export
>> + - ${GITLAB_MAKE} vms_test_osx
>> + after_script:
>> + - ${GITLAB_MAKE} vms_shutdown
>> +
>> +osx14_release_lto:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + stage: test
>> + tags:
>> + - vms_mojave
>> + variables:
>> + EXTRA_ENV: "export CMAKE_EXTRA_PARAMS=${FLAG_LTO} ;"
>> + VMS_NAME: 'Mojave'
>> + VMS_USER: 'tarantool'
>> + VMS_PORT: '2222'
>> + before_script:
>> + - ${GITLAB_MAKE} vms_start
>> + script:
>> + - export
>> + - ${GITLAB_MAKE} vms_test_osx
>> + after_script:
>> + - ${GITLAB_MAKE} vms_shutdown
>> +
>> +freebsd_release:
>> + stage: test
>> + tags:
>> + - vms_freebsd
>> + variables:
>> + VMS_NAME: 'Freebsd'
>
>I would include a version number into the virtual machine name (and the
>job name too).
Fixed.
>
>
>> + VMS_USER: 'vagrant'
>> + VMS_PORT: '2232'
>> + TRAVIS_MAKE: 'gmake -f .travis.mk'
>> + before_script:
>> + - ${GITLAB_MAKE} vms_start
>> + script:
>> + - export
>> + - ${GITLAB_MAKE} vms_test_freebsd
>> + after_script:
>> + - ${GITLAB_MAKE} vms_shutdown
>> +
>> +# Packs
>> +
>> +pack_cent6:
>
>Why cent, not centos?
Fixed.
>
>
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:el-6
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run_cent6
>> +
>> +pack_cent7:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:el-7
>> + stage: perf_deploy
>> + tags:
>> + - deploy_test
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_fedora28:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:fedora-28
>> + stage: perf_deploy
>> + tags:
>> + - deploy_test
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_fedora29:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:fedora-29
>> + stage: perf_deploy
>> + tags:
>> + - deploy_test
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_fedora30:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:fedora-30
>> + stage: perf_deploy
>> + tags:
>> + - deploy_test
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_ubuntu14:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:ubuntu-trusty
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_ubuntu16:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:ubuntu-xenial
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_ubuntu18:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:ubuntu-bionic
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_ubuntu1810:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:ubuntu-cosmic
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_ubuntu19:
>
>I would name it 'package_ubuntu_19_04'.
Fixed like 'ubuntu_19_04'.
>
>
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:ubuntu-disco
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_debian8:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:debian-jessie
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_debian9:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:debian-stretch
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> +
>> +pack_debian10:
>> + only:
>> + refs:
>> + - master
>> + - /.*/
>> + image: packpack/packpack:debian-buster
>> + stage: perf_deploy
>> + tags:
>> + - deploy
>> + script:
>> + - ${GITLAB_MAKE} pack_run
>> diff --git a/.gitlab.mk b/.gitlab.mk
>> new file mode 100644
>> index 000000000..00a75a389
>> --- /dev/null
>> +++ b/.gitlab.mk
>> @@ -0,0 +1,57 @@
>> +GITLAB_MAKE?=make -f .gitlab.mk
>> +TRAVIS_MAKE?=make -f .travis.mk
>> +GIT_SUBMODULES_UPDATE?=git submodule update --recursive --init
>
>Nit: I would name it GIT_SUBMODULE_UPDATE (w/o 'S'), because the command
>is named so.
>
Fixed.
>
>> +DOCKER_BUILD=docker build --network=host
>
>I think there is no much reason to extract it from 'docker_bootstrap'
>goal.
>
Fixed.
>
>> +
>> +# docker images bootstrap
>> +docker_login:
>> + docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
>
>Why do we need to extract this goal? It is used only in
>docker_bootstrap.
Fixed.
>
>
>> +
>> +docker_bootstrap: docker_login
>> + cp .travis.mk images/
>> + ${DOCKER_BUILD} -t ${IMAGE} -f images/Dockerfile.${DOCKERFILE_SUFFIX} images
>
>We can give . (a current directory) as a context, so we'll not need to
>copy .travis.mk.
Fixed.
>
>
>Also we can generate a dockerfile on-the-fly: I don't see much need to
>keep it in the repository.
>
>If a docker version allows we can even pass a dockerfile to stdin:
>https://stackoverflow.com/a/42559367/1598057
>
Fixed.
>
>> + docker push ${IMAGE}
>> +
>> +# build sources with different flags and test
>
>It is the title for the set of goals below? Looks as a comment for one
>goal. Also here I see that bootstrap, submodules update and runnign
>tests are doing, but not build sources. It seems the comment is not
>precise.
>
Right, the comment for a set of goals there below.
>
>> +git_submodules_update:
>> + ${GIT_SUBMODULES_UPDATE} --force
>
>Nit: The same as for GIT_SUBMODULES_UPDATE -> GIT_SUBMODULE_UPDATE:
>git_submodules_update -> git_submodule_update.
>
Fixed.
>
>Is there real need in this flag (some specific case when it is needed)?
>What will going on CentOS 6 if we'll run into this case?
>
Once I got the broken repository some how, '--force' flag fixed it, on CentOS 6 will need to fix it manually.
>
>If it is really needed and we don't want to handle it on CentOS 6 (that
>is strange), can we just run it like so?
>
>$ git submodule update --recursive --init --force || git submodule update --recursive --init
>
>It will allow to reduce amount of goals and so simplify the file.
>
Fixed.
>
>> +
>> +git_submodules_update_cent6:
>> + ${GIT_SUBMODULES_UPDATE}
>> +
>> +runtest_%: git_submodules_update
>> + ${TRAVIS_MAKE} $@
>> +
>> +# build sources with different flags and test under VBox virtual machines
>> +vms_start:
>> + VBoxManage controlvm ${VMS_NAME} poweroff || true
>> + VBoxManage snapshot ${VMS_NAME} restore ${VMS_NAME}
>> + VBoxManage startvm ${VMS_NAME} --type headless
>> +
>> +vms_test_%:
>> + ssh -A ${VMS_USER}@127.0.0.1 -p ${VMS_PORT} "/bin/bash -c \
>
>Should we really expose host keys into a virtual environment (-A
>option)?
>
Fixed.
>
>> + '${EXTRA_ENV} \
>> + export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ; \
>> + cd tarantool && \
>> + git fetch -p && \
>> + git checkout --force ${CI_BUILD_REF} && \
>> + ${GITLAB_MAKE} git_submodules_update && \
>> + ${TRAVIS_MAKE} $(subst vms_,,$@)'"
>> +
>> +vms_shutdown:
>> + VBoxManage controlvm ${VMS_NAME} poweroff
>> +
>> +# build packs and test
>> +pack_clone:
>> + git clone https://github.com/packpack/packpack.git packpack
>> +
>> +pack_make:
>> + # to avoid of issue with too long names build path is short
>> + make -f packpack/pack/Makefile -C . BUILDDIR=/builds/pack -j
>
>Why do we need to split 'pack_build' into 'pack_clone' and 'pack_make'?
>
Fixed.
>
>> +
>> +pack_build: pack_clone pack_make
>> +
>> +pack_run: git_submodules_update pack_build
>> +
>> +pack_run_cent6: git_submodules_update_cent6 pack_build
>> +
>
>Nit: Extra empty line at the of the file.
>
Fixed.
>
>I would squash all pack goals into one w/o deps (just 'package') and
>update submodules just with a command. I guess --force is not really
>needed and the command can be the same on all OSes.
>
Once I got the broken repository some how, '--force' flag fixed it.
Fixed, but left update submodules call.
>Yep, we'll duplicate the command in +vms_test_%, but the structure of
>the file will be simpler and one can read a certain sequince of commands
>w/o look into dependent goals tree.
>
I don't think so, once I already got this issue with this wrong command and spent
time to check all places where it was used, better to use the standalone target.
>
>> diff --git a/.travis.mk b/.travis.mk
>> index 6d0c42207..7d61c218b 100644
>> --- a/.travis.mk
>> +++ b/.travis.mk
>> @@ -3,6 +3,7 @@
>> #
>>
>> DOCKER_IMAGE?=packpack/packpack:debian-stretch
>> +NO_PARALLEL_TESTING?=
>
>I would name it TEST_RUN_EXTRA_PARAMS (we already have
>CMAKE_EXTRA_PARAMS).
>
Fixed.
>
>>
>> all: package
>>
>> @@ -33,8 +34,12 @@ docker_%:
>> ${DOCKER_IMAGE} \
>> make -f .travis.mk $(subst docker_,,$@)
>>
>> +#########
>> +# Linux #
>> +#########
>> +
>> deps_ubuntu:
>> - sudo apt-get update && apt-get install -y -f \
>> + apt-get -y update && apt-get install -y -f \
>> build-essential cmake coreutils sed \
>> libreadline-dev libncurses5-dev libyaml-dev libssl-dev \
>> libcurl4-openssl-dev libunwind-dev libicu-dev \
>> @@ -42,34 +47,29 @@ deps_ubuntu:
>> python-msgpack python-yaml python-argparse python-six python-gevent \
>> lcov ruby clang llvm llvm-dev
>>
>> -test_ubuntu: deps_ubuntu
>> +deps_buster_clang_8:
>> + echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" > /etc/apt/sources.list.d/clang_8.list
>> + echo "deb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" >> /etc/apt/sources.list.d/clang_8.list
>> + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
>
>You removed 'sudo' above, but added it here. Is it the typo?
Fixed.
>
>
>> + apt-get -y update
>> + apt-get -y install clang-8 llvm-8 llvm-8-dev
>
>Are llvm headers really needed? BTW, the same question re llvm-dev
>above.
>
Fixed.
>
>> +
>> +build_ubuntu:
>> cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
>> - make -j8
>> - cd test && /usr/bin/python test-run.py --force -j 1
>> + make -j
>>
>> -deps_osx:
>> - brew update
>> - brew install openssl readline curl icu4c --force
>> - python2 -V || brew install python2 --force
>> - curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python
>> - pip install -r test-run/requirements.txt
>> +runtest_ubuntu: build_ubuntu
>> + cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING)
>>
>> -test_osx: deps_osx
>> - cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
>> - # Increase the maximum number of open file descriptors on macOS
>> - sudo sysctl -w kern.maxfiles=20480 || :
>> - sudo sysctl -w kern.maxfilesperproc=20480 || :
>> - sudo launchctl limit maxfiles 20480 || :
>> - ulimit -S -n 20480 || :
>> - ulimit -n
>> - make -j8
>> - cd test && ./test-run.py --force -j 1 unit/ app/ app-tap/ box/ box-tap/
>> +test_ubuntu: deps_ubuntu runtest_ubuntu
>>
>> -coverage_ubuntu: deps_ubuntu
>> +build_cov_ubuntu:
>
>I would use the word 'coverage' everywhere instead of 'coverage' and
>'cov' here and there.
>
Fixed.
>
>> cmake . -DCMAKE_BUILD_TYPE=Debug -DENABLE_GCOV=ON
>> - make -j8
>> + make -j
>> +
>> +runtest_cov_ubuntu: build_cov_ubuntu
>> # Enable --long tests for coverage
>> - cd test && /usr/bin/python test-run.py --force -j 1 --long
>> + cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING) --long
>> lcov --compat-libtool --directory src/ --capture --output-file coverage.info.tmp
>> lcov --compat-libtool --remove coverage.info.tmp 'tests/*' 'third_party/*' '/usr/*' \
>> --output-file coverage.info
>> @@ -81,6 +81,61 @@ coverage_ubuntu: deps_ubuntu
>> coveralls-lcov --service-name travis-ci --service-job-id $(TRAVIS_JOB_ID) --repo-token $(COVERALLS_TOKEN) coverage.info; \
>> fi;
>>
>> +coverage_ubuntu: deps_ubuntu runtest_cov_ubuntu
>> +
>> +#######
>> +# OSX #
>> +#######
>> +
>> +deps_osx:
>> + brew update
>> + brew install openssl readline curl icu4c --force
>> + python2 -V || brew install python2 --force
>> + curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py >get-pip.py
>> + python get-pip.py --user
>> + pip install --user --ignore-installed -r test-run/requirements.txt
>> +
>> +build_osx:
>> + cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_WERROR=ON ${CMAKE_EXTRA_PARAMS}
>> + make -j
>> +
>> +runtest_osx: build_osx
>> + # Increase the maximum number of open file descriptors on macOS
>> + sudo sysctl -w kern.maxfiles=20480 || :
>> + sudo sysctl -w kern.maxfilesperproc=20480 || :
>> + sudo launchctl limit maxfiles 20480 || :
>> + ulimit -S -n 20480 || :
>> + ulimit -n
>> + cd test && ./test-run.py --force $(NO_PARALLEL_TESTING) unit/ app/ app-tap/ box/ box-tap/
>> +
>> +test_osx: deps_osx runtest_osx
>> +
>> +###########
>> +# FreeBSD #
>> +###########
>> +
>> +deps_freebsd:
>> + # don't use bad py27-msgpack-python
>
>Can you link exact problem description here or in the commit message?
Removed, obvious message.
>
>
>> + sudo pkg install -y sudo git cmake gmake gcc coreutils \
>
>> sudo pkg install -y sudo
>
>If sudo is not installed, then this command will fail. If it is
>installed, then we don't need to add it to the package list.
Fixed.
>
>
>> + readline ncurses libyaml openssl curl libunwind icu \
>> + python27 py27-pip py27-setuptools py27-daemon \
>> + py27-yaml py27-argparse py27-six py27-gevent \
>> + gdb bash vim
>
>Installing vim in a testing environment is the strange thing.
Fixed.
>
>
>> +
>> +build_freebsd:
>> + cmake .
>
>I would explicitly set a build type (I guess it worth to test
>RelWithDebInfo), set -DENABLE_WERROR=ON and pass ${CMAKE_EXTRA_PARAMS}
>here (even despite we don't use it right now).
Fixed.
>
>
>> + gmake
>
>Use -j as in other make invocations?
Fixed.
>
>
>> + sudo make install
>
>Why do we need to install tarantool into a system? test-run able to
>detect in-source build.
>
Fixed.
>
>> +
>> +runtest_freebsd: build_freebsd
>> + cd test && /usr/bin/python test-run.py --force $(NO_PARALLEL_TESTING) || true
>
>Volkswagen mode?
Currently FreeBSD testing is not ready and will fail pipeline, the issue in github exists,
but we really need the test result to check the new fails.
>
>
>> +
>> +test_freebsd: deps_freebsd runtest_freebsd
>> +
>> +###################
>> +# Sources & Packs #
>> +###################
>
>I would say 'Source tarballs', because we have no such separate things
>as 'source' and 'pack'. I mean, it is possible to undestand the header
>in a wrong way.
>
Fixed.
>
>> +
>> source:
>> git clone https://github.com/packpack/packpack.git packpack
>> TARBALL_COMPRESSOR=gz packpack/packpack tarball
>> diff --git a/.travis.yml b/.travis.yml
>> index e94d02ef5..a22197845 100644
>> --- a/.travis.yml
>> +++ b/.travis.yml
>> @@ -17,6 +17,9 @@ cache:
>> git:
>> depth: 100500
>>
>> +env: >
>> + NO_PARALLEL_TESTING="-j 1"
>> +
>> jobs:
>> include:
>> # Testing targets (just run tests on Debian Stretch or OS X).
>> diff --git a/images/Dockerfile.debian b/images/Dockerfile.debian
>> new file mode 100644
>> index 000000000..eb5278343
>> --- /dev/null
>> +++ b/images/Dockerfile.debian
>> @@ -0,0 +1,4 @@
>> +FROM packpack/packpack:debian-stretch
>> +
>> +COPY .travis.mk .
>> +RUN make -f .travis.mk deps_ubuntu
>> diff --git a/images/Dockerfile.lto b/images/Dockerfile.lto
>> new file mode 100644
>> index 000000000..54c585acc
>> --- /dev/null
>> +++ b/images/Dockerfile.lto
>> @@ -0,0 +1,5 @@
>> +FROM packpack/packpack:debian-buster
>> +
>> +COPY .travis.mk .
>> +RUN make -f .travis.mk deps_ubuntu
>> +RUN make -f .travis.mk deps_buster_clang_8
>
>I guess we can remove these files, se the comment to 'docker_bootstrap'
>goal above.
>
Fixed.
>
>
--
Alexander Tikhonov
[-- Attachment #2: Type: text/html, Size: 34671 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-06-19 6:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-15 4:46 [tarantool-patches] [PATCH v2 1/2] Gitlab-ci updated after reiview - w/o perf Alexander V. Tikhonov
2019-06-18 11:07 ` [tarantool-patches] " Alexander Turenko
2019-06-19 6:52 ` [tarantool-patches] " Alexander Tikhonov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox