Browse Source

Added rm param to builds, fixed repo cache, added history support (don't rebuild previously built versions)

shin- 11 years ago
parent
commit
fe9ffac332
2 changed files with 12 additions and 3 deletions
  1. 2 0
      stackbrew/app.py
  2. 10 3
      stackbrew/brew/v2.py

+ 2 - 0
stackbrew/app.py

@@ -15,6 +15,7 @@ config = None
 with open('./config.json') as config_file:
     config = json.load(config_file)
 data = db.DbManager(config['db_url'], debug=config['debug'])
+history = {}
 brew.logger = app.logger
 brew.set_loglevel('DEBUG' if config['debug'] else 'INFO')
 
@@ -58,6 +59,7 @@ def build_task():
         repo_cache=config['repos_folder']
     )
     builder.build_repo_list()
+    builder.history = history
     builder.build_all(callback=summary.handle_build_result)
     if config['push']:
         builder.push_all()

+ 10 - 3
stackbrew/brew/v2.py

@@ -136,6 +136,7 @@ class StackbrewBuilder(object):
         self.namespaces = namespaces or ['stackbrew']
         self.targetlist = targetlist
         self.repo_cache = repo_cache
+        self.history = {}
 
     def build_repo_list(self):
         self.repos = []
@@ -175,6 +176,8 @@ class StackbrewBuilder(object):
                 e.log(logger)
 
     def build_version(self, repo, version, callback=None):
+        if version in self.history:
+            return self.history[version], None
         url, ref, dfile = version
         try:
             rep, dst_folder = self.clone_version(repo, version)
@@ -188,7 +191,11 @@ class StackbrewBuilder(object):
             if callback:
                 callback(exc, repo, version, None, None)
             raise exc
-        return self.do_build(repo, version, dockerfile_location, callback)
+        img_id, build_result = self.do_build(
+            repo, version, dockerfile_location, callback
+        )
+        self.history[version] = img_id
+        return img_id, build_result
 
     def do_build(self, repo, version, dockerfile_location, callback=None):
         raise NotImplementedError
@@ -212,7 +219,7 @@ class StackbrewBuilder(object):
         rep, dst_folder = repo.get_git_repo(url)
         if not dst_folder and self.repo_cache:
             dst_folder = os.path.join(
-                self.lib.library, repo.name + _random_suffix()
+                self.repo_cache, repo.name + _random_suffix()
             )
             os.mkdir(dst_folder)
         try:
@@ -258,7 +265,7 @@ class LocalBuilder(StackbrewBuilder):
         logger.info(
             'Build start: {0} {1}'.format(repo.name, version)
         )
-        build_result = self.client.build(path=dockerfile_location,
+        build_result = self.client.build(path=dockerfile_location, rm=True,
                                          stream=True, quiet=True)
         img_id = self._parse_result(build_result)
         if not img_id: