本文整理汇总了Golang中github.com/convox/rack/api/structs.Build.Logs方法的典型用法代码示例。如果您正苦于以下问题:Golang Build.Logs方法的具体用法?Golang Build.Logs怎么用?Golang Build.Logs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/convox/rack/api/structs.Build
的用法示例。
在下文中一共展示了Build.Logs方法的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
}
}