本文整理匯總了Golang中github.com/convox/rack/api/structs.Build.Status方法的典型用法代碼示例。如果您正苦於以下問題:Golang Build.Status方法的具體用法?Golang Build.Status怎麽用?Golang Build.Status使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/convox/rack/api/structs.Build
的用法示例。
在下文中一共展示了Build.Status方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: buildWait
func (p *AWSProvider) buildWait(a *structs.App, b *structs.Build, cmd *exec.Cmd, stdout io.ReadCloser) {
// scan all output
out := ""
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
text := scanner.Text()
out += text + "\n"
p.kinesis().PutRecord(&kinesis.PutRecordInput{
Data: []byte(text),
PartitionKey: aws.String(string(time.Now().UnixNano())),
StreamName: aws.String(a.Outputs["Kinesis"]),
})
}
if err := scanner.Err(); err != nil {
helpers.Error(nil, err) // send internal error to rollbar
}
// and wait for a return code
werr := cmd.Wait()
// reload build item to get data from BuildUpdate callback
b, err := p.BuildGet(b.App, b.Id)
if err != nil {
helpers.Error(nil, err) // send internal error to rollbar
return
}
// Wait / return code are errors, consider the build failed
if werr != nil {
b.Status = "failed"
}
// save final build logs / status
b.Logs = string(out)
err = p.BuildSave(b)
if err != nil {
helpers.Error(nil, err) // send internal error to rollbar
return
}
}
示例2: buildWait
func (p *AWSProvider) buildWait(a *structs.App, b *structs.Build, cmd *exec.Cmd, stdout io.ReadCloser) {
// scan all output
scanner := bufio.NewScanner(stdout)
out := ""
for scanner.Scan() {
text := scanner.Text()
out += text + "\n"
}
if err := scanner.Err(); err != nil {
helpers.Error(nil, err) // send internal error to rollbar
}
var cmdStatus string
waitErr := make(chan error)
timeout := time.After(1 * time.Hour)
go func() {
err := cmd.Wait()
switch err.(type) {
case *exec.ExitError:
waitErr <- err
default:
waitErr <- nil
}
}()
select {
case werr := <-waitErr:
// Wait / return code are errors, consider the build failed
if werr != nil {
cmdStatus = "failed"
}
case <-timeout:
cmdStatus = "timeout"
// Force kill the build container since its taking way to long
killCmd := exec.Command("docker", "kill", fmt.Sprintf("build-%s", b.Id))
killCmd.Start()
}
// reload build item to get data from BuildUpdate callback
b, err := p.BuildGet(b.App, b.Id)
if err != nil {
helpers.Error(nil, err) // send internal error to rollbar
return
}
if cmdStatus != "" { // Careful not to override the status set by BuildUpdate
b.Status = cmdStatus
}
// save final build logs / status
b.Logs = out
err = p.BuildSave(b)
if err != nil {
helpers.Error(nil, err) // send internal error to rollbar
return
}
}