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