94 lines
2.1 KiB
YAML
94 lines
2.1 KiB
YAML
version: 2.1
|
|
|
|
commands:
|
|
install_dependencies:
|
|
description: "Installs dependencies and uses CircleCI's cache"
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
keys:
|
|
- dependencies-{{ checksum "yarn.lock" }}
|
|
- dependencies-
|
|
- run:
|
|
command: |
|
|
yarn install
|
|
- save_cache:
|
|
paths:
|
|
- node_modules
|
|
key: dependencies-{{ checksum "yarn.lock" }}
|
|
|
|
jobs:
|
|
style:
|
|
docker:
|
|
- image: node:latest
|
|
steps:
|
|
- install_dependencies
|
|
- run:
|
|
name: prettier
|
|
command: |
|
|
yarn prettier --check
|
|
- run:
|
|
name: lint
|
|
command: |
|
|
yarn lint
|
|
|
|
dashboard:
|
|
docker:
|
|
- image: node:latest
|
|
steps:
|
|
- install_dependencies
|
|
- run:
|
|
name: typecheck
|
|
command: |
|
|
yarn typecheck
|
|
- run:
|
|
name: test
|
|
command: |
|
|
yarn test --coverage
|
|
- run:
|
|
name: coverage
|
|
command: |
|
|
yarn coverage
|
|
|
|
build:
|
|
docker:
|
|
- image: docker:latest
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker:
|
|
version: 20.10.7
|
|
- run:
|
|
name: Load Docker image layer cache
|
|
command: |
|
|
set +o pipefail
|
|
docker load -i /caches/app.tar | true
|
|
- run:
|
|
name: Build application Docker image
|
|
command: |
|
|
docker build --cache-from=app -t app .
|
|
- run:
|
|
name: Save Docker image layer cache
|
|
command: |
|
|
mkdir -p /caches
|
|
docker save -o /caches/app.tar app
|
|
- save_cache:
|
|
key: v1-{{ .Branch }}-{{ epoch }}
|
|
paths:
|
|
- /caches/app.tar
|
|
- deploy:
|
|
name: Push application Docker image
|
|
command: |
|
|
docker login --username ${DOCKER_USER} --password ${DOCKER_PASSWORD}
|
|
docker tag app phntxx/dashboard:latest
|
|
docker push phntxx/dashboard:latest
|
|
|
|
workflows:
|
|
version: 2
|
|
dashboard:
|
|
jobs:
|
|
- style
|
|
- dashboard
|
|
- build:
|
|
requires:
|
|
- style
|
|
- dashboard
|