feat: Cache intermediate docker images
This commit is contained in:
parent
cda4080b2d
commit
3b016bb0ee
4 changed files with 48 additions and 10 deletions
|
@ -36,15 +36,9 @@ build_image_for_commit:
|
|||
services:
|
||||
- name: docker:20.10-dind
|
||||
before_script:
|
||||
- docker login "https://${CI_REGISTRY}" -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
|
||||
- docker pull $CI_REGISTRY_IMAGE:latest || true
|
||||
- script/ci-docker-prebuild
|
||||
script:
|
||||
# This enables fast parallel builds
|
||||
- export DOCKER_BUILDKIT=1
|
||||
- docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
|
||||
# Push the commit SHA tagged version to registry. We will later choose to tag that as stable
|
||||
# if everything passes.
|
||||
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
|
||||
- script/ci-docker-build
|
||||
|
||||
# If tests pass, tag the commit and update package versions
|
||||
deploy_to_tags:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FROM elixir:1.10.4-alpine AS elixir1
|
||||
FROM elixir:1.10.4-alpine AS elixir-builder
|
||||
|
||||
RUN mix local.hex --force \
|
||||
&& mix local.rebar --force
|
||||
|
@ -37,7 +37,7 @@ COPY --from=0 /root/app/ /root/app/
|
|||
RUN npm install
|
||||
RUN npm run deploy
|
||||
|
||||
FROM elixir1
|
||||
FROM elixir-builder
|
||||
|
||||
RUN mix deps.compile
|
||||
|
||||
|
|
27
script/ci-docker-build
Executable file
27
script/ci-docker-build
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/sh
|
||||
|
||||
export DOCKER_BUILDKIT=1
|
||||
|
||||
docker build \
|
||||
--target elixir-builder \
|
||||
--cache-from $CI_REGISTRY_IMAGE:$PARENT_COMMIT-elixir-builder \
|
||||
--cache-from $CI_REGISTRY_IMAGE:latest-elixir-builder \
|
||||
-t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-elixir-builder .
|
||||
|
||||
docker build \
|
||||
--target asset-builder \
|
||||
--cache-from $CI_REGISTRY_IMAGE:$PARENT_COMMIT-asset-builder \
|
||||
--cache-from $CI_REGISTRY_IMAGE:latest-asset-builder \
|
||||
-t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-asset-builder .
|
||||
|
||||
docker build \
|
||||
--target asset-builder \
|
||||
--cache-from $CI_REGISTRY_IMAGE:$PARENT_COMMIT \
|
||||
--cache-from $CI_REGISTRY_IMAGE:latest \
|
||||
-t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
|
||||
|
||||
# Push the commit SHA tagged version to registry. We will later choose to tag that as stable
|
||||
# if everything passes.
|
||||
docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-elixir-builder
|
||||
docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-asset-builder
|
||||
docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
|
17
script/ci-docker-prebuild
Executable file
17
script/ci-docker-prebuild
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
|
||||
PARENT_COMMIT=`git rev-list --parents -n 1 HEAD | cut -d' ' -f2`
|
||||
|
||||
docker login "https://${CI_REGISTRY}" -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
|
||||
|
||||
docker pull $CI_REGISTRY_IMAGE:$PARENT_COMMIT-elixir-builder || \
|
||||
docker pull $CI_REGISTRY_IMAGE:latest-elixir-builder || \
|
||||
true
|
||||
|
||||
docker pull $CI_REGISTRY_IMAGE:$PARENT_COMMIT-asset-builder || \
|
||||
docker pull $CI_REGISTRY_IMAGE:latest-asset-builder || \
|
||||
true
|
||||
|
||||
docker pull $CI_REGISTRY_IMAGE:$PARENT_COMMIT || \
|
||||
docker pull $CI_REGISTRY_IMAGE:latest || \
|
||||
true
|
Loading…
Reference in a new issue