.circleci/config.yml
version: 2.1orbs: codecov: codecov/codecov@3.3.0 ##################################### YAML ANCHORS ############################################ persist-vendored-dependencies-to-workspace: &persist-vendored-dependencies-to-workspace persist_to_workspace: root: . paths: - ./vendor/bundle - ./.bundle/ store-junit-results: &store-junit-test-results store_test_results: path: tmp/junit store-test-artifacts: &store-test-artifacts store_artifacts: path: tmp/junit destination: junit store-log-artifacts: &store-log-artifacts store_artifacts: path: log destination: log npm-cache-key: &npm-cache-key stream9-{{ .Environment.CACHE_VERSION }}-node-modules-{{ checksum "yarn.lock" }}bundle-cache-key: &bundle-cache-key stream9-{{ .Environment.CACHE_VERSION }}-bundler-gems-{{ arch }}-{{ checksum "Gemfile.lock" }}-{{ checksum "/tmp/db" }}assets-cache-key: &assets-cache-key stream9-{{ .Environment.CACHE_VERSION }}-asset-cache-{{ checksum "tmp/assets_related_checksums" }}oracle-libs-cache-key: &oracle-libs-cache-key ora1-{{ .Environment.CACHE_VERSION }}-oracle-libs-cache-{{ checksum "script/oracle/install-instantclient-packages.sh" }} restore-npm-cache: &restore-npm-cache restore_cache: key: *npm-cache-key save-npm-cache: &save-npm-cache save_cache: key: *npm-cache-key paths: - ./node_modules restore-oracle-libs-cache: &restore-oracle-libs-cache restore_cache: key: *oracle-libs-cache-key save-oracle-libs-cache: &save-oracle-libs-cache save_cache: key: *oracle-libs-cache-key paths: - vendor/oracle save-assets-cache: &save-assets-cache save_cache: key: *assets-cache-key paths: - public/assets - public/packs - tmp/cache/assets restore-assets-cache: &restore-assets-cache restore_cache: key: *assets-cache-key generate-assets-checksums: &generate-assets-checksums run: name: Generate assets precompilation checksum data command: git ls-tree -r HEAD $(<.circleci/asset_paths) > tmp/assets_related_checksums use-example-config-files: &use-example-config-files run: name: Copy example config files into place to be used by tests command: cp config/examples/*.yml config/ disable-internet-access: &disable-internet-access run: name: Disable internet access command: sudo sed -c -i".bak" 's/127\.0\.0\.11$/127.0.0.1/' /etc/resolv.conf enable-internet-access: &enable-internet-access run: name: Enabled internet access command: sudo sed -c -i".bak" 's/127\.0\.0\.1$/127.0.0.11/' /etc/resolv.conf when: always attach-to-workspace: &attach-to-workspace attach_workspace: at: . system-builder-ruby31: &system-builder-ruby31 image: quay.io/3scale/system-builder:ps environment: BUNDLE_FROZEN: true BUNDLE_PATH: 'vendor/bundle' DISABLE_SPRING: "true" ORACLE_SYSTEM_PASSWORD: threescalepass NLS_LANG: AMERICAN_AMERICA.UTF8 TZ: UTC MASTER_PASSWORD: p USER_PASSWORD: p LC_ALL: C.utf8 RAILS_ENV: test mysql-container: &mysql-container image: cimg/mysql:8.0 command: mysqld --performance_schema=0 --table_definition_cache=400 --innodb_buffer_pool_size=16M --innodb_log_buffer_size=4M --tmp_table_size=1M --key_buffer_size=4M --sort_buffer_size=128K --skip-log-bin environment: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_ROOT_PASSWORD: '' MYSQL_DATABASE: circleci postgres-container: &postgres-container image: cimg/postgres:14.12 environment: POSTGRES_USER: postgres oracle-db-container: &oracle-db-container image: quay.io/3scale/oracle:19.3.0-ee-ci-prebuilt auth: username: $DOCKER_USERNAME password: $DOCKER_PASSWORD environment: ORACLE_CHARACTERSET: 'AL32UTF8' ORACLE_SID: 'threescale' ORACLE_PDB: 'systempdbtest' ORACLE_PWD: 'threescalepass' command: bash -c "sed -i.bak 's|2048|6144|g' /opt/oracle/dbca.rsp.tmpl && exec /opt/oracle/runOracle.sh" memcached-container: &memcached-container image: memcached:1.5-alpine redis-container: &redis-container image: redis:6.2-alpine dnsmasq-container: &dnsmasq-container image: quay.io/3scale/dnsmasq command: - --user=root - --keep-in-foreground - --log-facility=- - --log-queries - --no-poll - --server=/circleci-internal-outer-build-agent/circleci-internal-outer-build-agent.ec2.internal/circleci.com/circleci-binary-releases.s3.amazonaws.com/127.0.0.11 - --address=/#/127.0.0.1 only-master-filter: &only-master-filter filters: branches: only: master nightly-trigger: &nightly-trigger triggers: - schedule: cron: "0 0 * * *" <<: *only-master-filter build-envs: mysql: &build-envs-mysql environment: DB: mysql DATABASE_URL: mysql2://root:@127.0.0.1:3306/3scale_system_test postgresql: &build-envs-postgresql environment: DB: postgresql DATABASE_URL: postgresql://postgres:@127.0.0.1:5432/systemdb oracle: &build-envs-oracle environment: DB: oracle DATABASE_URL: oracle-enhanced://rails:railspass@127.0.0.1:1521/systempdb CAPYBARA_MAX_WAIT_TIME: 30 ##################################### CIRCLECI COMMANDS ############################################ commands: # reusable commands with parameters notify_failure: steps: - when: condition: equal: [ master, << pipeline.git.branch >> ] # &only-master-filter won't work at step level steps: - run: name: Notify Slack about tests failure command: | curl -X POST -H 'Content-type: application/json' \ --data \ "{ \ \"attachments\": [ \ { \ \"fallback\": \"Build failed on $CIRCLE_BRANCH, for $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.\", \ \"color\": \"#CD0000\", \ \"pretext\": \"Don't panic. Build failed on $CIRCLE_BRANCH !! \", \ \"author_name\": \"$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME\", \ \"title\": \"Job: $CIRCLE_JOB \", \ \"title_link\": \"$CIRCLE_BUILD_URL\", \ \"text\": \"$CIRCLE_BUILD_URL\", \ \"fields\": [ \ { \ \"title\": \"Commit\", \ \"value\": \"$CIRCLE_SHA1\", \ \"short\": false \ } \ ] \ } \ ] \ }" $SLACK_WEBHOOK_SYSTEM when: on_fail install-gem-dependencies: parameters: extra-deps: description: "Steps that will be executed in case extra dependencies." type: steps default: [] steps: - checkout - run: name: Make $DB Available for cache keys command: echo $DB > /tmp/db - restore-gem-cache - steps: << parameters.extra-deps >> - run: name: Install gems with bundler command: | echo "Running gems install for database: $DB" echo "$(bundle version)" bundle config set --local deployment 'true' bundle config build.nokogiri --use-system-libraries bundle check || bundle install bundle clean # remove capybara-webkit source, save more than 400 MB rm -rf "$BUNDLE_PATH/$(ruby -e 'puts Gem.ruby_engine')/$(ruby -e 'puts Gem.ruby_api_version')"/gems/capybara-webkit-*/src environment: BUNDLE_RETRY: 3 BUNDLE_JOBS: 3 - save-gem-cache - *persist-vendored-dependencies-to-workspace clone-oracle-libraries: steps: - *restore-oracle-libs-cache - run: name: "Fetch oracle libraries" command: | set +o pipefail ls vendor/oracle sudo ORACLE_KEEP_DOWNLOADS=1 ./script/oracle/install-instantclient-packages.sh - *save-oracle-libs-cache prepare-db-for-tests: steps: - run: name: Prepare database for tests command: | set +o pipefail echo "Running for database: $(echo $DATABASE_URL | sed -e 's/\(oracle\|mysql\|postgresql\).*/\1/g')" set -o pipefail bundle exec rake ci:db:ready db:create db:test:prepare rspec-tests: parameters: extra-deps: description: "Steps that will be executed in case extra dependencies are required, e.g. to connect to db." type: steps default: [] steps: - checkout - *attach-to-workspace - *use-example-config-files - steps: << parameters.extra-deps >> - prepare-db-for-tests - run: name: jemalloc availability command: ldd /bin/bash | grep "$LD_PRELOAD" || ( ldconfig -p && exit 1 ) environment: &malloc_preload LD_PRELOAD: libjemalloc.so.2 - run: name: Rspec tests command: | circleci tests glob "spec/**/*_spec.rb" | circleci tests run --command="xargs bundle exec rspec --format progress" --verbose --split-by=timings environment: *malloc_preload - upload-artifacts cucumber-tests: parameters: extra-deps: description: "Steps that will be executed in case extra dependencies are required, e.g. to connect to db." type: steps default: [] steps: - checkout - *attach-to-workspace - steps: << parameters.extra-deps >> - prepare-db-for-tests - *disable-internet-access - run: name: Check internet access is disabled command: | echo "bundle exec cucumber --profile ci .circleci/no_internet.feature" bundle exec cucumber --profile ci .circleci/no_internet.feature environment: *malloc_preload - log-memory-usage-periodic - run: name: Run cucumber tests command: | # saved test cases metadata can be read here: # ${CIRCLE_INTERNAL_TASK_DATA}/circle-test-results/results.json bundle exec ruby .circleci/features.rb | circleci tests run --command="xargs bundle exec cucumber --profile ci" --verbose --split-by=timings - *enable-internet-access - print-oom-process-count - upload-artifacts - store_artifacts: path: tmp/capybara destination: capybara rails-tests: parameters: extra-deps: description: "Steps that will be executed in case extra dependencies are required, e.g. to connect to db." type: steps default: [] steps: - checkout - *attach-to-workspace - *use-example-config-files - steps: << parameters.extra-deps >> - prepare-db-for-tests - run: name: Run Rails tests command: | list=/tmp/test-list-$$ taskname=$(echo $CIRCLE_JOB | sed -e 's/-\(postgres\|oracle\|[0-9]\).*//') bundle exec rake "test:files:${taskname}" | circleci tests run --command="cat > $list" --verbose --split-by=timings if [ -s $list ]; then bundle exec rails test $(awk 'ORS=" "' < $list) --verbose --backtrace fi environment: *malloc_preload - upload-artifacts save-gem-cache: steps: - save_cache: key: *bundle-cache-key paths: - ./vendor/bundle - ./.bundle/ restore-gem-cache: steps: - restore_cache: keys: - *bundle-cache-key upload-artifacts: steps: - *store-junit-test-results - *store-test-artifacts - *store-log-artifacts - codecov/upload log-memory-usage-periodic: steps: - run: name: Log process memory usage command: | while sleep 2; do date ps -eo pid,user,%mem,rss,command ww --sort rss echo done background: true print-oom-process-count: steps: - run: name: Number of OOM killed processes command: | # see https://support.circleci.com/hc/en-us/articles/19306469418139-How-to-detect-when-a-process-is-killed-by-the-OOM-killer printf "OOM Control: " cat /sys/fs/cgroup/memory/memory.oom_control | sed -n 3p | tee tmp/oom_num [ "oom_kill 0" = "$(<tmp/oom_num)" ] # fails when a proc was killed by OOM when: always ##################################### CIRCLECI EXECUTORS ############################################ executors: builder-ruby31: &builder-ruby31 parameters: database: type: string default: mysql docker: - *system-builder-ruby31 environment: DB: << parameters.database >> working_directory: /opt/ci/workdir builder-with-mysql-ruby31: &builder-with-mysql-ruby31 resource_class: small docker: - *system-builder-ruby31 - *mysql-container - *memcached-container - *redis-container working_directory: /opt/ci/workdir <<: *build-envs-mysql builder-with-postgres-ruby31: &builder-with-postgres-ruby31 resource_class: small docker: - *system-builder-ruby31 - *postgres-container - *memcached-container - *redis-container working_directory: /opt/ci/workdir <<: *build-envs-postgresql builder-with-oracle-ruby31: &builder-with-oracle-ruby31 resource_class: large docker: - *system-builder-ruby31 - *oracle-db-container - *memcached-container - *redis-container working_directory: /opt/ci/workdir <<: *build-envs-oracle cucumber-with-mysql-ruby31: &cucumber-with-mysql-ruby31 resource_class: small docker: - *system-builder-ruby31 - *dnsmasq-container - *mysql-container - *memcached-container - *redis-container cucumber-with-postgres-ruby31: &cucumber-with-postgres-ruby31 resource_class: small docker: - *system-builder-ruby31 - *dnsmasq-container - *postgres-container - *memcached-container - *redis-container cucumber-with-oracle-ruby31: &cucumber-with-oracle-ruby31 resource_class: large docker: - *system-builder-ruby31 - *dnsmasq-container - *oracle-db-container - *memcached-container - *redis-container ##################################### CIRCLECI JOBS ############################################ jobs: dependencies_bundler: parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> database: mysql steps: - install-gem-dependencies - notify_failure deps_bundler_postgres: parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> database: postgresql steps: - install-gem-dependencies - notify_failure deps_bundler_oracle: parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> database: oracle steps: - install-gem-dependencies: extra-deps: - clone-oracle-libraries - notify_failure dependencies_npm: parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> steps: - checkout - *restore-npm-cache - run: name: Install Node dependencies command: | yarn --version yarn install:safe - *save-npm-cache - persist_to_workspace: root: . paths: - ./node_modules - notify_failure assets_precompile: resource_class: large parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> steps: - checkout - *attach-to-workspace - *generate-assets-checksums - *restore-assets-cache - *use-example-config-files - run: name: Precompile assets command: bundle exec rake assets:precompile environment: RAILS_GROUPS: assets - *save-assets-cache - persist_to_workspace: root: . paths: - ./public/packs - ./public/assets - ./config/*.yml - notify_failure lint: parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> steps: - checkout - *attach-to-workspace - run: name: Eslint command: yarn ci:lint - notify_failure licenses: parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> steps: - checkout - *attach-to-workspace - *use-example-config-files - run: name: Licenses check command: bundle exec rake licenses:compliance - store_artifacts: path: doc/licenses destination: licenses - notify_failure jest: resource_class: medium+ parameters: executor: type: string default: builder-ruby31 executor: name: << parameters.executor >> steps: - checkout - *attach-to-workspace - run: name: Jest specs command: yarn jest --maxWorkers=3 --coverage - codecov/upload - notify_failure unit: parallelism: 8 parameters: executor: type: string default: builder-with-mysql-ruby31 executor: name: << parameters.executor >> steps: - rails-tests - notify_failure unit-postgres: parallelism: 8 parameters: executor: type: string default: builder-with-postgres-ruby31 executor: name: << parameters.executor >> steps: - rails-tests - notify_failure unit-oracle: parallelism: 6 parameters: executor: type: string default: builder-with-oracle-ruby31 executor: name: << parameters.executor >> steps: - rails-tests: extra-deps: - clone-oracle-libraries - notify_failure functional: parallelism: 2 parameters: executor: type: string default: builder-with-mysql-ruby31 executor: name: << parameters.executor >> steps: - rails-tests - notify_failure functional-postgres: parallelism: 2 parameters: executor: type: string default: builder-with-postgres-ruby31 executor: name: << parameters.executor >> steps: - rails-tests - notify_failure functional-oracle: parallelism: 2 parameters: executor: type: string default: builder-with-oracle-ruby31 executor: name: << parameters.executor >> steps: - rails-tests: extra-deps: - clone-oracle-libraries - notify_failure integration: parallelism: 8 parameters: executor: type: string default: builder-with-mysql-ruby31 executor: name: << parameters.executor >> steps: - rails-tests - notify_failure integration-postgres: parallelism: 8 parameters: executor: type: string default: builder-with-postgres-ruby31 executor: name: << parameters.executor >> steps: - rails-tests - notify_failure integration-oracle: parallelism: 6 parameters: executor: type: string default: builder-with-oracle-ruby31 executor: name: << parameters.executor >> steps: - rails-tests: extra-deps: - clone-oracle-libraries - notify_failure rspec: parallelism: 3 parameters: executor: type: string default: builder-with-mysql-ruby31 executor: name: << parameters.executor >> steps: - rspec-tests - notify_failure rspec-postgres: parallelism: 3 parameters: executor: type: string default: builder-with-postgres-ruby31 executor: name: << parameters.executor >> steps: - rspec-tests - notify_failure rspec-oracle: parallelism: 4 parameters: executor: type: string default: builder-with-oracle-ruby31 executor: name: << parameters.executor >> steps: - rspec-tests: extra-deps: - clone-oracle-libraries - notify_failure cucumber: <<: *build-envs-mysql parallelism: 40 parameters: executor: type: string default: cucumber-with-mysql-ruby31 executor: name: << parameters.executor >> steps: - cucumber-tests - notify_failure cucumber-postgres: <<: *build-envs-postgresql parallelism: 40 parameters: executor: type: string default: cucumber-with-postgres-ruby31 executor: name: << parameters.executor >> steps: - cucumber-tests - notify_failure cucumber-oracle: <<: *build-envs-oracle parallelism: 30 parameters: executor: type: string default: cucumber-with-oracle-ruby31 executor: name: << parameters.executor >> steps: - cucumber-tests: extra-deps: - clone-oracle-libraries - notify_failure notify_start: docker: - image: cimg/base:current steps: - run: name: Notify Slack about tests start command: | curl -X POST -H 'Content-type: application/json' \ --data \ "{ \ \"attachments\": [ \ { \ \"fallback\": \"Build started on master, for $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.\", \ \"color\": \"#D3D3D3\", \ \"pretext\": \"Build started on master: \", \ \"author_name\": \"$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME\", \ \"title\": \"Job: $CIRCLE_JOB \", \ \"title_link\": \"$CIRCLE_BUILD_URL\", \ \"text\": \"Changes: $CIRCLE_COMPARE_URL\", \ \"fields\": [ \ { \ \"title\": \"Commit\", \ \"value\": \"$CIRCLE_SHA1\", \ \"short\": false \ }, \ { \ \"title\": \"GitHub Repo\", \ \"value\": \"$CIRCLE_REPOSITORY_URL\", \ \"short\": false \ }, \ { \ \"title\": \"Triggered by:\", \ \"value\": \"$CIRCLE_USERNAME\", \ \"short\": false \ } \ ] \ } \ ] \ }" $SLACK_WEBHOOK_SYSTEM notify_success: docker: - image: cimg/base:current steps: - run: name: Notify Slack about tests passing command: | curl -X POST -H 'Content-type: application/json' \ --data \ "{ \ \"attachments\": [ \ { \ \"fallback\": \"All is well & green on $CIRCLE_BRANCH, for $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.\", \ \"color\": \"#00B700\", \ \"pretext\": \"All is well & green on $CIRCLE_BRANCH. Nothing to see here. \", \ \"author_name\": \"$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME\", \ \"title\": \"Job: $CIRCLE_JOB \", \ \"title_link\": \"$CIRCLE_BUILD_URL\", \ \"text\": \"$CIRCLE_BUILD_URL\", \ \"fields\": [ \ { \ \"title\": \"Commit\", \ \"value\": \"$CIRCLE_SHA1\", \ \"short\": false \ } \ ] \ } \ ] \ }" $SLACK_WEBHOOK_SYSTEM when: on_success ##################################### CIRCLECI WORKFLOWS ############################################ workflows: version: 2 mysql_build: jobs: - manual_approval: # <<< A job that will require manual approval in the CircleCI web application. type: approval # <<< This key-value pair will set your workflow to a status of "On Hold" - notify_start: <<: *only-master-filter requires: - manual_approval - dependencies_bundler: requires: - manual_approval - dependencies_npm: requires: - manual_approval - assets_precompile: requires: - dependencies_bundler - dependencies_npm - unit: requires: - dependencies_bundler - functional: requires: - assets_precompile - integration: requires: - assets_precompile - rspec: requires: - dependencies_bundler - cucumber: requires: - assets_precompile - notify_success: requires: - rspec - unit - cucumber - integration - functional <<: *only-master-filter postgres_build: jobs: - manual_approval: # <<< A job that will require manual approval in the CircleCI web application. type: approval # <<< This key-value pair will set your workflow to a status of "On Hold" # On approval of the `hold` job, any successive job that requires the `hold` job will run. - notify_start: requires: - manual_approval <<: *only-master-filter - deps_bundler_postgres: requires: - manual_approval - dependencies_npm: requires: - manual_approval - assets_precompile: requires: - deps_bundler_postgres - dependencies_npm - unit-postgres: requires: - deps_bundler_postgres - functional-postgres: requires: - assets_precompile - integration-postgres: requires: - assets_precompile - rspec-postgres: requires: - deps_bundler_postgres - cucumber-postgres: requires: - assets_precompile - notify_success: requires: - rspec-postgres - unit-postgres - cucumber-postgres - integration-postgres - functional-postgres <<: *only-master-filter oracle_build: jobs: - manual_approval: # <<< A job that will require manual approval in the CircleCI web application. type: approval # <<< This key-value pair will set your workflow to a status of "On Hold" # On approval of the `hold` job, any successive job that requires the `hold` job will run. - notify_start: requires: - manual_approval <<: *only-master-filter - deps_bundler_oracle: requires: - manual_approval - dependencies_npm: requires: - manual_approval - assets_precompile: requires: - deps_bundler_oracle - dependencies_npm - unit-oracle: requires: - deps_bundler_oracle context: - quay - functional-oracle: requires: - assets_precompile context: - quay - integration-oracle: requires: - assets_precompile context: - quay - rspec-oracle: requires: - deps_bundler_oracle context: - quay - cucumber-oracle: requires: - assets_precompile context: - quay - notify_success: requires: - rspec-oracle - unit-oracle - cucumber-oracle - integration-oracle - functional-oracle <<: *only-master-filter javascript_tests: jobs: - manual_approval: # <<< A job that will require manual approval in the CircleCI web application. type: approval # <<< This key-value pair will set your workflow to a status of "On Hold" - notify_start: <<: *only-master-filter requires: - manual_approval - dependencies_bundler: requires: - manual_approval - dependencies_npm: requires: - manual_approval - licenses: requires: - dependencies_bundler - lint: requires: - dependencies_npm - jest: requires: - dependencies_npm - notify_success: requires: - licenses - lint - jest <<: *only-master-filter ######## Nightly workflows mysql_nightly_build_ruby31: jobs: - notify_start: <<: *only-master-filter - dependencies_bundler: executor: builder-ruby31 - dependencies_npm: executor: builder-ruby31 - assets_precompile: executor: builder-ruby31 requires: - dependencies_bundler - dependencies_npm - unit: executor: builder-with-mysql-ruby31 requires: - dependencies_bundler - functional: executor: builder-with-mysql-ruby31 requires: - assets_precompile - integration: executor: builder-with-mysql-ruby31 requires: - assets_precompile - rspec: executor: builder-with-mysql-ruby31 requires: - dependencies_bundler - cucumber: executor: cucumber-with-mysql-ruby31 requires: - assets_precompile - notify_success: requires: - rspec - unit - cucumber - integration - functional <<: *only-master-filter <<: *nightly-trigger postgres_nightly_build_ruby31: jobs: - notify_start: <<: *only-master-filter - deps_bundler_postgres: executor: builder-ruby31 - dependencies_npm: executor: builder-ruby31 - assets_precompile: executor: builder-ruby31 requires: - deps_bundler_postgres - dependencies_npm - unit-postgres: executor: builder-with-postgres-ruby31 requires: - deps_bundler_postgres - functional-postgres: executor: builder-with-postgres-ruby31 requires: - assets_precompile - integration-postgres: executor: builder-with-postgres-ruby31 requires: - assets_precompile - rspec-postgres: executor: builder-with-postgres-ruby31 requires: - deps_bundler_postgres - cucumber-postgres: executor: cucumber-with-postgres-ruby31 requires: - assets_precompile - notify_success: requires: - rspec-postgres - unit-postgres - cucumber-postgres - integration-postgres - functional-postgres <<: *only-master-filter <<: *nightly-trigger oracle_nightly_build_ruby31: jobs: - notify_start: <<: *only-master-filter - deps_bundler_oracle: executor: builder-ruby31 - dependencies_npm: executor: builder-ruby31 - assets_precompile: executor: builder-ruby31 requires: - deps_bundler_oracle - dependencies_npm - unit-oracle: executor: builder-with-oracle-ruby31 context: - quay requires: - deps_bundler_oracle - functional-oracle: executor: builder-with-oracle-ruby31 context: - quay requires: - assets_precompile - integration-oracle: executor: builder-with-oracle-ruby31 context: - quay requires: - assets_precompile - rspec-oracle: executor: builder-with-oracle-ruby31 context: - quay requires: - deps_bundler_oracle - cucumber-oracle: executor: cucumber-with-oracle-ruby31 context: - quay requires: - assets_precompile - notify_success: requires: - rspec-oracle - unit-oracle - cucumber-oracle - integration-oracle - functional-oracle <<: *only-master-filter <<: *nightly-trigger javascript_nightly_build_ruby31: jobs: - notify_start: <<: *only-master-filter - dependencies_bundler: executor: builder-ruby31 - dependencies_npm: executor: builder-ruby31 - assets_precompile: executor: builder-ruby31 requires: - dependencies_bundler - dependencies_npm - licenses: executor: builder-ruby31 requires: - dependencies_bundler - lint: executor: builder-ruby31 requires: - dependencies_npm - jest: executor: builder-ruby31 requires: - dependencies_npm - notify_success: requires: - licenses - lint - jest <<: *only-master-filter <<: *nightly-trigger