Skip to content

Commit

Permalink
Run user-provided command as part of build flow
Browse files Browse the repository at this point in the history
This is meant to be used for running project unit tests as part of a
build.
  • Loading branch information
rhcarvalho committed Jan 21, 2016
1 parent cc9178d commit a8b0fc9
Show file tree
Hide file tree
Showing 14 changed files with 362 additions and 15 deletions.
17 changes: 17 additions & 0 deletions api/swagger-spec/oapi-v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -14594,6 +14594,10 @@
"$ref": "v1.ResourceRequirements",
"description": "the desired compute resources the build should have"
},
"postCommit": {
"$ref": "v1.BuildPostCommitSpec",
"description": "an action executed after the build output image is committed"
},
"completionDeadlineSeconds": {
"type": "integer",
"format": "int64",
Expand Down Expand Up @@ -15075,6 +15079,15 @@
}
}
},
"v1.BuildPostCommitSpec": {
"id": "v1.BuildPostCommitSpec",
"properties": {
"runBash": {
"type": "string",
"description": "bash script to be executed in a container running the build output image"
}
}
},
"v1.BuildConfigStatus": {
"id": "v1.BuildConfigStatus",
"required": [
Expand Down Expand Up @@ -15335,6 +15348,10 @@
"$ref": "v1.ResourceRequirements",
"description": "the desired compute resources the build should have"
},
"postCommit": {
"$ref": "v1.BuildPostCommitSpec",
"description": "an action executed after the build output image is committed"
},
"completionDeadlineSeconds": {
"type": "integer",
"format": "int64",
Expand Down
9 changes: 9 additions & 0 deletions pkg/api/deep_copy_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -877,6 +877,11 @@ func deepCopy_api_BuildOutput(in buildapi.BuildOutput, out *buildapi.BuildOutput
return nil
}

func deepCopy_api_BuildPostCommitSpec(in buildapi.BuildPostCommitSpec, out *buildapi.BuildPostCommitSpec, c *conversion.Cloner) error {
out.RunBash = in.RunBash
return nil
}

func deepCopy_api_BuildRequest(in buildapi.BuildRequest, out *buildapi.BuildRequest, c *conversion.Cloner) error {
if newVal, err := c.DeepCopy(in.TypeMeta); err != nil {
return err
Expand Down Expand Up @@ -1011,6 +1016,9 @@ func deepCopy_api_BuildSpec(in buildapi.BuildSpec, out *buildapi.BuildSpec, c *c
} else {
out.Resources = newVal.(pkgapi.ResourceRequirements)
}
if err := deepCopy_api_BuildPostCommitSpec(in.PostCommit, &out.PostCommit, c); err != nil {
return err
}
if in.CompletionDeadlineSeconds != nil {
out.CompletionDeadlineSeconds = new(int64)
*out.CompletionDeadlineSeconds = *in.CompletionDeadlineSeconds
Expand Down Expand Up @@ -2948,6 +2956,7 @@ func init() {
deepCopy_api_BuildLog,
deepCopy_api_BuildLogOptions,
deepCopy_api_BuildOutput,
deepCopy_api_BuildPostCommitSpec,
deepCopy_api_BuildRequest,
deepCopy_api_BuildSource,
deepCopy_api_BuildSpec,
Expand Down
32 changes: 32 additions & 0 deletions pkg/api/v1/conversion_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -1328,6 +1328,18 @@ func autoconvert_api_BuildOutput_To_v1_BuildOutput(in *buildapi.BuildOutput, out
return nil
}

func autoconvert_api_BuildPostCommitSpec_To_v1_BuildPostCommitSpec(in *buildapi.BuildPostCommitSpec, out *apiv1.BuildPostCommitSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*buildapi.BuildPostCommitSpec))(in)
}
out.RunBash = in.RunBash
return nil
}

func convert_api_BuildPostCommitSpec_To_v1_BuildPostCommitSpec(in *buildapi.BuildPostCommitSpec, out *apiv1.BuildPostCommitSpec, s conversion.Scope) error {
return autoconvert_api_BuildPostCommitSpec_To_v1_BuildPostCommitSpec(in, out, s)
}

func autoconvert_api_BuildRequest_To_v1_BuildRequest(in *buildapi.BuildRequest, out *apiv1.BuildRequest, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*buildapi.BuildRequest))(in)
Expand Down Expand Up @@ -1462,6 +1474,9 @@ func autoconvert_api_BuildSpec_To_v1_BuildSpec(in *buildapi.BuildSpec, out *apiv
if err := convert_api_ResourceRequirements_To_v1_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
return err
}
if err := convert_api_BuildPostCommitSpec_To_v1_BuildPostCommitSpec(&in.PostCommit, &out.PostCommit, s); err != nil {
return err
}
if in.CompletionDeadlineSeconds != nil {
out.CompletionDeadlineSeconds = new(int64)
*out.CompletionDeadlineSeconds = *in.CompletionDeadlineSeconds
Expand Down Expand Up @@ -2094,6 +2109,18 @@ func autoconvert_v1_BuildOutput_To_api_BuildOutput(in *apiv1.BuildOutput, out *b
return nil
}

func autoconvert_v1_BuildPostCommitSpec_To_api_BuildPostCommitSpec(in *apiv1.BuildPostCommitSpec, out *buildapi.BuildPostCommitSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*apiv1.BuildPostCommitSpec))(in)
}
out.RunBash = in.RunBash
return nil
}

