本文整理汇总了Golang中github.com/openshift/origin/pkg/client.BuildInterface类的典型用法代码示例。如果您正苦于以下问题:Golang BuildInterface类的具体用法?Golang BuildInterface怎么用?Golang BuildInterface使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了BuildInterface类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: updateBuildRevision
func updateBuildRevision(c client.BuildInterface, build *api.Build, sourceInfo *git.SourceInfo) {
if build.Spec.Revision != nil {
return
}
build.Spec.Revision = &api.SourceRevision{
Git: &api.GitSourceRevision{
Commit: sourceInfo.CommitID,
Message: sourceInfo.Message,
Author: api.SourceControlUser{
Name: sourceInfo.AuthorName,
Email: sourceInfo.AuthorEmail,
},
Committer: api.SourceControlUser{
Name: sourceInfo.CommitterName,
Email: sourceInfo.CommitterEmail,
},
},
}
// Reset ResourceVersion to avoid a conflict with other updates to the build
build.ResourceVersion = ""
glog.V(4).Infof("Setting build revision to %#v", build.Spec.Revision.Git)
_, err := c.UpdateDetails(build)
if err != nil {
glog.Warningf("An error occurred saving build revision: %v", err)
}
}
示例2: createBuild
func createBuild(t *testing.T, buildInterface client.BuildInterface, strategy string) (*buildapi.Build, error) {
build := &buildapi.Build{}
build.GenerateName = strings.ToLower(string(strategy)) + "-build-"
build.Spec.Strategy = strategyForType(strategy)
build.Spec.Source.Git = &buildapi.GitBuildSource{URI: "example.org"}
return buildInterface.Create(build)
}
示例3: createDockerBuild
func createDockerBuild(t *testing.T, buildInterface client.BuildInterface) (*buildapi.Build, error) {
dockerBuild := &buildapi.Build{}
dockerBuild.GenerateName = "docker-build-"
dockerBuild.Spec.Strategy.Type = buildapi.DockerBuildStrategyType
dockerBuild.Spec.Source.Type = buildapi.BuildSourceGit
dockerBuild.Spec.Source.Git = &buildapi.GitBuildSource{URI: "example.org"}
return buildInterface.Create(dockerBuild)
}
示例4: createCustomBuild
func createCustomBuild(t *testing.T, buildInterface client.BuildInterface) (*buildapi.Build, error) {
dockerBuild := &buildapi.Build{}
dockerBuild.GenerateName = "custom-build-"
dockerBuild.Spec.Strategy.Type = buildapi.CustomBuildStrategyType
dockerBuild.Spec.Strategy.CustomStrategy = &buildapi.CustomBuildStrategy{From: kapi.ObjectReference{Name: "name:tag"}}
dockerBuild.Spec.Source.Type = buildapi.BuildSourceGit
dockerBuild.Spec.Source.Git = &buildapi.GitBuildSource{URI: "example.org"}
return buildInterface.Create(dockerBuild)
}
示例5: createBuild
func createBuild(t *testing.T, buildInterface client.BuildInterface, strategy string) (*buildapi.Build, error) {
build := &buildapi.Build{}
build.ObjectMeta.Labels = map[string]string{
buildapi.BuildConfigLabel: "mock-build-config",
buildapi.BuildRunPolicyLabel: string(buildapi.BuildRunPolicyParallel),
}
build.GenerateName = strings.ToLower(string(strategy)) + "-build-"
build.Spec.Strategy = strategyForType(t, strategy)
build.Spec.Source.Git = &buildapi.GitBuildSource{URI: "example.org"}
return buildInterface.Create(build)
}
示例6: WaitForBuildComplete
// WaitForBuildComplete waits for a build identified by the name to complete
func WaitForBuildComplete(c osclient.BuildInterface, name string) error {
isOK := func(b *buildapi.Build) bool {
return b.Status.Phase == buildapi.BuildPhaseComplete
}
isFailed := func(b *buildapi.Build) bool {
return b.Status.Phase == buildapi.BuildPhaseFailed ||
b.Status.Phase == buildapi.BuildPhaseCancelled ||
b.Status.Phase == buildapi.BuildPhaseError
}
for {
list, err := c.List(kapi.ListOptions{FieldSelector: fields.Set{"name": name}.AsSelector()})
if err != nil {
return err
}
for i := range list.Items {
if name == list.Items[i].Name && isOK(&list.Items[i]) {
return nil
}
if name != list.Items[i].Name || isFailed(&list.Items[i]) {
return fmt.Errorf("the build %s/%s status is %q", list.Items[i].Namespace, list.Items[i].Name, list.Items[i].Status.Phase)
}
}
rv := list.ResourceVersion
w, err := c.Watch(kapi.ListOptions{FieldSelector: fields.Set{"name": name}.AsSelector(), ResourceVersion: rv})
if err != nil {
return err
}
defer w.Stop()
for {
val, ok := <-w.ResultChan()
if !ok {
// reget and re-watch
break
}
if e, ok := val.Object.(*buildapi.Build); ok {
if name == e.Name && isOK(e) {
return nil
}
if name != e.Name || isFailed(e) {
return fmt.Errorf("The build %s/%s status is %q", e.Namespace, name, e.Status.Phase)
}
}
}
}
}
示例7: WaitForABuild
// WaitForABuild waits for a Build object to match either isOK or isFailed conditions
func WaitForABuild(c client.BuildInterface, name string, isOK, isFailed func(*buildapi.Build) bool) error {
for {
list, err := c.List(labels.Everything(), fields.Set{"name": name}.AsSelector())
if err != nil {
return err
}
for i := range list.Items {
if name == list.Items[i].Name && isOK(&list.Items[i]) {
return nil
}
if name != list.Items[i].Name || isFailed(&list.Items[i]) {
return fmt.Errorf("The build %q status is %q", name, &list.Items[i].Status.Phase)
}
}
rv := list.ResourceVersion
w, err := c.Watch(labels.Everything(), fields.Set{"name": name}.AsSelector(), rv)
if err != nil {
return err
}
defer w.Stop()
for {
val, ok := <-w.ResultChan()
if !ok {
// reget and re-watch
break
}
if e, ok := val.Object.(*buildapi.Build); ok {
if name == e.Name && isOK(e) {
return nil
}
if name != e.Name || isFailed(e) {
return fmt.Errorf("The build %q status is %q", name, e.Status.Phase)
}
}
}
}
}
示例8: retryBuildStatusUpdate
func retryBuildStatusUpdate(build *api.Build, client client.BuildInterface, sourceRev *api.SourceRevision) error {
return kclient.RetryOnConflict(kclient.DefaultBackoff, func() error {
// before updating, make sure we are using the latest version of the build
latestBuild, err := client.Get(build.Name)
if err != nil {
// usually this means we failed to get resources due to the missing
// privilleges
return err
}
if sourceRev != nil {
latestBuild.Spec.Revision = sourceRev
latestBuild.ResourceVersion = ""
}
latestBuild.Status.Reason = build.Status.Reason
latestBuild.Status.Message = build.Status.Message
if _, err := client.UpdateDetails(latestBuild); err != nil {
return err
}
return nil
})
}
示例9: WaitForABuild
// WaitForABuild waits for a Build object to match either isOK or isFailed conditions.
func WaitForABuild(c client.BuildInterface, name string, isOK, isFailed func(*buildapi.Build) bool) error {
// wait 2 minutes for build to exist
err := wait.Poll(1*time.Second, 2*time.Minute, func() (bool, error) {
if _, err := c.Get(name); err != nil {
return false, nil
}
return true, nil
})
if err != nil {
return err
}
// wait longer for the build to run to completion
return wait.Poll(5*time.Second, 20*time.Minute, func() (bool, error) {
list, err := c.List(labels.Everything(), fields.Set{"name": name}.AsSelector())
if err != nil {
return false, err
}
for i := range list.Items {
if name == list.Items[i].Name && isOK(&list.Items[i]) {
return true, nil
}
if name != list.Items[i].Name || isFailed(&list.Items[i]) {
return false, fmt.Errorf("The build %q status is %q", name, &list.Items[i].Status.Phase)
}
}
rv := list.ResourceVersion
w, err := c.Watch(labels.Everything(), fields.Set{"name": name}.AsSelector(), rv)
if err != nil {
return false, err
}
defer w.Stop()
for {
val, ok := <-w.ResultChan()
if !ok {
// reget and re-watch
return false, nil
}
if e, ok := val.Object.(*buildapi.Build); ok {
if name == e.Name && isOK(e) {
return true, nil
}
if name != e.Name || isFailed(e) {
return false, fmt.Errorf("The build %q status is %q", name, e.Status.Phase)
}
}
}
})
}
示例10: cloneBuild
func cloneBuild(t *testing.T, buildInterface client.BuildInterface, build *buildapi.Build) (*buildapi.Build, error) {
req := &buildapi.BuildRequest{}
req.Name = build.Name
return buildInterface.Clone(req)
}
示例11: updateBuild
func updateBuild(t *testing.T, buildInterface client.BuildInterface, build *buildapi.Build) (*buildapi.Build, error) {
build.Labels = map[string]string{"updated": "true"}
return buildInterface.Update(build)
}