Adding git commit to RPM releases 95/24795/8
authorDan Radez <dradez@redhat.com>
Wed, 23 Nov 2016 21:07:49 +0000 (16:07 -0500)
committerDan Radez <dradez@redhat.com>
Tue, 29 Nov 2016 20:58:53 +0000 (15:58 -0500)
Preparing for better caching by adding the git hash to the rpm release
We can skip building the RPMs if they are cached and would be built off
the same hash

JIRA: APEX-325

Change-Id: I9b0e26f123667673d126362a2501abb13830e44b
Signed-off-by: Dan Radez <dradez@redhat.com>
build/Makefile
build/overcloud-full.sh
build/rpm_specs/networking-vpp.spec
build/rpm_specs/openstack-congress.spec
build/rpm_specs/openstack-tacker.spec
build/rpm_specs/python-tackerclient.spec
build/undercloud.sh
build/variables.sh

index 226bc09..a542279 100644 (file)
@@ -12,18 +12,36 @@ export CENTDNLD = http://mirrors.cat.pdx.edu/centos/7.2.1511/isos/x86_64/CentOS-
 export CENTISO = $(shell pwd)/$(shell basename $(CENTDNLD))
 export RELEASE = "0"
 export ISO = $(shell pwd)/release/OPNFV-CentOS-7-x86_64-${RELEASE}.iso
+
+export RPM_DIST = $(shell rpm -E %dist)
+export TACKER_REPO = "http://github.com/trozet/tacker"
+export TACKER_BRANCH = "SFC_colorado"
+export TACKER_COMMIT := $(shell git ls-remote $(TACKER_REPO) $(TACKER_BRANCH) | awk '{print substr($$1,1,7)}')
+
+export TACKERCLIENT_REPO := $(shell awk -F\= '/^tackerclient_repo/ {print $$2}' variables.sh )
+export TACKERCLIENT_BRANCH := $(shell awk -F\= '/^tackerclient_branch/ {print $$2}' variables.sh )
+export TACKERCLIENT_COMMIT := $(shell git ls-remote $(TACKERCLIENT_REPO) $(TACKERCLIENT_BRANCH) | awk '{print substr($$1,1,7)}')
+
+export CONGRESS_REPO := $(shell awk -F\= '/^congress_repo/ {print $$2}' variables.sh )
+export CONGRESS_BRANCH := $(shell awk -F\= '/^congress_branch/ {print $$2}' variables.sh )
+export CONGRESS_COMMIT := $(shell git ls-remote $(CONGRESS_REPO) $(CONGRESS_BRANCH) | awk '{print substr($$1,1,7)}')
+
+export NETVPP_VERS := $(shell grep Version $(shell pwd)/rpm_specs/networking-vpp.spec | head -n 1 | awk '{ print $$2 }')
+export NETVPP_REPO := $(shell awk -F\= '/^netvpp_repo/ {print $$2}' variables.sh )
+export NETVPP_BRANCH := $(shell awk -F\= '/^netvpp_branch/ {print $$2}' variables.sh )
+export NETVPP_COMMIT := $(shell git ls-remote $(NETVPP_REPO) $(NETVPP_BRANCH) | awk '{print substr($$1,1,7)}')
+
 export RPMVERS = $(shell grep Version $(shell pwd)/rpm_specs/opnfv-apex.spec | head -n 1 | awk '{ print $$2 }')
 export RPMCOM = $(shell pwd)/noarch/opnfv-apex-common-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
 export RPMUDR = $(shell pwd)/noarch/opnfv-apex-undercloud-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
 export RPMODL = $(shell pwd)/noarch/opnfv-apex-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
 export RPMONO = $(shell pwd)/noarch/opnfv-apex-onos-$(RPMVERS)-$(shell echo ${RELEASE} | tr -d '_-').noarch.rpm
 
-
 .PHONY: all
 all: iso
 
 .PHONY: clean
-clean: images-clean rpms-clean iso-clean tacker-clean tackerclient-clean congress-clean vpp-clean
+clean: images-clean rpms-clean iso-clean tacker-clean tackerclient-clean congress-clean networking-vpp-clean
 
 .PHONY: images
 images: undercloud overcloud-full overcloud-opendaylight overcloud-onos
