shin- 12 éve
szülő
commit
40ed98fab3
3 módosított fájl, 12 hozzáadás és 20 törlés
  1. 7 1
      stackbrew/brew/brew.py
  2. 2 6
      stackbrew/brew/git.py
  3. 3 13
      stackbrew/brew/summary.py

+ 7 - 1
stackbrew/brew/brew.py

@@ -12,7 +12,7 @@ from summary import Summary
 DEFAULT_REPOSITORY = 'git://github.com/shin-/brew'
 DEFAULT_BRANCH = 'master'
 
-client = docker.Client()
+client = docker.Client(timeout=10000)
 processed = {}
 processed_folders = []
 
@@ -205,6 +205,8 @@ def build_repo(repository, ref, docker_repo, docker_tag, namespace, push,
             try:
                 rep, dst_folder = git.clone(repository, ref, dst_folder)
             except Exception:
+                if dst_folder:
+                    rmtree(dst_folder)
                 ref = 'refs/tags/' + ref
                 rep, dst_folder = git.clone(repository, ref, dst_folder)
             processed[repository] = rep
@@ -228,6 +230,10 @@ def build_repo(repository, ref, docker_repo, docker_tag, namespace, push,
         commit_id = rep.head()
         logger.info('Building using dockerfile...')
         img_id, logs = client.build(path=dst_folder, quiet=True)
+        if img_id is None:
+            logger.error('Image ID not found. Printing build logs...')
+            logger.debug(logs)
+            raise RuntimeError('Build failed')
 
     logger.info('Committing to {0}:{1}'.format(docker_repo,
                 docker_tag or 'latest'))

+ 2 - 6
stackbrew/brew/git.py

@@ -19,16 +19,12 @@ def clone_tag(repo_url, tag, folder=None):
 
 
 def checkout(rep, ref=None):
-    is_commit = False
     if ref is None:
         ref = 'refs/heads/master'
-    elif not ref.startswith('refs/'):
-        is_commit = True
     elif ref.startswith('refs/tags'):
         ref = rep.ref(ref)
-        is_commit = True
-    if is_commit:
-        rep['HEAD'] = rep.commit(ref)
+    if isinstance(rep[ref], Tag):
+        rep['HEAD'] = rep[ref].object[1]
     else:
         rep['HEAD'] = rep.refs[ref]
     indexfile = rep.index_path()

+ 3 - 13
stackbrew/brew/summary.py

@@ -17,19 +17,9 @@ class Summary(object):
 
     def _add_data(self, image, linestr, data):
         linestr = linestr.strip('\n')
-        parts = linestr.split()
-        tag = 'latest'
-        source = None
-        if len(parts) == 1:
-            source = linestr + '@B:master'
-        elif len(parts) == 2:
-            tag = parts[0]
-            source = parts[1] + '@B:master'
-        elif len(parts) == 3:
-            tag = parts[0]
-            source = '{}@{}'.format(parts[1], parts[2])
-        data.tag = tag
-        data.source = source
+        parts = linestr.split(':', 1)
+        data.tag = parts[0]
+        data.source = parts[1]
         if image not in self._summary:
             self._summary[image] = {linestr: data}
         else: