Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OCPBUGS-6634: Enable building tectonic-console-builder on arm64 and fix the Dockerfile.product to work with no cached artifacts #12444

Merged
merged 3 commits into from
Jan 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 66 additions & 11 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,77 @@
FROM quay.io/coreos/tectonic-console-builder:v24 AS build

##################################################
#
# go backend build
FROM registry.ci.openshift.org/ocp/builder:rhel-8-golang-1.19-openshift-4.13 AS gobuilder
RUN mkdir -p /go/src/github.com/openshift/console/
ADD . /go/src/github.com/openshift/console/
WORKDIR /go/src/github.com/openshift/console/
RUN ./build.sh
RUN ./build-backend.sh


##################################################
#
# nodejs frontend build
FROM registry.ci.openshift.org/ocp/builder:rhel-8-base-nodejs-openshift-4.13 AS nodebuilder

ADD . .

USER 0

ARG YARN_VERSION=v1.22.19

# bootstrap yarn so we can install and run the other tools.
RUN CACHED_YARN=./artifacts/yarn-${YARN_VERSION}.tar.gz; \
if [ -f ${CACHED_YARN} ]; then \
npm install ${CACHED_YARN}; \
else \
npm install https://github.com/yarnpkg/yarn/releases/download/${YARN_VERSION}/yarn-${YARN_VERSION}.tar.gz; \
fi

FROM openshift/origin-base
# The REMOTE_SOURCES value is set by the build system to indicate the location of the cachito-backed artifacts cache.
# As cachito might not be available in all environments, we need to make sure the value is set before trying to use it and
# that the COPY layer below doesn't fail. Setting it to be the Dockerfile itself is fairly safe, as it will always be
# available.
ARG REMOTE_SOURCES=./Dockerfile.product
ARG REMOTE_SOURCE_DIR=/tmp/remote-sources

COPY --from=build /go/src/github.com/openshift/console/frontend/public/dist /opt/bridge/static
COPY --from=build /go/src/github.com/openshift/console/bin/bridge /opt/bridge/bin/bridge
COPY --from=build /go/src/github.com/openshift/console/pkg/graphql/schema.graphql /pkg/graphql/schema.graphql
COPY $REMOTE_SOURCES $REMOTE_SOURCES_DIR

LABEL io.k8s.display-name="OpenShift Console" \
io.k8s.description="This is a component of OpenShift Container Platform and provides a web console." \
io.openshift.tags="openshift" \
maintainer="Samuel Padgett <[email protected]>"
# use dependencies provided by Cachito
RUN test -d ${REMOTE_SOURCES}/cachito-gomod-with-deps || exit 0; \
cp -f $REMOTE_SOURCES_DIR/cachito-gomod-with-deps/app/registry-ca.pem . \
&& cp -f $REMOTE_SOURCES_DIR/cachito-gomod-with-deps/app/frontend/{.npmrc,.yarnrc,yarn.lock} frontend/

# prevent download of chromedriver, geckodriver, and the cypress binary as part of module installs
ENV CHROMEDRIVER_SKIP_DOWNLOAD=true \
GECKODRIVER_SKIP_DOWNLOAD=true \
CYPRESS_INSTALL_BINARY=0

# run the build
RUN container-entrypoint ./build-frontend.sh


##################################################
#
# actual base image for final product
FROM registry.ci.openshift.org/ocp/4.13:base
RUN mkdir -p /opt/bridge/bin
COPY --from=gobuilder /go/src/github.com/openshift/console/bin/bridge /opt/bridge/bin
COPY --from=nodebuilder /opt/app-root/src/frontend/public/dist /opt/bridge/static
COPY --from=gobuilder /go/src/github.com/openshift/console/pkg/graphql/schema.graphql /pkg/graphql/schema.graphql

WORKDIR /
# doesn't require a root user.
USER 1001

CMD [ "/opt/bridge/bin/bridge", "--public-dir=/opt/bridge/static" ]

LABEL \
io.k8s.description="This is a component of OpenShift Container Platform and provides a web console." \
com.redhat.component="openshift-enterprise-console-container" \
maintainer="Samuel Padgett <[email protected]>" \
name="openshift3/ose-console" \
License="Apache 2.0" \
io.k8s.display-name="OpenShift Console" \
vendor="Red Hat" \
io.openshift.tags="openshift,console"

8 changes: 5 additions & 3 deletions Dockerfile.builder
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,13 @@ RUN apt-get update \
libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
# ^^ additional Cypress dependencies: https://docs.cypress.io/guides/guides/continuous-integration.html#Dependencies

RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.4/bin/linux/amd64/kubectl && \
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.4/bin/linux/$(go env GOARCH)/kubectl && \
chmod +x ./kubectl && \
mv ./kubectl /usr/local/bin/kubectl

RUN cd /tmp && \
wget --quiet -O /tmp/node.tar.gz http://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz && \
wget --quiet -O /tmp/node.tar.gz \
"http://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-$(go env GOARCH | sed 's/amd64/x64/').tar.gz" && \
tar xf node.tar.gz && \
rm -f /tmp/node.tar.gz && \
cd node-* && \
Expand All @@ -55,7 +56,8 @@ RUN cd /tmp && \
ln -s /usr/local/yarn/bin/yarn /usr/local/bin/yarn

# Install Chrome for installer gui tests
RUN wget --quiet -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
RUN test "$(go env GOARCH)" = amd64 || exit 0; \
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can the test suite use chromium and provide reliable test results? We could install it at least for non-amd64 images.

wget --quiet -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' && \
apt-get update && \
apt-get install --no-install-recommends -y -q \
Expand Down
62 changes: 0 additions & 62 deletions Dockerfile.product

This file was deleted.

1 change: 1 addition & 0 deletions Dockerfile.product