@@ -41,6 +59,7 @@ rpms-check: common-rpm-check undercloud-rpm-check opendaylight-rpm-check onos-rp
 .PHONY: rpms-clean
 rpms-clean: common-rpm-clean undercloud-rpm-clean opendaylight-rpm-clean onos-rpm-clean
        rm -rf noarch
+       rm -rf BUILDROOT
 
 opnfv-apex-common.tar.gz:
        pushd ../ && git archive --format=tar.gz --prefix=opnfv-apex-common-$(RPMVERS)/ HEAD > build/opnfv-apex-common.tar.gz
@@ -99,15 +118,15 @@ tacker-clean:
 
 openstack-tacker.tar.gz:
        @echo "Preparing the Tacker RPM prerequisites"
-       git clone http://github.com/trozet/tacker -b SFC_colorado openstack-tacker-2015.2
+       git clone $(TACKER_REPO) -b $(TACKER_BRANCH) openstack-tacker-2015.2
        tar czf openstack-tacker.tar.gz openstack-tacker-2015.2
 
 .PHONY: tacker-rpm
-tacker-rpm: openstack-tacker.tar.gz openstack-tacker-2015.2-1.trozet.noarch.rpm
+tacker-rpm: openstack-tacker.tar.gz noarch/openstack-tacker-2015.2-1.trozetgit$(TACKER_COMMIT).noarch.rpm
 
-openstack-tacker-2015.2-1.trozet.noarch.rpm:
+noarch/openstack-tacker-2015.2-1.trozetgit$(TACKER_COMMIT).noarch.rpm:
        @echo "Building the Tacker RPM"
-       rpmbuild --clean -bb --target noarch rpm_specs/openstack-tacker.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
+       rpmbuild --clean -ba --target noarch rpm_specs/openstack-tacker.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)' -D 'git .trozetgit$(TACKER_COMMIT)'
 
 #################
 #  TACKERCLIENT #
@@ -120,93 +139,61 @@ tackerclient-clean:
 
 python-tackerclient.tar.gz:
        @echo "Preparing the TackerClient RPM prerequisites"
-       git clone http://github.com/trozet/python-tackerclient -b SFC_refactor python-tackerclient-2015.2
+       git clone $(TACKERCLIENT_REPO) -b $(TACKERCLIENT_BRANCH) python-tackerclient-2015.2
        tar czf python-tackerclient.tar.gz python-tackerclient-2015.2
 
 .PHONY: tackerclient-rpm
-tackerclient-rpm: python-tackerclient.tar.gz python-tackerclient-2015.2-1.trozet.noarch.rpm
+tackerclient-rpm: python-tackerclient.tar.gz noarch/python-tackerclient-2015.2-1.trozetgit$(TACKERCLIENT_COMMIT).noarch.rpm
 
-python-tackerclient-2015.2-1.trozet.noarch.rpm:
+noarch/python-tackerclient-2015.2-1.trozetgit$(TACKERCLIENT_COMMIT).noarch.rpm:
        @echo "Building the TackerClient RPM"
-       rpmbuild --clean -bb --target noarch rpm_specs/python-tackerclient.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
+       rpmbuild --clean -ba --target noarch rpm_specs/python-tackerclient.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)' -D 'git .trozetgit$(TACKERCLIENT_COMMIT)'
 
 ###############
 #  CONGRESS   #
 ###############
 
 .PHONY: congress-clean
-
 congress-clean:
        @rm -rf openstack-congress-2016.1
        @rm -f openstack-congress.tar.gz
 
 openstack-congress.tar.gz:
        @echo "Preparing the Congress RPM prerequisites"
-       git clone http://github.com/openstack/congress -b stable/mitaka openstack-congress-2016.1
+       git clone $(CONGRESS_REPO) -b $(CONGRESS_BRANCH) openstack-congress-2016.1
        cd openstack-congress-2016.1 && curl -O https://radez.fedorapeople.org/openstack-congress.service
        tar czf openstack-congress.tar.gz openstack-congress-2016.1
 
 .PHONY: congress-rpm
-congress-rpm: openstack-congress.tar.gz openstack-congress-2016.1-1.noarch.rpm
+congress-rpm: openstack-congress.tar.gz noarch/openstack-congress-2016.1-1.git$(CONGRESS_COMMIT).noarch.rpm
 
