@@ -47,13 +47,11 @@ func build(conf *Config, newRev string) error {
4747 // PUSH_URL=$HTTP_PREFIX://$S3EP/git/home/${SLUG_NAME}/push
4848 storage , err := getStorageConfig ()
4949 if err != nil {
50- log .Err (err .Error ())
51- os .Exit (1 )
50+ return err
5251 }
5352 creds , err := getStorageCreds ()
5453 if err == errMissingKey || err == errMissingSecret {
55- log .Err (err .Error ())
56- os .Exit (1 )
54+ return err
5755 }
5856
5957 // #!/usr/bin/env bash
@@ -139,8 +137,7 @@ func build(conf *Config, newRev string) error {
139137 metaName := strings .Replace (slugName , ":" , "-" , - 1 )
140138 tmpImage := fmt .Sprintf ("%s:%s/%s" , conf .RegistryHost , conf .RegistryPort , conf .ImageName )
141139 if err := os .MkdirAll (buildDir , os .ModeDir ); err != nil {
142- log .Err ("making the build directory %s (%s)" , buildDir , err )
143- os .Exit (1 )
140+ return fmt .Errorf ("making the build directory %s (%s)" , buildDir , err )
144141 }
145142 tmpDir := os .TempDir ()
146143
@@ -156,17 +153,15 @@ func build(conf *Config, newRev string) error {
156153 cmd .Stdout = os .Stdout
157154 cmd .Stderr = os .Stderr
158155 if err := cmd .Run (); err != nil {
159- log .Err ("running %s" , strings .Join (cmd .Args , " " ))
160- os .Exit (1 )
156+ return fmt .Errorf ("running %s" , strings .Join (cmd .Args , " " ))
161157 }
162158 // tar -xzf ${APP_NAME}.tar.gz -C $TMP_DIR/
163159 tarCmd := exec .Command ("tar" , "-xzf" , fmt .Sprintf ("%s.tar.gz" , appName ), "-C" , fmt .Sprintf ("%s/" , tmpDir ))
164160 tarCmd .Dir = repoDir
165161 tarCmd .Stdout = os .Stdout
166162 tarCmd .Stderr = os .Stderr
167163 if err := tarCmd .Run (); err != nil {
168- log .Err ("running %s" , strings .Join (cmd .Args , " " ))
169- os .Exit (1 )
164+ return fmt .Errorf ("running %s" , strings .Join (cmd .Args , " " ))
170165 }
171166
172167 // USING_DOCKERFILE=true
@@ -184,8 +179,7 @@ func build(conf *Config, newRev string) error {
184179 }
185180 procFile , err := pkg .YamlToJSON (rawProcFile )
186181 if err != nil {
187- log .Err ("procfile %s/Procfile is not valid JSON [%s]" , tmpDir , err )
188- os .Exit (1 )
182+ return fmt .Errorf ("procfile %s/Procfile is not valid JSON [%s]" , tmpDir , err )
189183 }
190184
191185 // if [[ ! -f /var/run/secrets/object/store/access-key-id ]]; then
@@ -226,14 +220,12 @@ func build(conf *Config, newRev string) error {
226220 }
227221 } else if err != nil {
228222 // unexpected error, fail
229- log .Err ("unexpected error (%s)" , err )
230- os .Exit (1 )
223+ return fmt .Errorf ("unexpected error (%s)" , err )
231224 }
232225
233226 fileBytes , err := ioutil .ReadFile (srcManifest )
234227 if err != nil {
235- log .Err ("reading kubernetes manifest %s (%s)" , srcManifest , err )
236- os .Exit (1 )
228+ return fmt .Errorf ("reading kubernetes manifest %s (%s)" , srcManifest , err )
237229 }
238230
239231 // sed -i -- "s#repo_name#$META_NAME#g" /etc/${SLUG_NAME}.yaml
@@ -255,8 +247,7 @@ func build(conf *Config, newRev string) error {
255247 }
256248
257249 if err := ioutil .WriteFile (finalManifestFileName , []byte (finalManifest ), os .ModePerm ); err != nil {
258- log .Err ("writing final manifest %s (%s)" , finalManifestFileName , err )
259- os .Exit (1 )
250+ return fmt .Errorf ("writing final manifest %s (%s)" , finalManifestFileName , err )
260251 }
261252 //
262253 // git archive --format=tar.gz ${GIT_SHA} > ${APP_NAME}.tar.gz
@@ -266,8 +257,7 @@ func build(conf *Config, newRev string) error {
266257 gitArchiveCmd .Stdout = os .Stdout
267258 gitArchiveCmd .Stderr = os .Stderr
268259 if err := gitArchiveCmd .Run (); err != nil {
269- log .Err ("running %s" , strings .Join (cmd .Args , " " ))
270- os .Exit (1 )
260+ return fmt .Errorf ("running %s" , strings .Join (cmd .Args , " " ))
271261 }
272262
273263 //
@@ -283,8 +273,7 @@ func build(conf *Config, newRev string) error {
283273 // MC_PREFIX="mc -C $CONFIG_DIR --quiet"
284274 configDir := "/var/minio-conf"
285275 if err := os .MkdirAll (configDir , os .ModePerm ); err != nil {
286- log .Err ("creating minio config file (%s)" , err )
287- os .Exit (1 )
276+ return fmt .Errorf ("creating minio config file (%s)" , err )
288277 }
289278 baseMinioCmd := exec .Command ("mc" , "-C" , configDir , "--quiet" )
290279 baseMinioCmd .Stderr = os .Stderr
@@ -301,8 +290,7 @@ func build(conf *Config, newRev string) error {
301290 creds .secret ,
302291 )
303292 if err := configCmd .Run (); err != nil {
304- log .Err ("configuring the minio client (%s)" , err )
305- os .Exit (1 )
293+ return fmt .Errorf ("configuring the minio client (%s)" , err )
306294 }
307295
308296 // $MC_PREFIX mb "$HTTP_PREFIX://${S3EP}/git" &>/dev/null
@@ -325,8 +313,7 @@ func build(conf *Config, newRev string) error {
325313 )
326314 cpCmd .Dir = repoDir
327315 if err := cpCmd .Run (); err != nil {
328- log .Err ("copying %s.tar.gz to %s (%s)" , appName , tarURL , err )
329- os .Exit (1 )
316+ return fmt .Errorf ("copying %s.tar.gz to %s (%s)" , appName , tarURL , err )
330317 }
331318
332319 //
@@ -343,8 +330,7 @@ func build(conf *Config, newRev string) error {
343330 )
344331 kubectlCmd .Stderr = os .Stderr
345332 if err := kubectlCmd .Run (); err != nil {
346- log .Err ("creating builder pod (%s)" , err )
347- os .Exit (1 )
333+ return fmt .Errorf ("creating builder pod (%s)" , err )
348334 }
349335
350336 //
@@ -369,8 +355,7 @@ func build(conf *Config, newRev string) error {
369355 var out bytes.Buffer
370356 getCmd .Stdout = & out
371357 if err := getCmd .Run (); err != nil {
372- log .Err ("running %s while determining if builder pod %s is running (%s)" , buildPodName , err )
373- os .Exit (1 )
358+ return fmt .Errorf ("running %s while determining if builder pod %s is running (%s)" , buildPodName , err )
374359 }
375360 if strings .Contains (string (out .Bytes ()), "phase: Running" ) {
376361 break
@@ -388,8 +373,7 @@ func build(conf *Config, newRev string) error {
388373 )
389374 logsCmd .Stdout = os .Stdout
390375 if err := logsCmd .Run (); err != nil {
391- log .Err ("running %s to get builder logs (%s)" , strings .Join (logsCmd .Args , " " ), err )
392- os .Exit (1 )
376+ return fmt .Errorf ("running %s to get builder logs (%s)" , strings .Join (logsCmd .Args , " " ), err )
393377 }
394378
395379 //
@@ -438,6 +422,18 @@ func build(conf *Config, newRev string) error {
438422 // exit 1
439423 // fi
440424 //
425+
426+ cfg , err := getAppConfig (
427+ conf ,
428+ getBuilderKey (),
429+ conf .Username ,
430+ conf .App ,
431+ )
432+ if err != nil {
433+ return fmt .Errorf ("getting app config for %s (%s)" , conf .App , err )
434+ os .Exit (1 )
435+ }
436+
441437 // # use Procfile if provided, otherwise try default process types from ./release
442438 //
443439 // puts-step "Launching... "
@@ -450,6 +446,25 @@ func build(conf *Config, newRev string) error {
450446 // puts-warn $PUBLISH_RELEASE
451447 // exit 1
452448 // fi
449+
450+ log .Info ("Launching..." )
451+
452+ buildHook := & pkg.BuildHook {
453+ Sha : conf .SHA ,
454+ ReceiveUser : conf .Username ,
455+ ReceiveRepo : conf .Repository ,
456+ Image : conf .ImageName ,
457+ Procfile : procFile ,
458+ Dockerfile : usingDockerfile ,
459+ }
460+ buildHookResp , err := publishRelease (
461+ conf ,
462+ getBuilderKey (),
463+ buildHook ,
464+ )
465+ if err != nil {
466+ return fmt .Errorf ("publishing release (%s)" , err )
467+ }
453468 //
454469 // RELEASE=$(echo $PUBLISH_RELEASE | extract-version)
455470 // DOMAIN=$(echo $PUBLISH_RELEASE | extract-domain)
@@ -459,10 +474,30 @@ func build(conf *Config, newRev string) error {
459474 // echo
460475 // indent "To learn more, use \`deis help\` or visit http://deis.io"
461476 // echo
477+
478+ release , ok := buildHookResp .Release ["version" ]
479+ if ! ok {
480+ return fmt .Errorf ("No release returned from Deis controller" )
481+ }
482+ if buildHookResp .Domains == nil || len (buildHookResp .Domains ) == 0 {
483+ return fmt .Errorf ("No domains returned from Deis controller" )
484+ }
485+ domain := buildHookResp .Domains [0 ]
486+
487+ log .Info (fmt .Sprintf ("http://%s" , domain ))
488+ log .Info ("To learn more, use 'deis help' or visit http://deis.io" )
489+
462490 //
463491 // # cleanup
464492 // cd $REPO_DIR
465493 // git gc &>/dev/null
466494
495+ gcCmd := exec .Command ("git" , "gc" )
496+ gcCmd .Dir = repoDir
497+ if err := gcCmd .Run (); err != nil {
498+ return fmt .Errorf ("cleaning up the repository with %s (%s)" , strings .Join (gcCmd .Args , " " ), err )
499+ // TODO: is it ok not to exit even if the repo was not cleaned up
500+ }
501+
467502 return nil
468503}
0 commit comments