# YAML Anchors aws-auth: &aws-auth aws_auth: aws_access_key_id: $ECR_AWS_ACCESS_KEY_ID aws_secret_access_key: $ECR_AWS_SECRET_ACCESS_KEY version: 2.1 jobs: lint: docker: - image: $SALSIFY_ECR_REPO/ruby_ci:3.0.6 <<: *aws-auth working_directory: ~/postgres-vacuum-monitor steps: - checkout - restore_cache: keys: - v1-gems-ruby-3.0.6-{{ checksum "postgres-vacuum-monitor.gemspec" }}-{{ checksum "Gemfile" }} - v1-gems-ruby-3.0.6- - run: name: Install Gems command: | if ! bundle check --path=vendor/bundle; then bundle install --path=vendor/bundle --jobs=4 --retry=3 bundle clean fi - save_cache: key: v1-gems-ruby-3.0.6-{{ checksum "postgres-vacuum-monitor.gemspec" }}-{{ checksum "Gemfile" }} paths: - "vendor/bundle" - "gemfiles/vendor/bundle" - run: name: Run Rubocop command: bundle exec rubocop --config .rubocop.yml test: parameters: gemfile: type: string ruby_version: type: string postgres_version: type: string docker: - image: $SALSIFY_ECR_REPO/ruby_ci:<< parameters.ruby_version >> <<: *aws-auth - image: cimg/postgres:<< parameters.postgres_version >> environment: POSTGRES_USER: "circleci" POSTGRES_DB: "circle_test" POSTGRES_HOST_AUTH_METHOD: "trust" environment: DB_USER: "circleci" ADMIN_DB_NAME: "circle_test" RACK_ENV: "test" RAILS_ENV: "test" CIRCLE_TEST_REPORTS: "test-results" BUNDLE_GEMFILE: << parameters.gemfile >> working_directory: ~/postgres-vacuum-monitor steps: - checkout - restore_cache: keys: - v1-gems-ruby-<< parameters.ruby_version >>-{{ checksum "postgres-vacuum-monitor.gemspec" }}-{{ checksum "<< parameters.gemfile >>" }} - v1-gems-ruby-<< parameters.ruby_version >>- - run: name: Install Gems command: | if ! bundle check --path=vendor/bundle; then bundle install --path=vendor/bundle --jobs=4 --retry=3 bundle clean fi - save_cache: key: v1-gems-ruby-<< parameters.ruby_version >>-{{ checksum "postgres-vacuum-monitor.gemspec" }}-{{ checksum "<< parameters.gemfile >>" }} paths: - "vendor/bundle" - "gemfiles/vendor/bundle" - run: name: Wait for Database command: dockerize -wait tcp://localhost:5432 -timeout 60s - run: name: Wait for Database User command: t=30; for i in `seq $t`; do psql -h localhost -p 5432 -U circleci -d circle_test -c '\q' && break; [ $i -eq $t ] && return 2; sleep 1; done; - run: name: Run Tests command: | bundle exec rspec --format RspecJunitFormatter --out $CIRCLE_TEST_REPORTS/rspec/junit.xml --format progress spec - store_test_results: path: "test-results" workflows: build: jobs: - lint: context: Salsify - test: context: Salsify matrix: parameters: gemfile: - "gemfiles/activerecord_6_1.gemfile" - "gemfiles/activerecord_7_0.gemfile" ruby_version: - "3.0.6" - "3.1.4" - "3.2.2" postgres_version: - "12.9" - "14.7"