Bug 1821860 - [4.4] Build incorrectly substitutes "=" for spaces in Dockerfiles
Summary: [4.4] Build incorrectly substitutes "=" for spaces in Dockerfiles
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: OpenShift Container Platform
Classification: Red Hat
Component: Build
Version: 4.2.z
Hardware: Unspecified
OS: Unspecified
unspecified
medium
Target Milestone: ---
: 4.4.0
Assignee: Nalin Dahyabhai
QA Contact: wewang
URL:
Whiteboard:
Depends On: 1821858
Blocks: 1821861
TreeView+ depends on / blocked
 
Reported: 2020-04-07 18:17 UTC by Adam Kaplan
Modified: 2020-05-04 11:49 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Cause: Before starting a build, the OpenShift builder would parse the supplied Dockerfile and reconstruct a modified version of it to use for the build, to add labels and handle substitutions of the images named in FROM instructions. The generated Dockerfile did not always correctly reconstruct ENV and LABEL instructions. Consequence: The generated Dockerfile would sometimes include "=" characters where the original did not, and the build would fail with a syntax error. Fix: When generating the modified Dockerfile, the original text for ENV and LABEL instructions is now used verbatim. Result: The build process should no longer introduce syntax errors in ENV and LABEL instructions.
Clone Of: 1821858
: 1821861 (view as bug list)
Environment:
Last Closed: 2020-05-04 11:48:34 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Priority Status Summary Last Updated
Github openshift builder pull 148 None closed [release-4.4] Bug 1821860: manage-dockerfile: use the original form of ENV/LABEL 2020-07-28 14:09:07 UTC
Red Hat Product Errata RHBA-2020:0581 None None None 2020-05-04 11:49:00 UTC

Description Adam Kaplan 2020-04-07 18:17:04 UTC
+++ This bug was initially created as a clone of Bug #1821858 +++

Description of problem:

When rewriting the Dockerfile with our substitutions, we unconditionally insert = characters, even in cases where the original file didn't use them. They're syntactically important, though, so such changes can cause builds to fail. For ENV and LABEL instructions, just emit the original text.

Reported in openshift/origin#24151 [1]. Fixed by openshift/builder#134 [2]


Version-Release number of selected component (if applicable): 4.2.z


How reproducible: Always


Steps to Reproduce:

1. Create Docker fbuild from e.g.
   git url: https://github.com/sonatype/docker-nexus.git
   context dir: /oss
2. Start build

Actual results:

```
Cloning "https://github.com/sonatype/docker-nexus.git" ...
Commit: b892177cfb8b03d1d37a369b47ec57512051d67b (Update Repository Manager to 2.14.15-01.)
Author: Sonatype sonatype-ci@sonatype.com
Date: Tue Oct 15 13:50:45 2019 +0000
Caching blobs under "/var/cache/blobs".
error: build error: Syntax error - can't find = in "./conf/jetty-requestlog.xml". Must be of the form: name=value
```


Expected results:

Build succeeds


Additional info:

[1] https://github.com/openshift/origin/issues/24151
[2] https://github.com/openshift/builder/pull/134

Comment 3 wewang 2020-04-20 06:36:11 UTC
Verified in version:
4.4.0-0.nightly-2020-04-18-095545

STEP 17: ENV JAVA_OPTS -server -Djava.net.preferIPv4Stack=true
f53bb24a95edb80f540a39b24874d9a8fc016874bc6be8546b65fb36a40e8438
STEP 18: ENV LAUNCHER_CONF ./conf/jetty.xml ./conf/jetty-requestlog.xml
d07f2d4b8d3afb3dc32858b5b8a23f2699657da05aeb33a55aa52f9a4ba68b85
STEP 19: CMD java   -Dnexus-work=${SONATYPE_WORK} -Dnexus-webapp-context-path=${CONTEXT_PATH}   -Xms${MIN_HEAP} -Xmx${MAX_HEAP}   -cp 'conf/:lib/*'   ${JAVA_OPTS}   org.sonatype.nexus.bootstrap.Launcher ${LAUNCHER_CONF}
a72c275e1e8161ec0763bc3bdc250e230cde4d853e02003e541bd535e26b220b
STEP 20: ENV "OPENSHIFT_BUILD_NAME"="docker-nexus-1" "OPENSHIFT_BUILD_NAMESPACE"="wewang" "OPENSHIFT_BUILD_SOURCE"="https://github.com/sonatype/docker-nexus.git" "OPENSHIFT_BUILD_COMMIT"="863887b46ddb91b5fa8313e48b4678e3e4af293b"

Comment 5 errata-xmlrpc 2020-05-04 11:48:34 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2020:0581


Note You need to log in before you can comment on or make changes to this bug.