version: 2.1 commands: # a reusable command with parameters command_build_and_test: parameters: nodeNo: default: "0" type: string steps: # Restore the dependency cache - restore_cache: keys: # Default branch if not - source-v2-{{ .Branch }}-{{ .Revision }} - source-v2-{{ .Branch }}- - source-v2- # Machine Setup # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each - run: name: Install Headless Chrome dependencies command: | sudo apt-get update && sudo apt-get install -yq \ gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \ libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \ libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \ libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \ fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm1 # The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out. - checkout # Prepare for artifact and test results collection equivalent to how it was done on 1.0. # In many cases you can simplify this from what is generated here. # 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/' - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS # This is based on your 1.0 configuration file or project settings #- run: # command: sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java; sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac; echo -e "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> $BASH_ENV - run: command: java -version - run: command: 'sudo docker info >/dev/null 2>&1 || sudo service docker start; ' - run: command: | sudo tee -a /etc/hosts \<<< "127.0.0.1 path.v1.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.1 path.v2.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.111 path.v3.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.1 operation.v1.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.1 operation.v2.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.111 operation.v3.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.1 server.v1.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.1 server.v2.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.111 server.v3.test.openapi-generator.tech" sudo tee -a /etc/hosts \<<< "127.0.0.1 petstore.swagger.io" cat /etc/hosts # - run: docker pull openapitools/openapi-petstore # - run: docker run -d -e OPENAPI_BASE_PATH=/v3 -e DISABLE_API_KEY=1 -e DISABLE_OAUTH=1 -p 80:8080 openapitools/openapi-petstore - run: docker pull swaggerapi/petstore - run: docker run --name petstore.swagger -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore - run: docker ps -a - run: sleep 30 - run: cat /etc/hosts - run: export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=128m" - run: name: "Setup custom environment variables" command: echo 'export CIRCLE_NODE_INDEX="<>"' >> $BASH_ENV - run: ./CI/circle_parallel.sh # Save dependency cache #- save_cache: # key: source-v2-{{ .Branch }}-{{ .Revision }} # paths: # # This is a broad list of cache paths to include many possible development environments # # You can probably delete some of these entries # - ~/.m2 # - ~/.ivy2 # - ~/.sbt # - ~/.bundle # - ~/.go_workspace # - ~/.gradle # - ".git" # - ~/.stack # - ~/R ## save "default" cache using the key "source-v2-" #- save_cache: # key: source-v2- # paths: # # This is a broad list of cache paths to include many possible development environments # # You can probably delete some of these entries # - vendor/bundle # - ~/.m2 # - ~/.ivy2 # - ~/.sbt # - ~/.bundle # - ~/.go_workspace # - ~/.gradle # - ~/.cache/bower # - ".git" # - ~/.stack # - ~/R # Teardown # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each # Save test results - store_test_results: path: /tmp/circleci-test-results # Save artifacts - store_artifacts: path: /tmp/circleci-artifacts - store_artifacts: path: /tmp/circleci-test-results command_docker_build_and_test: parameters: nodeNo: default: "0" type: string steps: # Machine Setup # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each # The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out. - checkout # Prepare for artifact and test results collection equivalent to how it was done on 1.0. # In many cases you can simplify this from what is generated here. # 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/' - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS # This is based on your 1.0 configuration file or project settings # - run: # command: sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java; sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac; echo -e "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> $BASH_ENV # - run: # Test # - run: mvn --no-snapshot-updates --quiet clean install -Dorg.slf4j.simpleLogger.defaultLogLevel=error - run: name: "Setup custom environment variables" command: echo 'export CIRCLE_NODE_INDEX="<>"' >> $BASH_ENV - run: ./CI/circle_parallel.sh # Teardown # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each # Save test results - store_test_results: path: /tmp/circleci-test-results # Save artifacts - store_artifacts: path: /tmp/circleci-artifacts - store_artifacts: path: /tmp/circleci-test-results jobs: node0: machine: image: ubuntu-2004:2024.01.1 working_directory: ~/OpenAPITools/openapi-generator shell: /bin/bash --login environment: CIRCLE_ARTIFACTS: /tmp/circleci-artifacts CIRCLE_TEST_REPORTS: /tmp/circleci-test-results DOCKER_GENERATOR_IMAGE_NAME: openapitools/openapi-generator DOCKER_CODEGEN_CLI_IMAGE_NAME: openapitools/openapi-generator-cli steps: - command_build_and_test: nodeNo: "0" node1: machine: image: ubuntu-2004:2024.01.1 working_directory: ~/OpenAPITools/openapi-generator shell: /bin/bash --login environment: CIRCLE_ARTIFACTS: /tmp/circleci-artifacts CIRCLE_TEST_REPORTS: /tmp/circleci-test-results DOCKER_GENERATOR_IMAGE_NAME: openapitools/openapi-generator DOCKER_CODEGEN_CLI_IMAGE_NAME: openapitools/openapi-generator-cli steps: - command_build_and_test: nodeNo: "1" node2: machine: image: ubuntu-2004:2024.01.1 working_directory: ~/OpenAPITools/openapi-generator shell: /bin/bash --login environment: CIRCLE_ARTIFACTS: /tmp/circleci-artifacts CIRCLE_TEST_REPORTS: /tmp/circleci-test-results DOCKER_GENERATOR_IMAGE_NAME: openapitools/openapi-generator DOCKER_CODEGEN_CLI_IMAGE_NAME: openapitools/openapi-generator-cli steps: - command_build_and_test: nodeNo: "2" node3: machine: image: ubuntu-2004:2024.01.1 working_directory: ~/OpenAPITools/openapi-generator shell: /bin/bash --login environment: CIRCLE_ARTIFACTS: /tmp/circleci-artifacts CIRCLE_TEST_REPORTS: /tmp/circleci-test-results DOCKER_GENERATOR_IMAGE_NAME: openapitools/openapi-generator DOCKER_CODEGEN_CLI_IMAGE_NAME: openapitools/openapi-generator-cli steps: - checkout - command_build_and_test: nodeNo: "3" workflows: version: 2 build: jobs: - node0 - node1 - node2 - node3