# Javascript Node CircleCI 2.0 configuration file # # Check https://circleci.com/docs/2.0/language-javascript/ for more details # version: 2.1 parameters: run_flaky_tests: type: boolean default: true run_flaky_parallelism: type: integer default: 40 orbs: browser-tools: circleci/browser-tools@1.2.3 jobs: build: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project steps: - checkout - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm install - save_cache: key: v1-deps-{{ checksum "package-lock.json" }} paths: - node_modules - run: npm run downloadsolc_assets - run: npx nx build remix-ide - run: npx nx build remix-ide-e2e-src-local-plugin - run: npm run build:libs - run: mkdir persist && zip -r persist/dist.zip dist - run: name: Update PATH and Define Environment Variable at Runtime command: | echo 'export VERY_IMPORTANT="testing"' >> $BASH_ENV source $BASH_ENV - persist_to_workspace: root: . paths: - 'persist' lint: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project parallelism: 35 steps: - checkout - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm install - run: name: Remix Libs Linting command: ./apps/remix-ide/ci/lint.sh remix-libs: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project steps: - checkout - attach_workspace: at: . - run: unzip ./persist/dist.zip - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm i - run: cd dist/libs/remix-tests && npm install - run: npm run test:libs remix-ide-chrome: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project parallelism: 80 steps: - browser-tools/install-chrome - browser-tools/install-chromedriver - run: command: | google-chrome --version chromedriver --version java -jar /usr/local/bin/selenium.jar --version name: Check install - checkout - attach_workspace: at: . - run: unzip ./persist/dist.zip - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm install - run: name: Start Selenium command: java -jar /usr/local/bin/selenium.jar background: true - run: ./apps/remix-ide/ci/browser_test.sh chrome - store_test_results: path: ./reports/tests - store_artifacts: path: ./reports/screenshots flaky-chrome: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project parallelism: << parameters.run_flaky_parallelism >> steps: - browser-tools/install-chrome - browser-tools/install-chromedriver - run: command: | google-chrome --version chromedriver --version java -jar /usr/local/bin/selenium.jar --version name: Check install - checkout - attach_workspace: at: . - run: unzip ./persist/dist.zip - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm install - run: name: Start Selenium command: java -jar /usr/local/bin/selenium.jar background: true - run: ./apps/remix-ide/ci/flaky.sh chrome - store_test_results: path: ./reports/tests - store_artifacts: path: ./reports/screenshots remix-ide-firefox: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project parallelism: 80 steps: - browser-tools/install-firefox - browser-tools/install-geckodriver - run: command: | firefox --version geckodriver --version java -jar /usr/local/bin/selenium.jar --version name: Check install - checkout - attach_workspace: at: . - run: unzip ./persist/dist.zip - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm install - run: name: Start Selenium command: java -jar /usr/local/bin/selenium.jar background: true - run: ./apps/remix-ide/ci/browser_test.sh firefox - store_test_results: path: ./reports/tests - store_artifacts: path: ./reports/screenshots flaky-firefox: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project parallelism: << parameters.run_flaky_parallelism >> steps: - browser-tools/install-firefox - browser-tools/install-geckodriver - run: command: | echo $VERY_IMPORTANT firefox --version geckodriver --version java -jar /usr/local/bin/selenium.jar --version name: Check install - checkout - attach_workspace: at: . - run: unzip ./persist/dist.zip - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm install - run: name: Start Selenium command: java -jar /usr/local/bin/selenium.jar background: true - run: ./apps/remix-ide/ci/flaky.sh firefox - store_test_results: path: ./reports/tests - store_artifacts: path: ./reports/screenshots remix-ide-plugin-api: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" working_directory: ~/remix-project parallelism: 10 steps: - browser-tools/install-chrome - browser-tools/install-chromedriver - run: command: | google-chrome --version chromedriver --version java -jar /usr/local/bin/selenium.jar --version name: Check install - checkout - checkout - attach_workspace: at: . - run: unzip ./persist/dist.zip - restore_cache: keys: - v1-deps-{{ checksum "package-lock.json" }} - run: npm install - run: name: Start Selenium command: java -jar /usr/local/bin/selenium.jar background: true - run: ./apps/remix-ide/ci/browser_tests_plugin_api.sh - store_test_results: path: ./reports/tests - store_artifacts: path: ./reports/screenshots deploy-remix-live: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images # documented at https://circleci.com/docs/2.0/circleci-images/ resource_class: xlarge # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" - FILES_TO_PACKAGE: "dist/apps/remix-ide/index.html dist/apps/remix-ide/raw-loader*.js dist/apps/remix-ide/assets dist/apps/remix-ide/main*.js dist/apps/remix-ide/polyfills*.js dist/apps/remix-ide/favicon.ico dist/apps/remix-ide/vendors~app*.js dist/apps/remix-ide/app*.js" working_directory: ~/remix-project steps: - checkout - run: npm install - run: npm run downloadsolc_assets - run: npm run build:production - run: name: Deploy command: | if [ "${CIRCLE_BRANCH}" == "remix_live" ]; then ./apps/remix-ide/ci/deploy_from_travis_remix-live.sh; fi deploy-remix-alpha: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images resource_class: xlarge # documented at https://circleci.com/docs/2.0/circleci-images/ # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" - FILES_TO_PACKAGE: "dist/apps/remix-ide/index.html dist/apps/remix-ide/raw-loader*.js dist/apps/remix-ide/assets dist/apps/remix-ide/main*.js dist/apps/remix-ide/polyfills*.js dist/apps/remix-ide/favicon.ico dist/apps/remix-ide/vendors~app*.js dist/apps/remix-ide/app*.js" working_directory: ~/remix-project steps: - checkout - run: npm install - run: npm run downloadsolc_assets - run: npm run build:production - run: name: Deploy command: | if [ "${CIRCLE_BRANCH}" == "master" ]; then ./apps/remix-ide/ci/deploy_from_travis_remix-alpha.sh; fi deploy-remix-beta: docker: # specify the version you desire here - image: cimg/node:14.17.6-browsers # Specify service dependencies here if necessary # CircleCI maintains a library of pre-built images resource_class: xlarge # documented at https://circleci.com/docs/2.0/circleci-images/ # - image: circleci/mongo:3.4.4 environment: - COMMIT_AUTHOR_EMAIL: "yann@ethereum.org" - COMMIT_AUTHOR: "Circle CI" - FILES_TO_PACKAGE: "dist/apps/remix-ide/index.html dist/apps/remix-ide/raw-loader*.js dist/apps/remix-ide/assets dist/apps/remix-ide/main*.js dist/apps/remix-ide/polyfills*.js dist/apps/remix-ide/favicon.ico dist/apps/remix-ide/vendors~app*.js dist/apps/remix-ide/app*.js" working_directory: ~/remix-project steps: - checkout - run: npm install - run: npm run build:libs - run: npm run downloadsolc_assets - run: npm run build:production - run: name: Deploy command: | if [ "${CIRCLE_BRANCH}" == "remix_beta" ]; then ./apps/remix-ide/ci/deploy_from_travis_remix-beta.sh; fi workflows: version: 2 run_flaky_tests: when: << pipeline.parameters.run_flaky_tests >> jobs: - build - flaky-chrome: requires: - build - flaky-firefox: requires: - build build_all: unless: << pipeline.parameters.run_flaky_tests >> jobs: - build - lint: requires: - build - remix-libs: requires: - build - remix-ide-plugin-api: requires: - build - remix-ide-chrome: requires: - build - remix-ide-firefox: requires: - build - deploy-remix-live: requires: - lint - remix-libs - remix-ide-chrome - remix-ide-firefox - remix-ide-plugin-api filters: branches: only: remix_live - deploy-remix-alpha: requires: - lint - remix-libs - remix-ide-chrome - remix-ide-firefox - remix-ide-plugin-api filters: branches: only: master - deploy-remix-beta: requires: - lint - remix-libs - remix-ide-chrome - remix-ide-firefox - remix-ide-plugin-api filters: branches: only: remix_beta