diff --git a/Dockerfile b/Dockerfile index 9e528fa2bf..39db9352c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,17 @@ -# syntax = docker/dockerfile:1.5.2 - +# syntax = docker/dockerfile:1.8.1 FROM phusion/passenger-customizable:1.0.19 AS base -RUN mv /etc/apt/sources.list.d /etc/apt/sources.list.d.bak && \ +RUN --mount=type=cache,id=playbook-apt-cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=playbook-apt-lib,target=/var/lib/apt,sharing=locked \ + apt-get update -y && \ + mv /etc/apt/sources.list.d /etc/apt/sources.list.d.bak && \ apt update && apt install -y ca-certificates && \ mv /etc/apt/sources.list.d.bak /etc/apt/sources.list.d RUN bash -lc 'rvm remove all --force && rvm install ruby-3.3.0 && rvm --default use ruby-3.3.0 && gem install bundler -v 2.5.3' -RUN /pd_build/ruby_support/install_ruby_utils.sh +RUN --mount=type=cache,id=playbook-apt-cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=playbook-apt-lib,target=/var/lib/apt,sharing=locked \ + /pd_build/ruby_support/install_ruby_utils.sh RUN /pd_build/ruby_support/finalize.sh ENV BUNDLE_TO /usr/local/rvm/gems @@ -26,10 +30,9 @@ RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/$NVM_VERSION/insta && nvm use default \ && npm install -g npm@$NPM_VERSION yarn@$YARN_VERSION -RUN apt-get update -y \ - && apt-get install -y shared-mime-info=1.15-1\ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* +RUN --mount=type=cache,id=playbook-apt-cache,target=/var/cache/apt,sharing=locked \ + --mount=type=cache,id=playbook-apt-lib,target=/var/lib/apt,sharing=locked \apt-get update -y \ + && apt-get install -y shared-mime-info=1.15-1 RUN bundle config --global silence_root_warning 1 @@ -55,7 +58,8 @@ FROM base as rubydeps # Bundle website COPY --link --chown=9999:9999 --from=rubypackages /home/app/src /home/app/src COPY --link --chown=9999:9999 playbook/lib/playbook /home/app/src/playbook/lib/playbook -RUN cd playbook-website && bundle install +RUN --mount=type=cache,id=playbook-bundler-gem-cache,uid=9999,gid=9999,target=/home/app/.bundle/cache \ + cd playbook-website && bundle install FROM base as jsdeps @@ -64,15 +68,17 @@ COPY --link .yarn ./.yarn COPY --link --chown=9999:9999 --from=jspackages /home/app/src /home/app/src # Build Library -RUN --mount=id=yarncache,type=cache,target=/home/app/.cache/yarn,uid=9999,gid=9999,sharing=locked \ +RUN --mount=id=playbook-yarncache,type=cache,target=/home/app/.cache/yarn,uid=9999,gid=9999,sharing=locked \ yarn install --frozen-lockfile FROM jsdeps AS release COPY --from=rubydeps --link $BUNDLE_TO $BUNDLE_TO COPY --link --chown=9999:9999 playbook /home/app/src/playbook COPY --link --chown=9999:9999 playbook-website /home/app/src/playbook-website -RUN cd playbook; NODE_OPTIONS=$NODE_OPTIONS yarn release -RUN cd playbook-website; NODE_OPTIONS=$NODE_OPTIONS yarn release +RUN --mount=id=playbook-yarncache,type=cache,target=/home/app/.cache/yarn,uid=9999,gid=9999,sharing=locked \ + cd playbook; NODE_OPTIONS=$NODE_OPTIONS yarn release +RUN --mount=id=playbook-yarncache,type=cache,target=/home/app/.cache/yarn,uid=9999,gid=9999,sharing=locked \ + cd playbook-website; NODE_OPTIONS=$NODE_OPTIONS yarn release FROM base AS prod COPY --from=rubydeps --link $BUNDLE_TO $BUNDLE_TO diff --git a/Jenkinsfile b/Jenkinsfile index e4e992b67f..ef6a43f40c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,6 @@ #!/usr/bin/env groovy -library 'github.com/powerhome/ci-kubed@v6.10.1' +library 'github.com/powerhome/ci-kubed@v8.2.0' app.build( resources: [ @@ -12,15 +12,14 @@ app.build( ) { app.composeBuild( appRepo: "image-registry.powerapp.cloud/playbook/playbook", - files: ["docker-compose.yml", "docker-compose.ci.yml"], - bakeFiles: ['docker-bake.hcl'] + files: ["docker-compose.yml", "docker-compose.ci.yml"] ) { compose -> stage('Image Build') { - compose.bake() + compose.bake(bakeFiles: ['docker-bake.hcl']) } stage('Test') { - compose.command "run --workdir /home/app/src/playbook web ./test.sh" + shell "docker compose run --workdir /home/app/src/playbook web ./test.sh" } } }