version: 2.1 orbs: node: circleci/node@5.1.0 browser-tools: circleci/browser-tools@1.4.7 executors: java17: docker: - image: 'cimg/openjdk:17.0.9' commands: install_java17: steps: - run: name: Install Java 17 command: | sudo apt-get update sudo apt install -y openjdk-17-jdk sudo rm /etc/alternatives/java sudo ln -s /usr/lib/jvm/java-17-openjdk-amd64/bin/java /etc/alternatives/java install_npm: steps: - checkout - node/install: node-version: '16.13' - node/install-packages mvn_verify: steps: - browser-tools/install-chrome - browser-tools/install-chromedriver - run: name: install dockerize command: wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && sudo tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz environment: DOCKERIZE_VERSION: v0.3.0 - run: name: Install Browser dependencies command: | sudo apt update sudo apt install -y libnss3-dev libgdk-pixbuf2.0-dev libgtk-3-dev libxss-dev - restore_cache: keys: - v1-dependencies-{{ checksum "pom.xml" }} - run: name: Run react app and mvn verify command: | echo "HTTPS=true" >> ./.env npm run build export REACT_APP_PROXY_LOCALHOST_PORT=8001; export PORT=3001; npm run start & dockerize -wait tcp://localhost:3001 -timeout 3m export QQQ_SELENIUM_HEADLESS=true; mvn -s .circleci/mvn-settings.xml verify - run: name: Save test results command: | mkdir -p ~/test-results/junit/ find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \; when: always - store_test_results: path: ~/test-results - save_cache: paths: - ~/.m2 key: v1-dependencies-{{ checksum "pom.xml" }} - store_artifacts: path: /tmp/QSeleniumScreenshots mvn_deploy: steps: - checkout - run: name: Adjust pom version command: | .circleci/adjust-pom-version.sh - restore_cache: keys: - v1-dependencies-{{ checksum "pom.xml" }} - run: name: Run NPM Build command: | npm run build - run: name: Build Maven Jar and Deploy command: | rm -rf src/main/resources/material-dashboard mkdir -p src/main/resources/material-dashboard cp -r build/* src/main/resources/material-dashboard mvn -s .circleci/mvn-settings.xml deploy -DskipTests - save_cache: paths: - ~/.m2 key: v1-dependencies-{{ checksum "pom.xml" }} jobs: mvn_test: executor: java17 steps: - install_npm - mvn_verify mvn_deploy: executor: java17 steps: - install_npm - mvn_verify - mvn_deploy workflows: test: jobs: - mvn_test: context: [ qqq-maven-registry-credentials, kingsrook-slack, build-qqq-sample-app ] filters: branches: ignore: /(main|integration.*)/ tags: ignore: /(version|snapshot)-.*/ deploy: jobs: - mvn_deploy: context: [ qqq-maven-registry-credentials, kingsrook-slack, build-qqq-sample-app ] filters: branches: only: /(main|integration.*)/ tags: only: /(version|snapshot)-.*/