Skip to content

Commit 36b7774

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 9762ccd + 92267fc commit 36b7774

11 files changed

Lines changed: 76 additions & 43 deletions

File tree

deploy/infrabox/templates/api/deployment.yaml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,6 @@ spec:
5151
-
5252
name: INFRABOX_GERRIT_ENABLED
5353
value: {{ .Values.gerrit.enabled | quote }}
54-
livenessProbe:
55-
httpGet:
56-
path: /ping
57-
port: 8080
58-
initialDelaySeconds: 5
59-
periodSeconds: 5
60-
timeoutSeconds: 5
61-
readinessProbe:
62-
httpGet:
63-
path: /ping
64-
port: 8080
65-
initialDelaySeconds: 5
66-
periodSeconds: 5
67-
timeoutSeconds: 5
6854
volumes:
6955
{{ include "volumes_database" . | indent 16 }}
7056
{{ include "volumes_rsa" . | indent 16 }}

docs/doc.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ The job type docker is one of the most important jobs. You can use it to run any
3535
"build_arguments": { ... },
3636
"deployments": [ ... ],
3737
"security_context": { ... },
38-
"repository": { ... }
38+
"repository": { ... },
39+
"registries": []
3940
}]
4041
}
4142
```
@@ -56,6 +57,7 @@ The job type docker is one of the most important jobs. You can use it to run any
5657
|deployments|false|[Deployment Configuration](#deployments)|[]|Push your images to a registry|
5758
|security_context|false|[Security Context](#security-context)|[]|Configure security related options|
5859
|repository|false|[Repository Configuration](#repository)|{}|Configure git repository options|
60+
|registries|false|[Source Registry Configuration](#image-source-registry)|[]|Configure the source registries|
5961

6062
### Deployments
6163
The docker images which have been build can also be pushed to a docker registry by InfraBox.

infrabox/generator/generator.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,6 @@ def main():
6363
'data': False
6464
}
6565

66-
if not branch:
67-
for j in deployments['jobs']:
68-
if 'deployments' in j:
69-
del j['deployments']
70-
71-
7266
with open('/infrabox/output/deployments.json', 'w') as out:
7367
json.dump(deployments, out)
7468

src/api/handlers/job_api.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -596,8 +596,6 @@ def get(self, parent_job_id):
596596

597597
key = "%s/%s" % (parent_job_id, filename)
598598

599-
app.logger.error(key)
600-
601599
g.release_db()
602600
f = storage.download_output(key)
603601

src/api/handlers/projects/jobs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ def get(self, project_id, job_id):
311311
logger.error(key)
312312
abort(404)
313313

314-
return send_file(f, attachment_filename=os.path.basename(f))
314+
return send_file(f, as_attachment=True, attachment_filename=os.path.basename(f))
315315

316316

317317
@ns.route('/<project_id>/jobs/<job_id>/archive')

src/controller/pkg/stub/function.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ func (c *Controller) syncFunctionInvocation(cr *v1alpha1.IBFunctionInvocation, l
167167
log.Info("Updating job status")
168168

169169
if cr.Status.State.Terminated != nil {
170-
if cr.Status.State.Terminated.Message == "Error" {
170+
if cr.Status.State.Terminated.Reason == "Error" {
171171
log.Errorf("%+v\n", pod)
172172
}
173173
}

src/controller/pkg/stub/pipeline.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ func (c *Controller) deletePipelineInvocation(cr *v1alpha1.IBPipelineInvocation,
4747
cr.SetFinalizers([]string{})
4848
err = updateStatus(cr, log)
4949
if err != nil && !errors.IsNotFound(err) {
50-
logrus.Errorf("Failed to remove finalizers: %v", err)
5150
return err
5251
}
5352

src/job/infrabox_job/job.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,18 +93,25 @@ def create_jobs(self, jobs):
9393
"jobs": jobs,
9494
}
9595

96-
r = requests.post("%s/create_jobs" % self.api_server,
97-
headers=self.get_headers(),
98-
json=payload, timeout=60, verify=self.verify)
96+
while True:
97+
r = requests.post("%s/create_jobs" % self.api_server,
98+
headers=self.get_headers(),
99+
json=payload, timeout=60, verify=self.verify)
99100

100-
if r.status_code != 200:
101-
msg = r.text
102-
try:
103-
msg = r.json()['message']
104-
except:
105-
pass
101+
if r.status_code == 200:
102+
return
106103

107-
raise Failure(msg)
104+
if r.status_code == 400:
105+
msg = r.text
106+
try:
107+
msg = r.json()['message']
108+
except:
109+
pass
110+
111+
raise Failure(msg)
112+
113+
self.console.collect('Failed to connect to API, retrying.', show=True)
114+
time.sleep(3)
108115

109116
def post_api_server(self, endpoint, data=None):
110117
while True:
@@ -119,6 +126,7 @@ def post_api_server(self, endpoint, data=None):
119126
except Exception as e:
120127
print e
121128

129+
self.console.collect('Failed to connect to API, retrying.', show=True)
122130
time.sleep(1)
123131

124132
def post_stats(self, stat):
@@ -165,7 +173,7 @@ def _get_file_from_api_server(self, url, path):
165173
message = None
166174

167175
r = None
168-
for _ in xrange(0, 5):
176+
for _ in xrange(0, 20):
169177
try:
170178
message = None
171179
r = requests.get("%s%s" % (self.api_server, url),
@@ -176,6 +184,8 @@ def _get_file_from_api_server(self, url, path):
176184
return
177185

178186
if r.status_code != 200:
187+
self.console.collect('Failed to download file (%s), retrying' % r.status_code, show=True)
188+
time.sleep(10)
179189
continue
180190

181191
with open(path, 'wb') as f:
@@ -185,6 +195,7 @@ def _get_file_from_api_server(self, url, path):
185195

186196
except Exception as e:
187197
message = str(e)
198+
self.console.collect('Failed to download file (%s), retrying' % message, show=True)
188199
time.sleep(10)
189200
continue
190201

@@ -199,7 +210,7 @@ def _get_file_from_api_server(self, url, path):
199210
except:
200211
pass
201212

202-
raise Failure('Failed to download file: %s' % msg)
213+
raise Failure('Failed to download file(%s): %s' % (r.status_code, msg))
203214

204215
def post_file_to_api_server(self, url, path, filename=None, split=False):
205216
if not filename:

src/job/job.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,9 @@ def run_job_docker_compose(self, c):
597597
service_badge_dir = os.path.join(self.infrabox_badge_dir, service)
598598
makedirs(service_badge_dir)
599599

600+
service_archive_dir = os.path.join(self.infrabox_archive_dir, service)
601+
makedirs(service_archive_dir)
602+
600603
service_volumes = [
601604
"%s:/infrabox/cache" % service_cache_dir,
602605
"%s:/infrabox/inputs" % self.infrabox_inputs_dir,
@@ -606,6 +609,7 @@ def run_job_docker_compose(self, c):
606609
"%s:/infrabox/upload/markup" % service_markup_dir,
607610
"%s:/infrabox/upload/badge" % service_badge_dir,
608611
"%s:/infrabox/upload/coverage" % service_coverage_dir,
612+
"%s:/infrabox/upload/archive" % service_archive_dir,
609613
]
610614

611615
for v in compose_file_content['services'][service].get('volumes', []):
@@ -732,7 +736,10 @@ def deploy_images(self, image_name):
732736
c.header("Deploying", show=True)
733737

734738
for dep in self.deployments:
735-
self.deploy_image(image_name, dep)
739+
target = dep.get('target', None)
740+
741+
if not target:
742+
self.deploy_image(image_name, dep)
736743

737744
def login_docker_registry(self):
738745
c = self.console
@@ -835,6 +842,13 @@ def run_docker_container(self, image_name):
835842
logger.exception(ex)
836843
raise Failure("Could not get exit code of container")
837844

845+
try:
846+
c.execute(("docker", "commit", container_name, image_name))
847+
c.header("Finalize", show=True)
848+
except Exception as ex:
849+
logger.exception(ex)
850+
raise Failure("Could not commit and push container")
851+
838852
logger.exception(e)
839853
raise Failure("Container run exited with error (exit code=%s)" % exit_code)
840854

@@ -889,7 +903,7 @@ def build_docker_image(self, image_name, cache_image, target=None):
889903
def run_job_docker_image(self, c):
890904
image_name = self.job['definition']['image'].replace('$INFRABOX_BUILD_NUMBER', str(self.build['build_number']))
891905

892-
if self.job.get('run', True):
906+
if self.job.get('definition', {}).get('run', True):
893907
self._login_source_registries()
894908
self.run_docker_container(image_name)
895909
self._logout_source_registries()
@@ -950,13 +964,19 @@ def run_job_docker(self, c):
950964

951965
if self.deployments:
952966
for d in self.deployments:
953-
self.build_docker_image(image_name_build, image_name_latest, d.get('target', None))
967+
target = d.get('target', None)
968+
969+
if not target and not self.job.get('build_only', True):
970+
continue
971+
972+
self.build_docker_image(image_name_build, image_name_latest, target=target)
954973
c.header("Deploying", show=True)
955974
self.deploy_image(image_name_build, d)
956975

957976
if not self.job.get('build_only', True):
958977
self.build_docker_image(image_name_build, image_name_latest)
959978
self.run_docker_container(image_name_build)
979+
self.deploy_images(image_name_build)
960980

961981
c.header("Finalize", show=True)
962982

src/pyinfrabox/infrabox/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ def parse_docker(d, path):
247247
check_allowed_properties(d, path, ("type", "name", "docker_file", "depends_on", "resources",
248248
"build_only", "environment",
249249
"build_arguments", "deployments", "timeout", "security_context",
250-
"build_context", "cache", "repository", "cluster", "services"))
250+
"build_context", "cache", "repository", "cluster", "services", "registries"))
251251
check_required_properties(d, path, ("type", "name", "docker_file", "resources"))
252252
check_name(d['name'], path + ".name")
253253
check_text(d['docker_file'], path + ".docker_file")
@@ -289,6 +289,9 @@ def parse_docker(d, path):
289289
if 'build_context' in d:
290290
check_text(d['build_context'], path + ".build_context")
291291

292+
if 'registries' in d:
293+
parse_registries(d['registries'], path + '.registries')
294+
292295
def parse_docker_compose(d, path):
293296
check_allowed_properties(d, path, ("type", "name", "docker_compose_file", "depends_on",
294297
"environment", "resources", "cache", "timeout", "cluster", "repository"))

0 commit comments

Comments
 (0)