Parallelize builds and use caches better.
This commit is contained in:
parent
c52e0c9821
commit
90eae25070
|
@ -1,6 +1,6 @@
|
|||
version: 2.1
|
||||
jobs:
|
||||
build:
|
||||
build-server-builder:
|
||||
working_directory: ~/rookeries_ci
|
||||
docker:
|
||||
- image: dorianpula/circleci-test:2.0.0
|
||||
|
@ -9,48 +9,119 @@ jobs:
|
|||
- checkout
|
||||
- setup_remote_docker
|
||||
|
||||
# Enable caching: https://circleci.com/blog/how-to-build-a-docker-image-on-circleci-2-0/
|
||||
- restore_cache:
|
||||
keys:
|
||||
- v1-{{ arch }}-{{ .Branch }}
|
||||
- v1-{{ arch }}-{{ .Branch }}-server
|
||||
paths:
|
||||
- /caches/rookeries-app.tar
|
||||
- /caches/rookeries-server-build.tar
|
||||
|
||||
- run:
|
||||
name: Load Docker cache
|
||||
command: |
|
||||
set +o pipefail
|
||||
docker load --input /caches/rookeries-server-build.tar | true
|
||||
|
||||
- run:
|
||||
name: Build image
|
||||
command: |
|
||||
docker-compose build server-rust
|
||||
|
||||
- run:
|
||||
name: Save Docker cache
|
||||
command: |
|
||||
mkdir -p /caches
|
||||
docker save --output /caches/rookeries-server-build.tar dorianpula/rookeries-build:server
|
||||
|
||||
- save_cache:
|
||||
key: v1-{{ arch }}-{{ .Branch }}-{{ epoch }}-server
|
||||
paths:
|
||||
- /caches/rookeries-server-build.tar
|
||||
|
||||
- deploy:
|
||||
name: Upload Build Images to Docker Hub
|
||||
command: |
|
||||
docker login -u ${DOCKER_USER} -p ${DOCKER_PASS}
|
||||
docker-compose push server-build\
|
||||
|
||||
build-app-builder:
|
||||
working_directory: ~/rookeries_ci
|
||||
docker:
|
||||
- image: dorianpula/circleci-test:2.0.0
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
- setup_remote_docker
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- v1-{{ arch }}-{{ .Branch }}-ui
|
||||
paths:
|
||||
- /caches/rookeries-ui-build.tar
|
||||
|
||||
- run:
|
||||
name: Load Docker image layer cache
|
||||
name: Load Docker cache
|
||||
command: |
|
||||
set +o pipefail
|
||||
docker load --input /caches/rookeries-app.tar | true
|
||||
docker load --input /caches/rookeries-server-build.tar | true
|
||||
docker load --input /caches/rookeries-ui-build.tar | true
|
||||
|
||||
- run:
|
||||
name: Build Rookeries Docker image
|
||||
name: Build app-builder image
|
||||
command: |
|
||||
cargo make docker-build
|
||||
docker-compose build app-build
|
||||
|
||||
- run:
|
||||
name: Save Docker image layer cache
|
||||
name: Save Docker cache
|
||||
command: |
|
||||
mkdir -p /caches
|
||||
docker save --output /caches/rookeries-app.tar dorianpula/rookeries:latest
|
||||
docker save --output /caches/rookeries-server-build.tar dorianpula/rookeries-build:server
|
||||
docker save --output /caches/rookeries-ui-build.tar dorianpula/rookeries-build:app
|
||||
|
||||
- save_cache:
|
||||
key: v1-{{ arch }}-{{ .Branch }}-{{ epoch }}
|
||||
key: v1-{{ arch }}-{{ .Branch }}-{{ epoch }}-ui
|
||||
paths:
|
||||
- /caches/rookeries-app.tar
|
||||
- /caches/rookeries-server-build.tar
|
||||
- /caches/rookeries-ui-build.tar
|
||||
|
||||
- deploy:
|
||||
name: Upload Build Images to Docker Hub
|
||||
command: |
|
||||
docker login -u ${DOCKER_USER} -p ${DOCKER_PASS}
|
||||
docker-compose push server-build app-build
|
||||
docker-compose push app-build
|
||||
|
||||
build-rookeries:
|
||||
working_directory: ~/rookeries_ci
|
||||
docker:
|
||||
- image: dorianpula/circleci-test:2.0.0
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
- setup_remote_docker
|
||||
|
||||
- restore_cache:
|
||||
keys:
|
||||
- v1-{{ arch }}-{{ .Branch }}
|
||||
paths:
|
||||
- /caches/rookeries-app.tar
|
||||
|
||||
- run:
|
||||
name: Load Docker image layer cache
|
||||
command: |
|
||||
set +o pipefail
|
||||
docker load --input /caches/rookeries-app.tar | true
|
||||
|
||||
- run:
|
||||
name: Build Rookeries image
|
||||
command: |
|
||||
docker-compose build rookeries
|
||||
|
||||
- run:
|
||||
name: Save Docker image layer cache
|
||||
command: |
|
||||
mkdir -p /caches
|
||||
docker save --output /caches/rookeries-app.tar dorianpula/rookeries:latest
|
||||
|
||||
- save_cache:
|
||||
key: v1-{{ arch }}-{{ .Branch }}-{{ epoch }}
|
||||
paths:
|
||||
- /caches/rookeries-app.tar
|
||||
|
||||
test-server:
|
||||
working_directory: ~/rookeries_ci
|
||||
|
@ -100,13 +171,18 @@ workflows:
|
|||
version: 2
|
||||
build-test-push:
|
||||
jobs:
|
||||
- build
|
||||
- build-server-builder
|
||||
- build-app-builder
|
||||
- build-rookeries:
|
||||
requires:
|
||||
- build-app-builder
|
||||
- builder-server-builder
|
||||
- test-server:
|
||||
requires:
|
||||
- build
|
||||
- build-rookeries
|
||||
- test-app:
|
||||
requires:
|
||||
- build
|
||||
- build-rookeries
|
||||
# TODO: Enable once issues resolved with builds.
|
||||
# - test-plugins:
|
||||
# requires:
|
||||
|
|
|
@ -7,6 +7,8 @@ services:
|
|||
target: final
|
||||
cache_from:
|
||||
- dorianpula/rookeries:latest
|
||||
- dorianpula/rookeries-build:app
|
||||
- dorianpula/rookeries-build:server
|
||||
image: dorianpula/rookeries:latest
|
||||
env_file: docker.env
|
||||
depends_on:
|
||||
|
@ -31,6 +33,7 @@ services:
|
|||
target: node_build
|
||||
cache_from:
|
||||
- dorianpula/rookeries-build:app
|
||||
- dorianpula/rookeries-build:server
|
||||
image: dorianpula/rookeries-build:app
|
||||
env_file: docker.env
|
||||
depends_on:
|
||||
|
|
Loading…
Reference in New Issue