Files
photos/.circleci/config.yml

182 lines
5.8 KiB
YAML

version: 2
jobs:
test-backend:
docker:
- image: cimg/node:14.20
- image: cimg/mariadb:10.8
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
MYSQL_DATABASE: photos_test
MYSQL_USER: photos
MYSQL_PASSWORD: photos
MYSQL_HOST: "localhost"
working_directory: ~/photos
steps:
# The checkout is INTO the working directory!!!
- checkout
- restore_cache:
keys:
- backend-dependencies-{{ checksum "backend/package.json" }}
- run:
name: install backend deps
command: cd backend && npm i
- save_cache:
paths:
- backend/node_modules
key: backend-dependencies-{{ checksum "backend/package.json" }}
- run:
name: test backend
command: cd backend && npm test
- store_test_results:
path: ~/photos/backend/backend-report.xml
test-frontend:
docker:
- image: cimg/node:14.20
working_directory: ~/photos
steps:
# The checkout is INTO the working directory!!!
- checkout
- restore_cache:
keys:
- frontend-dependencies-{{ checksum "frontend/package.json" }}
- run:
name: install frontend deps
command: cd frontend && npm i
- save_cache:
paths:
- frontend/node_modules
key: frontend-dependencies-{{ checksum "frontend/package.json" }}
- run:
name: test frontend
command: cd frontend && npm test
- store_test_results:
path: ~/photos/frontend/frontend-reports/frontend-report.xml
test-frontend-build:
docker:
- image: cimg/node:14.20
working_directory: ~/photos
steps:
# The checkout is INTO the working directory!!!
- checkout:
- restore_cache:
keys:
- frontend-dependencies-{{ checksum "frontend/package.json" }}
- run:
name: install frontend deps
command: cd frontend && npm i
- save_cache:
paths:
- frontend/node_modules
key: frontend-dependencies-{{ checksum "frontend/package.json" }}
- run:
name: build frontend
command: cd frontend && npm run build
build:
machine:
image: ubuntu-2004:current
working_directory: ~/photos
resource_class: large
steps:
# The checkout is INTO the working directory!!!
- checkout
- run:
name: log in to docker hub
command: echo "$DOCKER_PASSWORD" | docker login --username $DOCKER_USERNAME --password-stdin
- run:
name: install emulators
command: docker run --privileged --rm tonistiigi/binfmt --install all
- run:
name: create docker builder
command: docker buildx create --use --driver=docker-container
- restore_cache:
keys:
- buildx-photos-circleci-
- run:
name: build and push to docker hub
command: |
docker buildx build --progress=plain --push --platform linux/arm64,linux/amd64 --tag stepanusatiuk/photos:$CIRCLE_BRANCH \
--cache-to=type=local,mode=max,dest=/tmp/dockercache \
--cache-from=type=local,src=/tmp/dockercache .
- run:
name: prune cache
command: docker buildx prune --keep-storage=4gb --verbose
- save_cache:
key: buildx-photos-circleci-{{ checksum "/tmp/dockercache/index.json" }}
paths:
- /tmp/dockercache
# build-arm:
# machine:
# image: ubuntu-2004:current
# resource_class: arm.medium
# working_directory: ~/photos
#
# steps:
# - checkout
# - run:
# name: log in to docker hub
# command: echo "$DOCKER_PASSWORD" | docker login --username $DOCKER_USERNAME --password-stdin
#
# - run:
# name: install emulators
# command: docker run --privileged --rm tonistiigi/binfmt --install all
#
# - run:
# name: create docker builder
# command: docker buildx create --use
#
# - run:
# name: build and push to docker hub
# #command: docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag stepanusatiuk/photos:latest .
# command: docker buildx build --push --platform linux/arm64 --tag stepanusatiuk/photos:$CIRCLE_BRANCH .
workflows:
version: 2
test-build:
jobs:
- test-backend
- test-frontend
- test-frontend-build:
requires:
- test-frontend
- build:
requires:
- test-backend
- test-frontend
- test-frontend-build
filters:
branches:
only: main
# - build-arm:
# requires:
# - test-backend
# - test-frontend
# - test-frontend-build