func convert_v1_BuildPostCommitSpec_To_api_BuildPostCommitSpec(in *apiv1.BuildPostCommitSpec, out *buildapi.BuildPostCommitSpec, s conversion.Scope) error {
return autoconvert_v1_BuildPostCommitSpec_To_api_BuildPostCommitSpec(in, out, s)
}

func autoconvert_v1_BuildRequest_To_api_BuildRequest(in *apiv1.BuildRequest, out *buildapi.BuildRequest, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*apiv1.BuildRequest))(in)
Expand Down Expand Up @@ -2229,6 +2256,9 @@ func autoconvert_v1_BuildSpec_To_api_BuildSpec(in *apiv1.BuildSpec, out *buildap
if err := convert_v1_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
return err
}
if err := convert_v1_BuildPostCommitSpec_To_api_BuildPostCommitSpec(&in.PostCommit, &out.PostCommit, s); err != nil {
return err
}
if in.CompletionDeadlineSeconds != nil {
out.CompletionDeadlineSeconds = new(int64)
*out.CompletionDeadlineSeconds = *in.CompletionDeadlineSeconds
Expand Down Expand Up @@ -7867,6 +7897,7 @@ func init() {
autoconvert_api_BuildLogOptions_To_v1_BuildLogOptions,
autoconvert_api_BuildLog_To_v1_BuildLog,
autoconvert_api_BuildOutput_To_v1_BuildOutput,
autoconvert_api_BuildPostCommitSpec_To_v1_BuildPostCommitSpec,
autoconvert_api_BuildRequest_To_v1_BuildRequest,
autoconvert_api_BuildSource_To_v1_BuildSource,
autoconvert_api_BuildSpec_To_v1_BuildSpec,
Expand Down Expand Up @@ -8024,6 +8055,7 @@ func init() {
autoconvert_v1_BuildLogOptions_To_api_BuildLogOptions,
autoconvert_v1_BuildLog_To_api_BuildLog,
autoconvert_v1_BuildOutput_To_api_BuildOutput,
autoconvert_v1_BuildPostCommitSpec_To_api_BuildPostCommitSpec,
autoconvert_v1_BuildRequest_To_api_BuildRequest,
autoconvert_v1_BuildSource_To_api_BuildSource,
autoconvert_v1_BuildSpec_To_api_BuildSpec,
Expand Down
9 changes: 9 additions & 0 deletions pkg/api/v1/deep_copy_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -901,6 +901,11 @@ func deepCopy_v1_BuildOutput(in apiv1.BuildOutput, out *apiv1.BuildOutput, c *co
return nil
}

func deepCopy_v1_BuildPostCommitSpec(in apiv1.BuildPostCommitSpec, out *apiv1.BuildPostCommitSpec, c *conversion.Cloner) error {
out.RunBash = in.RunBash
return nil
}

func deepCopy_v1_BuildRequest(in apiv1.BuildRequest, out *apiv1.BuildRequest, c *conversion.Cloner) error {
if newVal, err := c.DeepCopy(in.TypeMeta); err != nil {
return err
Expand Down Expand Up @@ -1036,6 +1041,9 @@ func deepCopy_v1_BuildSpec(in apiv1.BuildSpec, out *apiv1.BuildSpec, c *conversi
} else {
out.Resources = newVal.(pkgapiv1.ResourceRequirements)
}
if err := deepCopy_v1_BuildPostCommitSpec(in.PostCommit, &out.PostCommit, c); err != nil {
return err
}
if in.CompletionDeadlineSeconds != nil {
out.CompletionDeadlineSeconds = new(int64)
*out.CompletionDeadlineSeconds = *in.CompletionDeadlineSeconds
Expand Down Expand Up @@ -2842,6 +2850,7 @@ func init() {
deepCopy_v1_BuildLog,
deepCopy_v1_BuildLogOptions,
deepCopy_v1_BuildOutput,
deepCopy_v1_BuildPostCommitSpec,
deepCopy_v1_BuildRequest,
deepCopy_v1_BuildSource,
deepCopy_v1_BuildSpec,
Expand Down
32 changes: 32 additions & 0 deletions pkg/api/v1beta3/conversion_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -1337,6 +1337,18 @@ func autoconvert_api_BuildOutput_To_v1beta3_BuildOutput(in *buildapi.BuildOutput
return nil
}

func autoconvert_api_BuildPostCommitSpec_To_v1beta3_BuildPostCommitSpec(in *buildapi.BuildPostCommitSpec, out *apiv1beta3.BuildPostCommitSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*buildapi.BuildPostCommitSpec))(in)
}
out.RunBash = in.RunBash
return nil
}

func convert_api_BuildPostCommitSpec_To_v1beta3_BuildPostCommitSpec(in *buildapi.BuildPostCommitSpec, out *apiv1beta3.BuildPostCommitSpec, s conversion.Scope) error {
return autoconvert_api_BuildPostCommitSpec_To_v1beta3_BuildPostCommitSpec(in, out, s)
}

func autoconvert_api_BuildRequest_To_v1beta3_BuildRequest(in *buildapi.BuildRequest, out *apiv1beta3.BuildRequest, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*buildapi.BuildRequest))(in)
Expand Down Expand Up @@ -1471,6 +1483,9 @@ func autoconvert_api_BuildSpec_To_v1beta3_BuildSpec(in *buildapi.BuildSpec, out
if err := convert_api_ResourceRequirements_To_v1beta3_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
return err
}
if err := convert_api_BuildPostCommitSpec_To_v1beta3_BuildPostCommitSpec(&in.PostCommit, &out.PostCommit, s); err != nil {
return err
}
if in.CompletionDeadlineSeconds != nil {
out.CompletionDeadlineSeconds = new(int64)
*out.CompletionDeadlineSeconds = *in.CompletionDeadlineSeconds
Expand Down Expand Up @@ -2103,6 +2118,18 @@ func autoconvert_v1beta3_BuildOutput_To_api_BuildOutput(in *apiv1beta3.BuildOutp
return nil
}

func autoconvert_v1beta3_BuildPostCommitSpec_To_api_BuildPostCommitSpec(in *apiv1beta3.BuildPostCommitSpec, out *buildapi.BuildPostCommitSpec, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*apiv1beta3.BuildPostCommitSpec))(in)
}
out.RunBash = in.RunBash
return nil
}

func convert_v1beta3_BuildPostCommitSpec_To_api_BuildPostCommitSpec(in *apiv1beta3.BuildPostCommitSpec, out *buildapi.BuildPostCommitSpec, s conversion.Scope) error {
return autoconvert_v1beta3_BuildPostCommitSpec_To_api_BuildPostCommitSpec(in, out, s)
}

func autoconvert_v1beta3_BuildRequest_To_api_BuildRequest(in *apiv1beta3.BuildRequest, out *buildapi.BuildRequest, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*apiv1beta3.BuildRequest))(in)
Expand Down Expand Up @@ -2238,6 +2265,9 @@ func autoconvert_v1beta3_BuildSpec_To_api_BuildSpec(in *apiv1beta3.BuildSpec, ou
if err := convert_v1beta3_ResourceRequirements_To_api_ResourceRequirements(&in.Resources, &out.Resources, s); err != nil {
return err
}
if err := convert_v1beta3_BuildPostCommitSpec_To_api_BuildPostCommitSpec(&in.PostCommit, &out.PostCommit, s); err != nil {
return err
}
if in.CompletionDeadlineSeconds != nil {
out.CompletionDeadlineSeconds = new(int64)
*out.CompletionDeadlineSeconds = *in.CompletionDeadlineSeconds
Expand Down Expand Up @@ -7834,6 +7864,7 @@ func init() {
autoconvert_api_BuildLogOptions_To_v1beta3_BuildLogOptions,
autoconvert_api_BuildLog_To_v1beta3_BuildLog,
autoconvert_api_BuildOutput_To_v1beta3_BuildOutput,
autoconvert_api_BuildPostCommitSpec_To_v1beta3_BuildPostCommitSpec,
autoconvert_api_BuildRequest_To_v1beta3_BuildRequest,
autoconvert_api_BuildSource_To_v1beta3_BuildSource,
autoconvert_api_BuildSpec_To_v1beta3_BuildSpec,
Expand Down Expand Up @@ -7991,6 +8022,7 @@ func init() {
autoconvert_v1beta3_BuildLogOptions_To_api_BuildLogOptions,
autoconvert_v1beta3_BuildLog_To_api_BuildLog,
autoconvert_v1beta3_BuildOutput_To_api_BuildOutput,
autoconvert_v1beta3_BuildPostCommitSpec_To_api_BuildPostCommitSpec,
autoconvert_v1beta3_BuildRequest_To_api_BuildRequest,
autoconvert_v1beta3_BuildSource_To_api_BuildSource,
autoconvert_v1beta3_BuildSpec_To_api_BuildSpec,
Expand Down
9 changes: 9 additions & 0 deletions pkg/api/v1beta3/deep_copy_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -909,6 +909,11 @@ func deepCopy_v1beta3_BuildOutput(in apiv1beta3.BuildOutput, out *apiv1beta3.Bui
return nil
}

func deepCopy_v1beta3_BuildPostCommitSpec(in apiv1beta3.BuildPostCommitSpec, out *apiv1beta3.BuildPostCommitSpec, c *conversion.Cloner) error {
out.RunBash = in.RunBash
return nil
}

func deepCopy_v1beta3_BuildRequest(in apiv1beta3.BuildRequest, out *apiv1beta3.BuildRequest, c *conversion.Cloner) error {
if newVal, err := c.DeepCopy(in.TypeMeta); err != nil {
return err
Expand Down Expand Up @@ -1044,6 +1049,9 @@ func deepCopy_v1beta3_BuildSpec(in apiv1beta3.BuildSpec, out *apiv1beta3.BuildSp
} else {
out.Resources = newVal.(pkgapiv1beta3.ResourceRequirements)
}
if err := deepCopy_v1beta3_BuildPostCommitSpec(in.PostCommit, &out.PostCommit, c); err != nil {
return err
}
if in.CompletionDeadlineSeconds != nil {
out.CompletionDeadlineSeconds = new(int64)
*out.CompletionDeadlineSeconds = *in.CompletionDeadlineSeconds
Expand Down Expand Up @@ -2832,6 +2840,7 @@ func init() {
deepCopy_v1beta3_BuildLog,
deepCopy_v1beta3_BuildLogOptions,
deepCopy_v1beta3_BuildOutput,
deepCopy_v1beta3_BuildPostCommitSpec,
deepCopy_v1beta3_BuildRequest,
deepCopy_v1beta3_BuildSource,
deepCopy_v1beta3_BuildSpec,
Expand Down
11 changes: 11 additions & 0 deletions pkg/build/api/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ type BuildSpec struct {
// Compute resource requirements to execute the build
Resources kapi.ResourceRequirements

// PostCommit is a build hook executed after the build output image is
// committed, before it is pushed to a registry.
PostCommit BuildPostCommitSpec

// Optional duration in seconds, counted from the time when a build pod gets
// scheduled in the system, that the build may be active on a node before the
// system actively tries to terminate the build; value must be positive integer
Expand Down Expand Up @@ -388,6 +392,13 @@ type SourceBuildStrategy struct {
ForcePull bool
}

// BuildPostCommitSpec holds a build post commit hook specification.
type BuildPostCommitSpec struct {
// RunBash holds a bash script to be executed in a container running the
// build output image.
RunBash string
}

// BuildOutput is input to a build strategy and describes the Docker image that the strategy
// should produce.
type BuildOutput struct {
Expand Down
11 changes: 11 additions & 0 deletions pkg/build/api/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ type BuildSpec struct {
// Compute resource requirements to execute the build
Resources kapi.ResourceRequirements `json:"resources,omitempty" description:"the desired compute resources the build should have"`

// PostCommit is a build hook executed after the build output image is
// committed, before it is pushed to a registry.
PostCommit BuildPostCommitSpec `json:"postCommit,omitempty" description:"an action executed after the build output image is committed"`

// Optional duration in seconds, counted from the time when a build pod gets
// scheduled in the system, that the build may be active on a node before the
// system actively tries to terminate the build; value must be positive integer
Expand Down Expand Up @@ -371,6 +375,13 @@ type SourceBuildStrategy struct {
ForcePull bool `json:"forcePull,omitempty" description:"forces the source build to pull the image if true"`
}

// BuildPostCommitSpec holds a build post commit hook specification.
type BuildPostCommitSpec struct {
// RunBash holds a bash script to be executed in a container running the
// build output image.
RunBash string `json:"runBash,omitempty" description:"bash script to be executed in a container running the build output image"`
}

// BuildOutput is input to a build strategy and describes the Docker image that the strategy
// should produce.
type BuildOutput struct {
Expand Down
11 changes: 11 additions & 0 deletions pkg/build/api/v1beta3/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ type BuildSpec struct {
// Compute resource requirements to execute the build
Resources kapi.ResourceRequirements `json:"resources,omitempty" description:"the desired compute resources the build should have"`

// PostCommit is a build hook executed after the build output image is
// committed, before it is pushed to a registry.
PostCommit BuildPostCommitSpec `json:"postCommit,omitempty" description:"an action executed after the build output image is committed"`

// Optional duration in seconds, counted from the time when a build pod gets
// scheduled in the system, that the build may be active on a node before the
// system actively tries to terminate the build; value must be positive integer
Expand Down Expand Up @@ -361,6 +365,13 @@ type SourceBuildStrategy struct {
ForcePull bool `json:"forcePull,omitempty" description:"forces the source build to pull the image if true"`
}

// BuildPostCommitSpec holds a build post commit hook specification.
type BuildPostCommitSpec struct {
// RunBash holds a bash script to be executed in a container running the
// build output image.
RunBash string `json:"runBash,omitempty" description:"bash script to be executed in a container running the build output image"`
}

// BuildOutput is input to a build strategy and describes the Docker image that the strategy
// should produce.
type BuildOutput struct {
Expand Down
Loading

0 comments on commit a8b0fc9

Please sign in to comment.