Implement of build script in Escalator 27/25127/4
authorzeyu zhu <zhu.zeyu@zte.com.cn>
Tue, 29 Nov 2016 12:09:59 +0000 (20:09 +0800)
committerzeyu zhu <zhu.zeyu@zte.com.cn>
Wed, 14 Dec 2016 06:28:24 +0000 (14:28 +0800)
Change-Id: I1296eec05c59f253ee5ce73d2477825689997275
Signed-off-by: zeyu zhu <zhu.zeyu@zte.com.cn>
ci/build.sh [new file with mode: 0755]
ci/build_rpm/Dockerfile [new file with mode: 0644]
ci/build_rpm/build_rpms.sh [new file with mode: 0755]
ci/build_rpm/build_rpms_docker.sh [new file with mode: 0755]

diff --git a/ci/build.sh b/ci/build.sh
new file mode 100755 (executable)
index 0000000..5a6ad73
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash\r
+\r
+# TODO: Let JJB to pass $WORKDIR instead of $BUILD_OUTPUT\r
+ESCALATORDIR=$1/../\r
+OPNFV_ARTIFACT_VERSION=$2\r
+\r
+cd ci/build_rpm\r
+./build_rpms.sh $ESCALATORDIR $OPNFV_ARTIFACT_VERSION\r
diff --git a/ci/build_rpm/Dockerfile b/ci/build_rpm/Dockerfile
new file mode 100644 (file)
index 0000000..48e254f
--- /dev/null
@@ -0,0 +1,29 @@
+FROM centos:7\r
+LABEL escalator_image_version=1.0\r
+RUN yum -y update\r
+RUN yum -y install centos-release-openstack-newton\r
+RUN yum -y install \\r
+  wget \\r
+  coreutils \\r
+  which \\r
+  gawk \\r
+  grep \\r
+  git \\r
+  intltool \\r
+  make \\r
+  rpm \\r
+  rpm-build \\r
+  python-sphinx \\r
+  python2-oslo-sphinx \\r
+  python2-oslo-messaging \\r
+  python2-oslo-concurrency \\r
+  python2-oslo-sphinx \\r
+  python-devel \\r
+  python-d2to1 \\r
+  python-django-compressor \\r
+  python-django-openstack-auth \\r
+  python-django-pyscss \\r
+  python-lesscpy \\r
+  python-migrate \\r
+  python-pint \\r
+  python-routes\r
diff --git a/ci/build_rpm/build_rpms.sh b/ci/build_rpm/build_rpms.sh
new file mode 100755 (executable)
index 0000000..81443ca
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/bash\r
+\r
+set -eux\r
+ESCALATORDIR=$1\r
+OPNFV_ARTIFACT_VERSION=$2\r
+\r
+function build_rpm_pkg {\r
+        # Cleanup prev build resutls\r
+        rm -rf $ESCALATORDIR/build_output\r
+        mkdir -p $ESCALATORDIR/build_output\r
+\r
+        sudo docker build -t escalator_rpm .\r
+        sudo docker run --rm -v $ESCALATORDIR:/opt/escalator -v $CACHE_DIRECTORY:/home/cache -t  escalator_rpm \\r
+                      /opt/escalator/ci/build_rpm/build_rpms_docker.sh $OPNFV_ARTIFACT_VERSION\r
+\r
+       # Here to collect build result from $ESCALATORDIR/build_output\r
+}\r
+\r
+function cleanup_container {\r
+        containers_to_kill=$(sudo docker ps --filter "label=escalator_image_version" \\r
+                --format "{{.Names}}" -a)\r
+\r
+        if [[ -z "$containers_to_kill" ]]; then\r
+                echo "No containers to cleanup."\r
+        else\r
+                volumes_to_remove=$(sudo docker inspect -f \\r
+                        '{{range .Mounts}} {{printf "%s\n" .Name }}{{end}}' \\r
+                        ${containers_to_kill} | egrep -v '(^\s*$)' | sort | uniq)\r
+                echo "Stopping containers... $containers_to_kill"\r
+                sudo docker stop -t 2 ${containers_to_kill} >/dev/null 2>&1\r
+\r
+                echo "Removing containers... $containers_to_kill"\r
+                sudo docker rm -v -f ${containers_to_kill} >/dev/null 2>&1\r
+\r
+                if [[ -z "$volumes_to_remove" ]]; then\r
+                        echo "No volumes to cleanup."\r
+                else\r
+                        echo "Removing volumes... $volumes_to_remove"\r
+                        sudo docker volume rm ${volumes_to_remove} >/dev/null 2>&1\r
+                fi\r
+        fi\r
+}\r
+\r
+function cleanup_docker_image {\r
+        images_to_delete=$(sudo docker images -a --filter "label=escalator_image_version" \\r
+                --format "{{.ID}}")\r
+\r
+        echo "Removing images... $images_to_delete"\r
+        if [[ -z "$images_to_delete" ]]; then\r
+                echo "No images to cleanup"\r
+        else\r
+                sudo docker rmi -f ${images_to_delete} >/dev/null 2>&1\r
+        fi\r
+}\r
+\r
+cleanup_container\r
+cleanup_docker_image\r
+build_rpm_pkg\r
diff --git a/ci/build_rpm/build_rpms_docker.sh b/ci/build_rpm/build_rpms_docker.sh
new file mode 100755 (executable)
index 0000000..9b2454d
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash\r
+\r
+OPNFV_ARTIFACT_VERSION=$1\r
+rpm_build_dir=/opt/escalator\r
+rpm_output_dir=$rpm_build_dir/build_output\r
+tmp_rpm_build_dir=/root/escalator\r
+\r
+cp -r $rpm_build_dir $tmp_rpm_build_dir\r
+cd $tmp_rpm_build_dir\r
+\r
+echo "#########################################################"\r
+echo "               systemctl info:                   "\r
+echo "#########################################################"\r
+echo "###Uname: $(uname)"\r
+echo "###Hostname: $(hostname)"\r
+\r
+maxcount=3\r
+cnt=0\r
+rc=1\r
+while [ $cnt -lt $maxcount ] && [ $rc -ne 0 ]\r
+do\r
+    cnt=$[cnt + 1]\r
+    echo -e "\n\n\n*** Starting build attempt # $cnt"\r
+\r
+    cd api\r
+    python setup.py sdist\r
+\r
+    cd ..\r
+    cd client\r
+    python setup.py sdist\r
+\r
+    echo "######################################################"\r
+    echo "          done              "\r
+    echo "######################################################"\r
+    if [ $rc -ne 0 ]; then\r
+        echo "### Build failed with rc $rc ###"\r
+    else\r
+        echo "### Build successfully at attempt # $cnt"\r
+    fi\r
+done\r
+cd $rpm_output_dir\r
+mkdir upload_artifacts\r
+cp api/dist/escalator-* $rpm_output_dir/upload_artifacts\r
+cp client/dist/escalatorclient-* $rpm_output_dir/upload_artifacts\r
+tar zcvf opnfv-$OPNFV_ARTIFACT_VERSION.tar.gz upload_artifacts\r
+exit $rc\r