.circleci/config.yml
version: 2.1
orbs:
ruby: circleci/ruby@2.1.0
node: circleci/node@5.1.0
references:
default_ruby_version: &default_ruby_version 3.2.2-browsers
default_postgres_version: &default_postgres_version '11.13'
ruby_envs: &ruby_envs
environment:
BUNDLE_JOBS: 3
BUNDLE_RETRY: 3
PGHOST: 127.0.0.1
PGPASSWORD: sekret
postgres_envs: &postgres_envs
name: db
environment:
POSTGRES_DB: dor-services-app
POSTGRES_PASSWORD: sekret
executors:
default:
parameters:
ruby_tag:
description: 'The `cimg/ruby` Docker image version tag.'
type: string
default: *default_ruby_version
docker:
- image: cimg/ruby:<< parameters.ruby_tag >>
<<: *ruby_envs
ruby_with_all_deps:
parameters:
ruby_tag:
description: 'The `cimg/ruby` Docker image version tag.'
type: string
default: *default_ruby_version
postgres_tag:
description: 'The `cimg/postgres` Docker image version tag.'
type: string
default: *default_postgres_version
docker:
- image: cimg/ruby:<< parameters.ruby_tag >>
<<: *ruby_envs
- image: cimg/postgres:<< parameters.postgres_tag >>
<<: *postgres_envs
- image: suldlss/dor-services-app:latest
name: dor-services-app
environment:
DATABASE_NAME: dor-services-app
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: sekret
DATABASE_HOSTNAME: db
DATABASE_PORT: 5432
SECRET_KEY_BASE: 769171f88c527d564fb65b4b7ef712d5ae9761a21e26a41cd7c88eb0af89c74f857b9be4089119f71cf806dfc8bf9d9d2f0df91c00b119c96f462b46ebf43b0f
SOLR_URL: http://solr:8983/solr/argo
SETTINGS__DOR_INDEXING__URL: http://dor-indexing-app:3000/dor
SETTINGS__SOLR__URL: http://solr:8983/solr/argo
SETTINGS__SURI__URL: http://suri:3000
SETTINGS__WORKFLOW_URL: http://workflow:3000
SETTINGS__ENABLED_FEATURES__CREATE_UR_ADMIN_POLICY: 'true'
SETTINGS__VERSION_SERVICE__SYNC_WITH_PRESERVATION: 'false'
SETTINGS__RABBITMQ__ENABLED: 'false'
SETTINGS__REDIS_URL: redis://redis:6379/
- image: suldlss/sdr-api:latest
name: sdr-api
environment:
DATABASE_NAME: sdr
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: sekret
DATABASE_HOSTNAME: db
DATABASE_PORT: 5432
SECRET_KEY_BASE: 769171f88c527d564fb65b4b7ef712d5ae9761a21e26a41cd7c88eb0af89c74f857b9be4089119f71cf806dfc8bf9d9d2f0df91c00b119c96f462b46ebf43b0f
USER_EMAIL: argo@dlss.sul.stanford.edu
USER_PASSWORD: notusedanywhere
RAILS_LOG_TO_STDOUT: 'true'
SETTINGS__WORKFLOW__URL: http://workflow:3000
SETTINGS__DOR_SERVICES__URL: http://dor-services-app:3000/
# To generate the token: docker-compose run dor-services-app rake generate_token
SETTINGS__DOR_SERVICES__TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJGb28ifQ.-BVfLTW9Q1_ZQEsGv4tuzGLs5rESN7LgdtEwUltnKv4
- image: suldlss/suri-rails:latest
name: suri
environment:
DATABASE_NAME: suri
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: sekret
DATABASE_HOSTNAME: db
DATABASE_PORT: 5432
- image: suldlss/technical-metadata-service:latest
name: techmd
environment:
DATABASE_NAME: technical_metadata
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: sekret
DATABASE_HOSTNAME: db
DATABASE_PORT: 5432
RAILS_LOG_TO_STDOUT: 'true'
REDIS_URL: redis://redis:6379/
- image: suldlss/workflow-server:latest
name: workflow
environment:
RAILS_LOG_TO_STDOUT: true
DATABASE_NAME: workflow-server
DATABASE_USERNAME: postgres
DATABASE_PASSWORD: sekret
DATABASE_HOSTNAME: db
DATABASE_PORT: 5432
SETTINGS__DOR_SERVICES__URL: http://dor-services-app:3000
SETTINGS__DOR_SERVICES__TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJGb28ifQ.-BVfLTW9Q1_ZQEsGv4tuzGLs5rESN7LgdtEwUltnKv4
SETTINGS__ENABLE_STOMP: false
SETTINGS__REDIS__HOSTNAME: redis
- image: cimg/redis:6.2
name: redis
workflows:
test:
jobs:
- test
- lint
- erblint
- lint_js
jobs:
lint:
executor: default
steps:
- checkout
- ruby/install-deps:
key: gems-v2
- ruby/rubocop-check
erblint:
executor: default
steps:
- checkout
- ruby/install-deps:
key: gems-v2
- run:
name: Lint ERBs
command: bundle exec erblint --lint-all --format compact
lint_js:
executor: default
steps:
- checkout
- node/install-packages:
pkg-manager: yarn
- run:
name: Lint JavaScript
command: yarn run lint
test:
environment:
TZ: 'America/Los_Angeles'
CC_TEST_REPORTER_ID: '266992849463aa465e0884ad7d582306656214e31ac9245258f93190868cbc9a'
SETTINGS__DOR_INDEXING_URL: http://dor-indexing-app:3000/dor
# To generate the token: docker-compose run dor-services-app rake generate_token
SETTINGS__DOR_SERVICES__TOKEN: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJGb28ifQ.-BVfLTW9Q1_ZQEsGv4tuzGLs5rESN7LgdtEwUltnKv4
SETTINGS__DOR_SERVICES__URL: http://dor-services-app:3000
SETTINGS__REDIS_URL: redis://redis:6379/
SETTINGS__SDR_API__URL: http://sdr-api:3000
SETTINGS__SOLRIZER_URL: http://solr:8983/solr/argo
SETTINGS__TECH_MD_SERVICE__URL: http://techmd:3000
SETTINGS__WORKFLOW_URL: http://workflow:3000
TT: 1 # track templates
executor: ruby_with_all_deps
steps:
- setup_remote_docker
- checkout
- run:
name: Build and run solr (using repo's solr configuration)
command: |
docker build -f docker/Dockerfile-solr -t "argo-solr:latest" .
network=`docker network ls --filter label=task-network --format "{{.ID}}"`
docker run -d --name solr -p 8983:8983 --network-alias solr --network $network argo-solr:latest
- ruby/install-deps:
key: gems-v2
- node/install-packages:
pkg-manager: yarn
# Check DB status
- run:
name: Wait for DB
command: dockerize -wait tcp://db:5432 -timeout 10s
# Setup database
- run:
name: Database setup
command: bin/rails db:test:prepare
- run:
name: Build assets
command: bin/rails assets:precompile
- run:
name: Set up CodeClimate
command: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
# Run rspec in parallel
- ruby/rspec-test:
rerun-fail: true
- run:
name: Report test coverage results to CodeClimate
command: ./cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?
- store_artifacts:
path: tmp/capybara
- store_artifacts:
path: log/test.log