kolla/kolla/cmd/build.py
Paul Bourke e5410950c4 Allow the use of previously built parent images
Consider the case where you have a set of tagged / released images to
production, and you want to apply a small hotfix, security patch, etc.
to one of them, say keystone-ssh.

Rebuilding keystone-ssh will cause a rebuild of base, openstack-base,
and keystone-base, potentially pulling in updated packages / new
dependencies, unless you have access to the exact machine they were
previously built on. Ideally you want to use the exact parent images
that are in production.

This patch adds a new build argument '--skip-parents', which will result
in only the image(s) specified by the regex and their children to be
built. Parents are expected to exist either on machine or in a registry.

Change-Id: I79d5f0b422f48d2dc36ae85dfa21668cf8177837
Implements: blueprint image-build-depth
2017-03-29 17:48:58 +00:00

41 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
# NOTE(SamYaple): Update the search path to prefer PROJECT_ROOT as the source
# of packages to import if we are using local tools instead of
# pip installed kolla tools
PROJECT_ROOT = os.path.abspath(os.path.join(
os.path.dirname(os.path.realpath(__file__)), '../..'))
if PROJECT_ROOT not in sys.path:
sys.path.insert(0, PROJECT_ROOT)
from kolla.image import build
def main():
statuses = build.run_build()
if statuses:
(bad_results, good_results, unmatched_results,
skipped_results) = statuses
if bad_results:
return 1
return 0
if __name__ == '__main__':
sys.exit(main())