[Tarantool-patches] [PATCH v1] Add S3 package checker

Alexander V. Tikhonov avtikhon at tarantool.org
Mon Mar 23 10:20:25 MSK 2020


Created Dockerfile based script to check packages available at the S3
repository. Set this script to be run just after the package creation.

Follows up #3380
---

Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-3380-check-packages-s3-full-ci
Issue: https://github.com/tarantool/tarantool/issues/3380
Gitlab: https://gitlab.com/tarantool/tarantool/pipelines/128701075

 .gitlab.mk             |  1 +
 tools/Dockerfile.s3    | 23 +++++++++++++++++
 tools/check_package.sh | 57 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 81 insertions(+)
 create mode 100644 tools/Dockerfile.s3
 create mode 100755 tools/check_package.sh

diff --git a/.gitlab.mk b/.gitlab.mk
index b39c5c651..5053b914f 100644
--- a/.gitlab.mk
+++ b/.gitlab.mk
@@ -127,6 +127,7 @@ deploy: package
 	echo ${GPG_SECRET_KEY} | base64 -d | gpg --batch --import || true
 	./tools/update_repo.sh -o=${OS} -d=${DIST} \
 		-b="${LIVE_REPO_S3_DIR}/${BUCKET}" build
+	./tools/check_package.sh "" ${OS}:${DIST} ${BUCKET}
 	if git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null ; then \
 		./tools/update_repo.sh -o=${OS} -d=${DIST} \
 			-b="${RELEASE_REPO_S3_DIR}/${BUCKET}" build ; \
diff --git a/tools/Dockerfile.s3 b/tools/Dockerfile.s3
new file mode 100644
index 000000000..338cf6926
--- /dev/null
+++ b/tools/Dockerfile.s3
@@ -0,0 +1,23 @@
+ARG IMG
+FROM ${IMG}
+
+ARG PKG_TOOL
+RUN ${PKG_TOOL} update -y >1.log 2>&1 || ( cat 1.log && false )
+RUN ${PKG_TOOL} install -y curl >2.log 2>&1 || ( cat 2.log && false )
+
+RUN curl -L https://tarantool.io/installer.sh >installer.sh 2>3.log || ( cat 3.log && false )
+RUN chmod a+x installer.sh
+RUN sed "s#/bin/bash#/bin/bash -x#g" -i installer.sh
+
+# ./installer.sh is the external tool which return status is not
+# expectable and can be false because of its additional features,
+# all that is needed for us from the script just to install Tarantool,
+# NOTE: found that on centos:8 script fails but on rerun passes
+ARG REL
+RUN VER=${REL} ./installer.sh >4.log 2>&1 || ( VER=${REL} ./installer.sh >>4.log 2>&1 || ( cat 4.log && false ))
+ARG TNT_VER
+RUN CVER=$(tarantool -V | head -n 1 | awk '{print $2}' | sed 's#-#.#g') && \
+    echo "Tarantool version:" && \
+    echo "Expected: ${TNT_VER}" && \
+    echo "Returned: ${CVER}" && \
+    if ! echo "${CVER}" | grep -e "^${TNT_VER}" >/dev/null ; then false ; fi
diff --git a/tools/check_package.sh b/tools/check_package.sh
new file mode 100755
index 000000000..b3fdcdcda
--- /dev/null
+++ b/tools/check_package.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -e
+
+ver="$1"
+imgs="$2"
+rels="$3"
+
+if [ "$ver" == "" ]; then
+    # some OS like CentOS/Fedora use only 6 hexadecimal
+    # digits as the abbreviated object name
+    ver=$(git describe --abbrev=6 | sed 's#-#.#g')
+fi
+
+if [ "$imgs" == "" ]; then
+    for dist in 14.04 16.04 18.04 19.04 19.10 ; do imgs="$imgs ubuntu:$dist" ; done
+    for dist in jessie stretch buster ; do imgs="$imgs debian:$dist" ; done
+    for dist in 6 7 8 ; do imgs="$imgs centos:$dist" ; done
+    for dist in 28 29 30 31 ; do imgs="$imgs fedora:$dist" ; done
+fi
+
+imgs=$(echo $imgs | sed "s#el:#centos:#g")
+
+if [ "$rels" == "" ]; then
+    rels="1.10 2.1 2.2 2.3 2.4"
+fi
+
+cwd=`dirname $0`
+
+run_docker () {
+    VER=$1
+    IMG=$2
+    REL=$3
+
+    PKG_TOOL=yum
+    if [[ $IMG =~ .*ubuntu.* || $IMG =~ .*debian.* ]]; then
+        PKG_TOOL=apt
+    fi
+    echo "Testing $REL Tarantool on $IMG image ..."
+    newimg="check-s3_"`echo $IMG | sed 's#:#-#g'`"_$REL"
+    # repository update command must always be rerun to be able
+    # to get the new available versions of the Tarantool, so the
+    # flag "--no-cache" must be set
+    docker build \
+        --network=host \
+        --no-cache \
+        --build-arg PKG_TOOL=$PKG_TOOL \
+        --build-arg REL=$REL \
+        --build-arg IMG=$IMG \
+        --build-arg TNT_VER=$VER \
+        -f $cwd/Dockerfile.s3 -t $newimg .
+}
+
+for rel in $rels ; do
+    for img in $imgs ; do
+        run_docker $ver $img $rel
+    done
+done
-- 
2.17.1



More information about the Tarantool-patches mailing list