-openstack-congress-2016.1-1.noarch.rpm:
+
+noarch/openstack-congress-2016.1-1.git$(CONGRESS_COMMIT).noarch.rpm:
        @echo "Building the Congress RPM"
-       rpmbuild --clean -bb --target noarch rpm_specs/openstack-congress.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)'
+       rpmbuild --clean -ba --target noarch rpm_specs/openstack-congress.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)' -D 'git .git$(CONGRESS_COMMIT)'
 
-###############
-#     VPP     #
-###############
+##################
+# NETWORKING-VPP #
+##################
 
-VPP_DIR = vpp
-MAVEN = apache-maven-3.3.9
-MAVEN_FILE = $(MAVEN)-bin.tar.gz
-
-.PHONY: vpp-clean
-vpp-clean:
-       @rm -f vpp-bin.tar.gz
-       @rm -rf vpp-bin vpp
-       @rm -rf honeycomb $(MAVEN) $(MAVEN_FILE) honeycomb-1.0.0-99.noarch.rpm
-       @rm -rf networking-vpp networking-vpp.noarch.rpm
-
-.PHONY: vpp-build
-vpp-build: vpp-bin.tar.gz
-
-vpp-bin.tar.gz: vpp honeycomb $(MAVEN)
-       $(MAKE) -C $(VPP_DIR) UNATTENDED=yes install-dep bootstrap build pkg-rpm
-       $(MAKE) -C $(VPP_DIR)/build-root PLATFORM=vpp TAG=vpp_debug vpp-api-install
-       pushd vpp/vpp-api/python && python setup.py bdist
-       pushd vpp/build-root/build-vpp-native/vpp-api/java/ && ../../../../../$(MAVEN)/bin/mvn install:install-file -Dfile=jvpp-registry-16.12.jar -DgroupId=io.fd.vpp -DartifactId=jvpp-registry -Dversion=16.12-SNAPSHOT -Dpackaging=jar
-       pushd vpp/build-root/build-vpp-native/vpp-api/java/ && ../../../../../$(MAVEN)/bin/mvn install:install-file -Dfile=jvpp-core-16.12.jar -DgroupId=io.fd.vpp -DartifactId=jvpp-core -Dversion=16.12-SNAPSHOT -Dpackaging=jar
-       pushd honeycomb && ../$(MAVEN)/bin/mvn clean install -DskipTests
-       pushd honeycomb/packaging/rpm/ && BUILD_NUMBER=99 ./rpmbuild.sh
-       mkdir vpp-bin
-       mv vpp/build-root/*.rpm vpp-bin/
-       mv honeycomb/packaging/rpm/RPMS/noarch/*.rpm .
-       mv vpp/vpp-api/python/dist/*.tar.gz vpp-bin/
-       tar czf vpp-bin.tar.gz vpp-bin
-
-vpp:
-       git clone https://gerrit.fd.io/r/vpp
-
-honeycomb:
-       git clone https://gerrit.fd.io/r/p/honeycomb.git
-
-$(MAVEN): $(MAVEN_FILE)
-       tar zxvf apache-maven-3.3.9-bin.tar.gz
-       cp mvn_settings.xml $(MAVEN)/conf/settings.xml
-
-$(MAVEN_FILE):
-       wget http://www.webhostingjams.com/mirror/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
+.PHONY: networking-vpp-clean
+networking-vpp-clean:
+       @rm -rf networking-vpp
+       @rm -rf networking-vpp-*
+       @rm -f networking-vpp.tar.gz
+       @rm -f networking-vpp-agent.service
 
-.PHONY: networking-vpp-rpm
-networking-vpp-rpm: networking-vpp.noarch.rpm
+networking-vpp.tar.gz:
+       @echo "Preparing the networking-vpp RPM prerequisites"
+       git clone $(NETVPP_REPO) networking-vpp-$(NETVPP_VERS)
+       tar czf networking-vpp.tar.gz networking-vpp-$(NETVPP_VERS)
 
-networking-vpp.noarch.rpm: networking-vpp
-       pushd networking-vpp && rpmbuild --clean -bb ../rpm_specs/networking-vpp.spec
-       mv networking-vpp/build/rpm/noarch/*.rpm networking-vpp.noarch.rpm
+.PHONY: networking-vpp-rpm
+networking-vpp-rpm: noarch/networking-vpp-$(NETVPP_VERS)-1.git$(NETVPP_COMMIT)$(RPM_DIST).noarch.rpm
 
-networking-vpp:
-       git clone https://git.openstack.org/openstack/networking-vpp
+noarch/networking-vpp-$(NETVPP_VERS)-1.git$(NETVPP_COMMIT)$(RPM_DIST).noarch.rpm: networking-vpp.tar.gz
+       @echo "Building the Networking VPP RPM"
+       rpmbuild --clean -ba --target noarch rpm_specs/networking-vpp.spec -D '_topdir %(echo `pwd`)' -D '_builddir %(echo `pwd`)' -D '_sourcedir %(echo `pwd`)' -D '_rpmdir %(echo `pwd`)' -D '_specdir %(echo `pwd`)' -D '_srcrpmdir %(echo `pwd`)' -D 'git .git$(NETVPP_COMMIT)'
 
 ###############
 #  UNDERCLOUD #
index 95a7b04..188c40e 100755 (executable)
@@ -113,7 +113,8 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --upload /tmp/fdio.repo:/etc/yum.repos.d/fdio.repo \
     $dpdk_pkg_str \
     --run-command "yum install --downloadonly --downloaddir=/root/fdio vpp vpp-devel vpp-lib vpp-python-api vpp-plugins" \
-    --upload ../networking-vpp.noarch.rpm:/root/fdio \
+    $fdio_pkg_str \
+    --upload ../noarch/$netvpp_pkg:/root/fdio \
     --run-command "pip install distro flask_restful" \
     --run-command "yum install -y etcd" \
     --run-command "pip install python-etcd" \
@@ -124,8 +125,8 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --run-command "yum remove -y qemu-system-x86" \
     --upload ../os-net-config.tar.gz:/usr/lib/python2.7/site-packages \
     --run-command "cd /usr/lib/python2.7/site-packages/ && rm -rf os_net_config && tar xzf os-net-config.tar.gz" \
-    --upload ../noarch/$openstack_congress_pkg:/root/ \
-    --install /root/$openstack_congress_pkg \
+    --upload ../noarch/$congress_pkg:/root/ \
+    --install /root/$congress_pkg \
     --install "python2-congressclient" \
     --upload puppet-congress.tar.gz:/etc/puppet/modules/ \
     --run-command "cd /etc/puppet/modules/ && tar xzf puppet-congress.tar.gz" \
index 2fd4e04..fea66eb 100644 (file)
@@ -1,26 +1,25 @@
-%define name networking-vpp
-%define version %(python setup.py --version)
 %define release 1
-%define _topdir %(pwd)/build/rpm
-%define _builddir %(pwd)
-%define _rpmdir %(pwd)/build/rpm
-
-Summary: OpenStack Networking for VPP
-Name: %{name}
-Version: %{version}
-Release: %{release}
-License: Apache 2.0
-Group: Development/Libraries
+
+Summary:   OpenStack Networking for VPP
+Name:      networking-vpp
+Version:   0.0.1
+Release:   %{release}%{?git}%{?dist}
+
+License:   Apache 2.0
+Group:     Applications/Internet
+Source0:   networking-vpp.tar.gz
+Url:       https://github.com/openstack/networking-vpp/
+
 BuildArch: noarch
-Requires: vpp
-Vendor: OpenStack <openstack-dev@lists.openstack.org>
-Packager: Feng Pan <fpan@redhat.com>
-Url: http://www.openstack.org/
+Requires:  vpp
+Vendor:    OpenStack <openstack-dev@lists.openstack.org>
+Packager:  Feng Pan <fpan@redhat.com>
 
 %description
 ML2 Mechanism driver and small control plane for OpenVPP forwarder
 
 %prep
+%setup -q
 cat << EOF > %{_builddir}/networking-vpp-agent.service
 [Unit]
 Description=Networking VPP ML2 Agent
@@ -38,12 +37,12 @@ WantedBy=multi-user.target
 EOF
 
 %install
-/usr/bin/python setup.py install -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES
+python setup.py install -O1 --root=%{buildroot} --record=INSTALLED_FILES
 mkdir -p %{buildroot}/usr/lib/systemd/system
 install %{_builddir}/networking-vpp-agent.service %{buildroot}/usr/lib/systemd/system
 
 %clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 
 %files -f INSTALLED_FILES
 %defattr(-,root,root)
index c4c04a9..fd8e95e 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:          openstack-congress
 Version:       2016.1
-Release:       1%{?dist}
+Release:       1%{?git}%{?dist}
 Summary:       OpenStack servicevm/device manager
 
 Group:         Applications/Internet
index b4c9ada..b491cd1 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:   openstack-tacker
 Version:  2015.2
-Release:  1.trozet
+Release:  1%{?git}
 Summary:  OpenStack servicevm/device manager
 
 Group:    Applications/Internet
index 72cbf62..aa37936 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:          python-tackerclient
 Version:       2015.2
-Release:       1.trozet
+Release:       1%{?git}
 Summary:       CLI and Client Library for OpenStack Networking
 
 Group:         Applications/Internet
index a2bb9c6..39885fa 100755 (executable)
@@ -54,8 +54,8 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --run-command "sed -i '/PASSWORD_NAMES =/a\\    \"OVERCLOUD_TACKER_PASSWORD\",' /usr/lib/python2.7/site-packages/tripleoclient/utils.py" \
     --run-command "sed -i '/AodhPassword/a\\        parameters\[\x27TackerPassword\x27\] = passwords\[\x27OVERCLOUD_TACKER_PASSWORD\x27\]' /usr/lib/python2.7/site-packages/tripleoclient/v1/overcloud_deploy.py" \
     --run-command "sed -i '/^SERVICES/a\    \x27tacker\x27: {\x27description\x27: \x27Tacker Service\x27, \x27type\x27: \x27servicevm\x27, \x27path\x27: \x27/\x27, \x27port\x27: 8888 },' /usr/lib/python2.7/site-packages/os_cloud_config/keystone.py" \
-    --upload ../noarch/python-tackerclient-2015.2-1.trozet.noarch.rpm:/root/ \
-    --install /root/python-tackerclient-2015.2-1.trozet.noarch.rpm \
+    --upload ../noarch/$tackerclient_pkg:/root/ \
+    --install /root/$tackerclient_pkg \
     --install "python2-aodhclient" \
     --install "openstack-heat-engine" \
     --install "openstack-heat-api-cfn" \
index c307c84..c875437 100644 (file)
@@ -14,7 +14,6 @@ onos_release_file=onos-1.6.0-rc2.tar.gz
 onos_jdk_uri=http://artifacts.opnfv.org/apex/colorado
 onos_ovs_uri=http://artifacts.opnfv.org/apex/colorado
 onos_ovs_pkg=package_ovs_rpm3.tar.gz
-openstack_congress_pkg="openstack-congress-2016.1-1$(rpm -E '%dist').noarch.rpm"
 doctor_driver=https://raw.githubusercontent.com/openstack/congress/master/congress/datasources/doctor_driver.py
 if [ -z ${GS_PATHNAME+x} ]; then
     GS_PATHNAME=/colorado
@@ -27,3 +26,18 @@ dpdk_rpms=(
 'ovs4opnfv-e8acab14-dpdk-tools-16.04.0-1.el7.centos.x86_64.rpm'
 'ovs4opnfv-e8acab14-openvswitch-2.5.90-0.12032.gitc61e93d6.1.el7.centos.x86_64.rpm'
 )
+
+tackerclient_repo="http://github.com/trozet/python-tackerclient"
+tackerclient_branch="SFC_refactor"
+tackerclient_commit=$(git ls-remote ${tackerclient_repo} ${tackerclient_branch} | awk '{print substr($$1,1,7)}')
+tackerclient_pkg=python-tackerclient-2015.2-1.trozetgit${tackerclient_commit}.noarch.rpm
+
+congress_repo="http://github.com/openstack/congress"
+congress_branch="stable/mitaka"
+congress_commit=$(git ls-remote ${congress_repo} ${congress_branch} | awk '{print substr($$1,1,7)}')
+congress_pkg=openstack-congress-2016.1-1.git${congress_commit}$(rpm -E %dist).noarch.rpm
+
+netvpp_repo="https://github.com/openstack/networking-vpp"
+netvpp_branch="master"
+netvpp_commit=$(git ls-remote ${netvpp_repo} ${netvpp_branch} | awk '{print substr($$1,1,7)}')
+netvpp_pkg=networking-vpp-0.0.1-1.git${NETVPP_COMMIT}$(rpm -E %dist).noarch.rpm