Build late artifacts without rebuilding fuel packages

Implement flag PATCHING_CI, which is equal 0, means:
  * patching feature is disabled.

If PATCHING_CI=1, then:

1) Build iso with BUILD_PACKAGES=0:
   late packages (fuel-bootstrap-image, fuel-docker-images)
   should be always build since they are depend on the first
   level artifacts (packages);
2) Make sure the release version of bootstrap and
   docker packages is increasing.
    We need to be sure that packages (in packages-late target):
     - fuel-bootstrap-image
     - fuel-docker-images
    will increase their release numbers by 1 continuously
    in order to be able to ship them in updates repositories.

Related-bug: #1559117

Change-Id: Ie875f0e53bb478376703f2f2cb9b9f7d77c7c196
This commit is contained in:
Sergey Kulanov 2016-03-18 16:08:39 +02:00
parent a68807e6d0
commit 706eb22987
2 changed files with 32 additions and 5 deletions

View File

@ -75,6 +75,12 @@ UBUNTU_ARCH:=amd64
UBUNTU_IMAGE_RELEASE:=$(UBUNTU_MAJOR)$(UBUNTU_MINOR)
SEPARATE_IMAGES?=/boot,ext2 /,ext4
PATCHING_CI?=0
ifeq ($(PATCHING_CI),1)
# Use packages from mirrors, do not rebuild fuel one
BUILD_PACKAGES:=0
endif
# Rebuld packages locally (do not use upstream versions)
BUILD_PACKAGES?=1

View File

@ -23,6 +23,22 @@ $(BUILD_DIR)/packages/rpm/buildd.tar.gz: $(BUILD_DIR)/mirror/centos/repo.done \
sudo tar czf $@.tmp -C $(SANDBOX) .
mv $@.tmp $@
# Usage:
# (eval (inc_rpm_package_release,package_name))
# If we are running patching then increment package release number by 1
# else - just assign release number 1
define inc_rpm_package_release
$(BUILD_DIR)/packages/sources/$1/version:
mkdir -p $$(@D)
echo -e "RPMRELEASE=\c" > $$@.tmp
ifeq ($(PATCHING_CI),1)
bash -c "set -o pipefail && \
yum -c $$(BUILD_DIR)/mirror/centos/etc/yum.conf info $1 | grep Release | tr -d ' ' | cut -d':' -f2 | xargs -I{} expr {} + 1 >> $$@.tmp"
else
echo "1" >> $$@.tmp
endif
mv $$@.tmp $$@
endef
# Usage:
# (eval (call build_rpm,package_name))
@ -46,6 +62,7 @@ $(BUILD_DIR)/repos/$1/specs/$1.spec: $(BUILD_DIR)/repos/$1.done
$(BUILD_DIR)/packages/rpm/$1.done: $(BUILD_DIR)/repos/$1/specs/$1.spec
else
$(BUILD_DIR)/packages/rpm/$1.done: SPECFILE:=$(SOURCE_DIR)/packages/rpm/specs/$1.spec
$(BUILD_DIR)/packages/rpm/$1.done: $(BUILD_DIR)/packages/sources/$1/version
endif
$(BUILD_DIR)/packages/rpm/$1.done:
@ -61,9 +78,7 @@ $(BUILD_DIR)/packages/rpm/$1.done:
-test -f $(BUILD_DIR)/packages/sources/$1/changelog && cat $(BUILD_DIR)/packages/sources/$1/changelog >> $$(SPECFILE)
sudo cp $$(SPECFILE) $$(SANDBOX)/tmp && \
sudo chroot $$(SANDBOX) yum-builddep -y /tmp/$1.spec
test -f $$(SANDBOX)/tmp/SOURCES/version && \
sudo chroot $$(SANDBOX) rpmbuild --nodeps --define "_topdir /tmp" --define "release `awk -F'=' '/RPMRELEASE/ {print $$$$2}' $$(SANDBOX)/tmp/SOURCES/version`" -ba /tmp/$1.spec || \
sudo chroot $$(SANDBOX) rpmbuild --nodeps --define "_topdir /tmp" -ba /tmp/$1.spec
sudo chroot $$(SANDBOX) rpmbuild --nodeps --define "_topdir /tmp" --define "release `awk -F'=' '/RPMRELEASE/ {print $$$$2}' $$(SANDBOX)/tmp/SOURCES/version`" -ba /tmp/$1.spec
cp $$(SANDBOX)/tmp/RPMS/*/*.rpm $(BUILD_DIR)/packages/rpm/RPMS/x86_64
sudo sh -c "$$$${SANDBOX_DOWN}"
$$(ACTION.TOUCH)
@ -110,6 +125,7 @@ $(BUILD_DIR)/packages/rpm/fuel-docker-images.done: \
$(BUILD_DIR)/repos/repos.done \
$(BUILD_DIR)/packages/rpm/buildd.tar.gz \
$(BUILD_DIR)/packages/rpm/repo-late.done \
$(BUILD_DIR)/packages/sources/fuel-docker-images/version \
$(BUILD_DIR)/docker/build.done
python $(SOURCE_DIR)/packages/rpm/genpkgnames.py $(SPECFILE) | xargs -I{} sudo find $(LOCAL_MIRROR_MOS_CENTOS_OS_BASEURL)/Packages -regex '.*/{}-[^-]+-[^-]+' -delete
mkdir -p $(BUILD_DIR)/packages/rpm/RPMS/x86_64
@ -118,8 +134,10 @@ $(BUILD_DIR)/packages/rpm/fuel-docker-images.done: \
mkdir -p $(SANDBOX)/tmp/SOURCES && \
sudo cp -r $(BUILD_DIR)/docker/$(DOCKER_ART_NAME) $(SANDBOX)/tmp/SOURCES && \
(cd $(BUILD_DIR)/docker && sudo tar czf $(SANDBOX)/tmp/SOURCES/fuel-images-sources.tar.gz sources utils) && \
sudo cp $(SPECFILE) $(SANDBOX)/tmp && \
sudo chroot $(SANDBOX) rpmbuild --nodeps --define "_topdir /tmp" -ba /tmp/fuel-docker-images.spec
sudo cp $(SPECFILE) $(SANDBOX)/tmp
sudo chroot $(SANDBOX) rpmbuild --nodeps --define "_topdir /tmp" \
--define "release `awk -F'=' '/RPMRELEASE/ {print $$2}' $(BUILD_DIR)/packages/sources/fuel-docker-images/version`" \
-ba /tmp/fuel-docker-images.spec
cp $(SANDBOX)/tmp/RPMS/*/fuel-docker-images-*.rpm $(BUILD_DIR)/packages/rpm/RPMS/x86_64
find $(BUILD_DIR)/packages/rpm/RPMS -name '*.rpm' | xargs cp -u --target-directory=$(LOCAL_MIRROR_MOS_CENTOS_OS_BASEURL)/Packages
createrepo -g $(LOCAL_MIRROR_MOS_CENTOS)/comps.xml \
@ -148,6 +166,9 @@ fuel-bootstrap-image
$(eval $(foreach pkg,$(fuel_rpm_packages_late),$(call build_rpm,$(pkg),-late)$(NEWLINE)))
$(eval $(call inc_rpm_package_release,fuel-bootstrap-image))
$(eval $(call inc_rpm_package_release,fuel-docker-images))
# BUILD_PACKAGES=0 - for late packages we need to be sure that centos mirror is ready
# BUILD_PACKAGES=1 - for late packages we need to be sure that fuel-* packages was build beforehand
$(BUILD_DIR)/packages/rpm/repo-late.done: $(BUILD_DIR)/mirror/centos/repo.done