Farmbot-Web-App/.circleci/config.yml

140 lines
4.2 KiB
YAML
Raw Normal View History

2020-01-24 10:10:46 -07:00
version: 2.1
executors:
build-executor:
2019-02-15 16:46:27 -07:00
machine: true
2020-01-24 10:10:46 -07:00
working_directory: /home/circleci/project
commands:
build-commands:
2018-10-08 13:06:10 -06:00
steps:
2018-10-08 13:23:43 -06:00
- checkout
2020-01-24 10:10:46 -07:00
- restore_cache:
keys:
- cache-v1-{{ .Revision }}-{{ .Environment.CIRCLE_WORKFLOW_ID }}
- run:
name: After cache restore
command: |
git clean -xdn
mkdir -p docker_cache
ls docker_cache
#sudo docker images
#if [ -f docker_cache/images.tar.gz ]; then gunzip -c docker_cache/images.tar.gz | sudo docker load; fi
2018-10-08 13:23:43 -06:00
- run:
2019-06-25 14:04:50 -06:00
name: Build and Install Deps
2018-10-08 13:23:43 -06:00
command: |
2019-06-25 13:35:06 -06:00
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2018-10-14 14:51:18 -06:00
mv .circleci/circle_envs .env
2019-12-11 10:55:15 -07:00
echo -e '\ndocker_volumes/db/pg_wal/*' >> .dockerignore
2020-01-07 09:12:26 -07:00
sudo docker-compose run web gem install bundler
2018-10-08 13:23:43 -06:00
sudo docker-compose run web bundle install
sudo docker-compose run web npm install
2018-10-15 18:31:14 -06:00
sudo docker-compose run web bundle exec rails db:create
2018-10-15 18:20:00 -06:00
sudo docker-compose run web bundle exec rails db:migrate
2018-10-08 13:23:43 -06:00
sudo docker-compose run web rake keys:generate
2020-01-24 10:10:46 -07:00
- run:
name: After cache update
command: |
git clean -xdn
ls docker_cache
#sudo docker images
#if [ ! -f docker_cache/images.tar.gz ]; then sudo docker save $(sudo docker images ruby -q) | gzip > docker_cache/images.tar.gz; fi
- save_cache:
key: cache-v1-{{ .Revision }}-{{ .Environment.CIRCLE_WORKFLOW_ID }}
paths:
- docker_volumes
- node_modules
- docker_cache
rspec-commands:
steps:
2018-10-16 14:19:27 -06:00
- run:
2019-06-25 14:04:50 -06:00
name: Run Ruby Tests
2018-10-16 14:19:27 -06:00
command: |
2020-01-24 10:10:46 -07:00
sudo docker-compose run web rspec spec --format progress --format RspecJunitFormatter --out test-results/rspec/rspec.xml
jest-commands:
steps:
- run:
name: Run JS tests
command: |
sudo docker-compose run web npm run test-very-slow -- -c .circleci/jest-ci.config.js
2020-01-28 12:34:38 -07:00
echo 'export COVERAGE_AVAILABLE=true' >> $BASH_ENV
2020-01-24 10:10:46 -07:00
lint-commands:
steps:
2018-10-16 14:19:27 -06:00
- run:
2019-06-25 14:04:50 -06:00
name: Run JS Linters
2018-10-16 14:19:27 -06:00
command: |
2019-03-01 13:12:34 -07:00
sudo docker-compose run web npm run linters
2020-01-24 10:10:46 -07:00
when: always
coverage-commands:
steps:
2018-10-16 14:19:27 -06:00
- run:
2020-01-24 10:10:46 -07:00
name: Check coverage status
2018-10-16 14:19:27 -06:00
command: |
2019-06-26 13:36:34 -06:00
sudo docker-compose run -e CIRCLE_SHA1="$CIRCLE_SHA1" -e CIRCLE_BRANCH="$CIRCLE_BRANCH" -e CIRCLE_PULL_REQUEST="$CIRCLE_PULL_REQUEST" web rake coverage:run
2020-01-24 10:10:46 -07:00
when: always
2019-02-27 10:56:29 -07:00
- run:
name: Report coverage to Coveralls
command: |
2020-01-28 12:34:38 -07:00
if [ "$COVERAGE_AVAILABLE" ]
2019-02-27 10:56:29 -07:00
then
2019-03-01 13:12:34 -07:00
sudo docker-compose run -e COVERALLS_REPO_TOKEN=lEX6nkql7y2YFCcIXVq5ORvdvMtYzfZdG web npm run coverage
2019-02-27 10:56:29 -07:00
fi
when: always # change to `on_success` for a stricter comparison
2020-01-24 10:10:46 -07:00
workflows:
version: 2
build_and_test:
jobs:
#- build
- all
#- test-api:
# requires:
# - build
#- run-linters:
# requires:
# - build
#- test-fe:
# requires:
# - build
jobs:
build:
executor: build-executor
steps:
- build-commands
all:
executor: build-executor
steps:
- build-commands
- rspec-commands
- lint-commands
- jest-commands
- store_test_results:
path: test-results
- coverage-commands
test-api:
executor: build-executor
steps:
- build-commands
- rspec-commands
- store_test_results:
path: test-results
run-linters:
executor: build-executor
steps:
- build-commands
- lint-commands
test-fe:
executor: build-executor
parallelism: 4
steps:
- build-commands
- run:
name: Run JS Tests
command: |
circleci tests glob **/__tests__/**/*.ts* | circleci tests split > /tmp/tests-to-run
sudo docker-compose run web npm run test-very-slow -- -c .circleci/jest-ci.config.js $(cat /tmp/tests-to-run)
- store_test_results:
path: test-results