version: 2.1 orbs: samvera: samvera/circleci-orb@1 browser-tools: circleci/browser-tools@1.3 ruby: circleci/ruby@2 node: circleci/node@5 executors: hyrax: parameters: fcrepo_version: type: string default: '4.7.5' hyrax_app: type: string default: 'dassie' postgres_version: type: string default: '14.9' redis_version: type: string default: '6.2' ruby_type: type: string default: 'ruby' ruby_version: type: string default: '2.5.5' solr_port: type: string default: '8985' solr_version: type: string default: '8.11-slim' environment: RAILS_ENV: test RACK_ENV: test FCREPO_PORT: 8080 POSTGRES_DB: circle_test POSTGRES_HOST: 127.0.0.1 POSTGRES_USER: postgres docker: - image: "ghcr.io/samvera/hyrax/<< parameters.hyrax_app >>-dev:<< pipeline.git.revision >>" - image: seleniarm/standalone-chromium:114.0 environment: SE_NODE_SESSION_TIMEOUT: 1200 START_XVFB: "false" - image: samvera/fcrepo4:<< parameters.fcrepo_version >> environment: CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC" - image: zookeeper:3.4 - image: solr:<< parameters.solr_version >> environment: VERBOSE: yes SECURITY_JSON: '{"authentication":{"blockUnknown": false, "class":"solr.BasicAuthPlugin", "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}, "realm":"My Solr users", "forwardCredentials": false}, "authorization":{ "class":"solr.RuleBasedAuthorizationPlugin", "permissions":[{"name":"security-edit", "role":"admin"}], "user-role":{"solr":"admin"}}}' command: sh -c "server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd put /security.json \"${SECURITY_JSON}\" && solr-fg -cloud -noprompt -p << parameters.solr_port >> -z localhost:2181" - image: redis:<< parameters.redis_version >> - image: cimg/postgres:<< parameters.postgres_version >> jobs: kaniko-build: parameters: hyrax_app: type: string default: dassie ruby_version: type: string default: 3.2.2 docker: - image: gcr.io/kaniko-project/executor:v1.14.0-debug entrypoint: "" steps: - run: name: Configure GHCR credentials command: | cat > /kaniko/.docker/config.json \<<- JSON { "auths": { "ghcr.io": { "auth": "$(echo -n $GHCR_USER:$GHCR_TOKEN | base64)" } } } JSON - run: name: Build and Push image command: | /kaniko/executor \ --cache=true \ --build-arg "EXTRA_APK_PACKAGES=git bash" \ --build-arg "APP_PATH=.<< parameters.hyrax_app >>" \ --build-arg "RUBY_VERSION=<< parameters.ruby_version >>" \ --context "git://github.com/$(echo $CIRCLE_REPOSITORY_URL | sed -E 's/.+:(.+)\.git/\1/')#refs/heads/${CIRCLE_BRANCH}#${CIRCLE_SHA1}" \ --target "hyrax-engine-dev" \ --destination "ghcr.io/samvera/hyrax/<< parameters.hyrax_app >>-dev:${CIRCLE_SHA1}" hyrax-test: parameters: hyrax_app: type: string default: dassie hyrax_valkyrie: type: string default: "false" ruby_version: type: string default: 3.2.2 executor: name: hyrax hyrax_app: << parameters.hyrax_app >> ruby_version: << parameters.ruby_version >> resource_class: large parallelism: 12 environment: CHROME_HEADLESS_MODE: true DATABASE_URL: postgresql://postgres@127.0.0.1/circle_test HUB_URL: http://localhost:4444/wd/hub HYRAX_VALKYRIE: << parameters.hyrax_valkyrie >> IN_DOCKER: true KARMA_BROWSER: remote-chromium SOLR_URL: http://127.0.0.1:8985/solr/hydra-test VALKYRIE_SOLR_CORE: valkyrie-test VALKYRIE_SOLR_PORT: 8985 steps: - run: name: Create solr core command: | cd /app/samvera/hyrax-webapp/solr/conf zip -1 -r solr_conf.zip ./* db-wait.sh localhost:8985 # wait for solr to be available before hitting the API curl -H "Content-type:application/octet-stream" --data-binary @solr_conf.zip "http://solr:SolrRocks@127.0.0.1:8985/solr/admin/configs?action=UPLOAD&name=solrconfig" curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8985/api/collections/ -d '{create: {name: hydra-test, config: solrconfig, numShards: 1}}' curl -H 'Content-type: application/json' http://solr:SolrRocks@127.0.0.1:8985/api/collections/ -d '{create: {name: valkyrie-test, config: solrconfig, numShards: 1}}' - ruby/rspec-test: app-dir: /app/samvera/hyrax-engine rubocop: working_directory: ~/hyrax docker: - image: cimg/ruby:3.2.2 steps: - checkout - run: bundle install - ruby/rubocop-check workflows: version: 2 dassie: jobs: - rubocop - kaniko-build: name: "dassie-build" ruby_version: "3.2.2" hyrax_app: "dassie" - hyrax-test: name: "dassie-test" ruby_version: "3.2.2" hyrax_app: "dassie" requires: - dassie-build - hyrax-test: name: "dassie-valkyrie-test" ruby_version: "3.2.2" hyrax_app: "dassie" hyrax_valkyrie: "1" requires: - dassie-build koppie: jobs: - kaniko-build: name: "koppie-build" ruby_version: "3.2.2" hyrax_app: "koppie" - hyrax-test: name: "koppie-test" ruby_version: "3.2.2" hyrax_app: "koppie" requires: - koppie-build