Skip to content
This repository has been archived by the owner on Mar 19, 2019. It is now read-only.

Docker file type cannot parse multiline LABEL section in Dockerfile #140

Closed
jakubka opened this issue Jan 3, 2017 · 0 comments
Closed
Labels

Comments

@jakubka
Copy link

jakubka commented Jan 3, 2017

My Dockerfile looks like this:

FROM python:3.5

LABEL org.label-schema.name="aiohttp" \
      org.label-schema.description="aiohttp reference app"

ENTRYPOINT python -v

when trying to manipulate it with:

with dockerfile f when path = "Dockerfile"
do addOrUpdateFrom latestImageName

This is an error I'm getting and a full call stack:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "rest" (class com.atomist.rug.kind.docker.DockerfileLine), not marked as ignorable (4 known properties: "raw", "name", "lineno", "args"])
 at [Source: N/A; line: -1, column: -1] (through reference chain: com.atomist.rug.kind.docker.DockerfileLine["rest"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62)
	at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834)
	at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1094)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1470)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1448)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:246)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:420)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1197)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:314)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:148)
	at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3584)
	at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3508)
	at com.atomist.rug.kind.docker.DockerfileParser$$anonfun$parse$1$$anonfun$apply$1$$anonfun$2.apply(DockerfileParser.scala:30)
	at com.atomist.rug.kind.docker.DockerfileParser$$anonfun$parse$1$$anonfun$apply$1$$anonfun$2.apply(DockerfileParser.scala:30)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.Iterator$class.foreach(Iterator.scala:893)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
	at scala.collection.MapLike$DefaultValuesIterable.foreach(MapLike.scala:206)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at com.atomist.rug.kind.docker.DockerfileParser$$anonfun$parse$1$$anonfun$apply$1.apply(DockerfileParser.scala:30)
	at com.atomist.rug.kind.docker.DockerfileParser$$anonfun$parse$1$$anonfun$apply$1.apply(DockerfileParser.scala:22)
	at com.atomist.util.Utils$.withCloseable(Utils.scala:41)
	at com.atomist.rug.kind.docker.DockerfileParser$$anonfun$parse$1.apply(DockerfileParser.scala:22)
	at com.atomist.rug.kind.docker.DockerfileParser$$anonfun$parse$1.apply(DockerfileParser.scala:21)
	at com.atomist.util.Utils$.withCloseable(Utils.scala:41)
	at com.atomist.rug.kind.docker.DockerfileParser$.parse(DockerfileParser.scala:21)
	at com.atomist.rug.kind.docker.DockerMutableView.<init>(DockerMutableView.scala:12)
	at com.atomist.rug.kind.docker.DockerType$$anonfun$findAllIn$2.apply(DockerType.scala:40)
	at com.atomist.rug.kind.docker.DockerType$$anonfun$findAllIn$2.apply(DockerType.scala:40)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at com.atomist.rug.kind.docker.DockerType.findAllIn(DockerType.scala:40)
	at com.atomist.rug.kind.dynamic.ViewFinder$class.findIn(ViewFinder.scala:50)
	at com.atomist.rug.spi.Type.findIn(Type.scala:14)
	at com.atomist.rug.kind.dynamic.DefaultViewFinder$$anonfun$3.apply(DefaultViewFinder.scala:68)
	at com.atomist.rug.kind.dynamic.DefaultViewFinder$$anonfun$3.apply(DefaultViewFinder.scala:66)
	at scala.Option.flatMap(Option.scala:171)
	at com.atomist.rug.kind.dynamic.DefaultViewFinder.findAllIn(DefaultViewFinder.scala:66)
	at com.atomist.rug.kind.dynamic.ViewFinder$class.findIn(ViewFinder.scala:50)
	at com.atomist.rug.kind.dynamic.DefaultViewFinder.findIn(DefaultViewFinder.scala:16)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$class.findViews(RugOperationSupport.scala:162)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$class.executedSelectedBlock(RugOperationSupport.scala:141)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectOperation.executedSelectedBlock(RugDrivenProjectOperation.scala:26)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$$anonfun$withOrFunctionDoStepHandler$1.applyOrElse(RugOperationSupport.scala:210)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$$anonfun$withOrFunctionDoStepHandler$1.applyOrElse(RugOperationSupport.scala:206)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$class.com$atomist$rug$runtime$rugdsl$RugOperationSupport$$runDoStep(RugOperationSupport.scala:182)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$$anonfun$executedSelectedBlock$1$$anonfun$apply$1.apply(RugOperationSupport.scala:148)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$$anonfun$executedSelectedBlock$1$$anonfun$apply$1.apply(RugOperationSupport.scala:146)
	at scala.collection.immutable.List.foreach(List.scala:381)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$$anonfun$executedSelectedBlock$1.apply(RugOperationSupport.scala:146)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$$anonfun$executedSelectedBlock$1.apply(RugOperationSupport.scala:145)
	at scala.collection.immutable.List.foreach(List.scala:381)
	at com.atomist.rug.runtime.rugdsl.RugOperationSupport$class.executedSelectedBlock(RugOperationSupport.scala:145)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectOperation.executedSelectedBlock(RugDrivenProjectOperation.scala:26)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectEditor$$anonfun$2$$anonfun$apply$1.apply(RugDrivenProjectEditor.scala:64)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectEditor$$anonfun$2$$anonfun$apply$1.apply(RugDrivenProjectEditor.scala:61)
	at scala.collection.immutable.List.foreach(List.scala:381)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectEditor$$anonfun$2.apply(RugDrivenProjectEditor.scala:61)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectEditor$$anonfun$2.apply(RugDrivenProjectEditor.scala:55)
	at com.atomist.util.Timing$.time(Timing.scala:16)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectEditor.modifyInternal(RugDrivenProjectEditor.scala:55)
	at com.atomist.project.edit.ProjectEditorSupport$class.modify(ProjectEditorSupport.scala:39)
	at com.atomist.rug.runtime.rugdsl.RugDrivenProjectEditor.modify(RugDrivenProjectEditor.scala:18)
	at com.atomist.rug.loader.DecoratingOperationsLoader$DecoratedProjectEditor.modify(DecoratingOperationsLoader.java:263)
	at com.atomist.rug.cli.command.edit.EditCommand.lambda$invoke$63(EditCommand.java:105)
	at com.atomist.rug.cli.output.ProgressReportingOperationRunner.run(ProgressReportingOperationRunner.java:20)
	at com.atomist.rug.cli.command.edit.EditCommand.invoke(EditCommand.java:105)
	at com.atomist.rug.cli.command.edit.EditCommand.run(EditCommand.java:73)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.atomist.rug.cli.command.AbstractAnnotationBasedCommand.invokeCommandMethod(AbstractAnnotationBasedCommand.java:56)
	at com.atomist.rug.cli.command.AbstractAnnotationBasedCommand.run(AbstractAnnotationBasedCommand.java:45)
	at com.atomist.rug.cli.command.AbstractCommand.loadOperationsAndInvokeRun(AbstractCommand.java:132)
	at com.atomist.rug.cli.command.AbstractCommand.run(AbstractCommand.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.atomist.rug.cli.command.ReflectiveCommandRunMethodRunner.invokeCommand(ReflectiveCommandRunMethodRunner.java:20)
	at com.atomist.rug.cli.command.ReflectiveCommandRunner.runCommand(ReflectiveCommandRunner.java:68)
	at com.atomist.rug.cli.Runner.runCommand(Runner.java:121)
	at com.atomist.rug.cli.Runner.run(Runner.java:44)
	at com.atomist.rug.cli.Main.main(Main.java:17)

I confirmed that the docker file type works fine if the LABEL section only has one line. Also, spanning instructions across multiple lines in other sections (RUN for example) works fine as well.

@kipz kipz added the bug label Jan 3, 2017
@kipz kipz self-assigned this Jan 3, 2017
ddgenome added a commit that referenced this issue Jan 3, 2017
Ensure that line markers are ignored when parsing key=value pairs #140
@cdupuis cdupuis closed this as completed Jan 3, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants