|
@@ -117,6 +117,14 @@ func (b *buildFile) CmdFrom(name string) error {
|
|
|
fmt.Fprintf(b.errStream, "# Executing %d build triggers\n", nTriggers)
|
|
|
}
|
|
|
for n, step := range b.config.OnBuild {
|
|
|
+ splitStep := strings.Split(step, " ")
|
|
|
+ stepInstruction := strings.ToUpper(strings.Trim(splitStep[0], " "))
|
|
|
+ switch stepInstruction {
|
|
|
+ case "ONBUILD":
|
|
|
+ return fmt.Errorf("Source image contains forbidden chained `ONBUILD ONBUILD` trigger: %s", step)
|
|
|
+ case "MAINTAINER", "FROM":
|
|
|
+ return fmt.Errorf("Source image contains forbidden %s trigger: %s", stepInstruction, step)
|
|
|
+ }
|
|
|
if err := b.BuildStep(fmt.Sprintf("onbuild-%d", n), step); err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -128,6 +136,14 @@ func (b *buildFile) CmdFrom(name string) error {
|
|
|
// The ONBUILD command declares a build instruction to be executed in any future build
|
|
|
// using the current image as a base.
|
|
|
func (b *buildFile) CmdOnbuild(trigger string) error {
|
|
|
+ splitTrigger := strings.Split(trigger, " ")
|
|
|
+ triggerInstruction := strings.ToUpper(strings.Trim(splitTrigger[0], " "))
|
|
|
+ switch triggerInstruction {
|
|
|
+ case "ONBUILD":
|
|
|
+ return fmt.Errorf("Chaining ONBUILD via `ONBUILD ONBUILD` isn't allowed")
|
|
|
+ case "MAINTAINER", "FROM":
|
|
|
+ return fmt.Errorf("%s isn't allowed as an ONBUILD trigger", triggerInstruction)
|
|
|
+ }
|
|
|
b.config.OnBuild = append(b.config.OnBuild, trigger)
|
|
|
return b.commit("", b.config.Cmd, fmt.Sprintf("ONBUILD %s", trigger))
|
|
|
}
|