minimize file dependencies for bundle caching
refs DE-187 [change-merged] [build-registry-path=jenkins/canvas-lms-de-187-test] Test Plan: Ensure that the cache is used for bundle install when a gem changes and the build is run on a different node. Change-Id: I43f83338a25a0774030495904b75d0825abcc5bb Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/244748 QA-Review: Aaron Ogata <aogata@instructure.com> Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Ryan Norton <rnorton@instructure.com> Product-Review: Aaron Ogata <aogata@instructure.com>
This commit is contained in:
parent
e2aebb07cb
commit
8ffaf8d925
|
@ -4,6 +4,7 @@
|
|||
|
||||
ARG RUBY=2.6
|
||||
|
||||
|
||||
FROM instructure/passenger-nginx-alpine:${RUBY} AS dependencies
|
||||
LABEL maintainer="Instructure"
|
||||
|
||||
|
@ -22,7 +23,7 @@ WORKDIR $APP_HOME
|
|||
COPY --chown=docker:docker config/canvas_rails_switcher.rb ${APP_HOME}/config/canvas_rails_switcher.rb
|
||||
COPY --chown=docker:docker Gemfile ${APP_HOME}
|
||||
COPY --chown=docker:docker Gemfile.d ${APP_HOME}Gemfile.d
|
||||
COPY --chown=docker:docker gems ${APP_HOME}gems
|
||||
COPY --chown=docker:docker gems ${APP_HOME}gems
|
||||
ENV GEM_HOME /home/docker/.gem/$RUBY_VERSION
|
||||
ENV PATH $GEM_HOME/bin:$PATH
|
||||
ENV BUNDLE_APP_CONFIG /home/docker/.bundle
|
||||
|
|
|
@ -1,9 +1,20 @@
|
|||
# syntax = docker/dockerfile:1.0-experimental
|
||||
# GENERATED FILE, DO NOT MODIFY!
|
||||
# To update this file please edit the relevant template and run the generation
|
||||
# task `build/dockerfile_writer.rb --env development --compose-file docker-compose.yml,docker-compose.override.yml --in build/Dockerfile.template --out Dockerfile.jenkins`
|
||||
# task `build/dockerfile_writer.rb --env jenkins --compose-file docker-compose.yml,docker-compose.override.yml --in build/Dockerfile.template --out Dockerfile.jenkins`
|
||||
|
||||
ARG RUBY=2.6
|
||||
|
||||
FROM busybox AS cache-helper-collect-gems
|
||||
RUN mkdir -p /tmp/dst /tmp/dst
|
||||
WORKDIR /tmp/src
|
||||
RUN --mount=target=/tmp/src find gems -name "Gemfile" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "Gemfile.d" -exec cp -rf --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "Gemfile.lock" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "*.gemspec" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "gem_version.rb" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "version.rb" -exec cp --parents {} /tmp/dst \;
|
||||
|
||||
FROM instructure/passenger-nginx-alpine:${RUBY} AS dependencies
|
||||
LABEL maintainer="Instructure"
|
||||
|
||||
|
@ -22,7 +33,7 @@ WORKDIR $APP_HOME
|
|||
COPY --chown=docker:docker config/canvas_rails_switcher.rb ${APP_HOME}/config/canvas_rails_switcher.rb
|
||||
COPY --chown=docker:docker Gemfile ${APP_HOME}
|
||||
COPY --chown=docker:docker Gemfile.d ${APP_HOME}Gemfile.d
|
||||
COPY --chown=docker:docker gems ${APP_HOME}gems
|
||||
COPY --chown=docker:docker --from=cache-helper-collect-gems /tmp/dst ${APP_HOME}
|
||||
ENV GEM_HOME /home/docker/.gem/$RUBY_VERSION
|
||||
ENV PATH $GEM_HOME/bin:$PATH
|
||||
ENV BUNDLE_APP_CONFIG /home/docker/.bundle
|
||||
|
@ -121,6 +132,7 @@ RUN set -eux; \
|
|||
USER docker
|
||||
COPY --chown=docker:docker babel.config.js ${APP_HOME}
|
||||
COPY --chown=docker:docker build/new-jenkins ${APP_HOME}build/new-jenkins
|
||||
COPY --chown=docker:docker gems ${APP_HOME}gems
|
||||
COPY --chown=docker:docker package.json ${APP_HOME}
|
||||
COPY --chown=docker:docker packages ${APP_HOME}packages
|
||||
COPY --chown=docker:docker script ${APP_HOME}script
|
||||
|
|
|
@ -1,6 +1,21 @@
|
|||
<% if jenkins? -%>
|
||||
# syntax = docker/dockerfile:1.0-experimental
|
||||
<% end -%>
|
||||
<%= generation_message %>
|
||||
ARG RUBY=2.6
|
||||
|
||||
<% if jenkins? -%>
|
||||
FROM busybox AS cache-helper-collect-gems
|
||||
RUN mkdir -p /tmp/dst /tmp/dst
|
||||
WORKDIR /tmp/src
|
||||
RUN --mount=target=/tmp/src find gems -name "Gemfile" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "Gemfile.d" -exec cp -rf --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "Gemfile.lock" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "*.gemspec" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "gem_version.rb" -exec cp --parents {} /tmp/dst \;
|
||||
RUN --mount=target=/tmp/src find gems -name "version.rb" -exec cp --parents {} /tmp/dst \;
|
||||
<% end -%>
|
||||
|
||||
FROM instructure/passenger-nginx-alpine:${RUBY} AS dependencies
|
||||
LABEL maintainer="Instructure"
|
||||
|
||||
|
@ -19,7 +34,11 @@ WORKDIR $APP_HOME
|
|||
COPY --chown=docker:docker config/canvas_rails_switcher.rb ${APP_HOME}/config/canvas_rails_switcher.rb
|
||||
COPY --chown=docker:docker Gemfile ${APP_HOME}
|
||||
COPY --chown=docker:docker Gemfile.d ${APP_HOME}Gemfile.d
|
||||
COPY --chown=docker:docker gems ${APP_HOME}gems
|
||||
<% if jenkins? -%>
|
||||
COPY --chown=docker:docker --from=cache-helper-collect-gems /tmp/dst ${APP_HOME}
|
||||
<% else -%>
|
||||
COPY --chown=docker:docker gems ${APP_HOME}gems
|
||||
<% end -%>
|
||||
ENV GEM_HOME /home/docker/.gem/$RUBY_VERSION
|
||||
ENV PATH $GEM_HOME/bin:$PATH
|
||||
ENV BUNDLE_APP_CONFIG /home/docker/.bundle
|
||||
|
@ -118,6 +137,9 @@ RUN set -eux; \
|
|||
USER docker
|
||||
COPY --chown=docker:docker babel.config.js ${APP_HOME}
|
||||
COPY --chown=docker:docker build/new-jenkins ${APP_HOME}build/new-jenkins
|
||||
<% if jenkins? -%>
|
||||
COPY --chown=docker:docker gems ${APP_HOME}gems
|
||||
<% end -%>
|
||||
COPY --chown=docker:docker package.json ${APP_HOME}
|
||||
COPY --chown=docker:docker packages ${APP_HOME}packages
|
||||
COPY --chown=docker:docker script ${APP_HOME}script
|
||||
|
|
|
@ -38,6 +38,10 @@ class DockerfileWriter
|
|||
env == "development"
|
||||
end
|
||||
|
||||
def jenkins?
|
||||
env == "jenkins"
|
||||
end
|
||||
|
||||
def generation_message
|
||||
<<~STR
|
||||
# GENERATED FILE, DO NOT MODIFY!
|
||||
|
|
Loading…
Reference in New Issue