# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2
jobs:
  remix-ide-chrome:
    docker:
      # specify the version you desire here
      - image: circleci/node:9.11.2-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: "assets background.js build icon.png index.html manifest.json README.md soljson.js package.json"
    working_directory: ~/remix-ide

    parallelism: 20
    steps:
      - checkout
      - run: npm install
      - run: npm run lint && npm run test && npm run make-mock-compiler
      - run:
          name: Download Selenium
          command: ./node_modules/.bin/selenium-standalone install --config=../remix-ide/seleniumConfig.js
      - run:
          name: Start Selenium
          command: ./node_modules/.bin/selenium-standalone start --config=../remix-ide/seleniumConfig.js
          background: true
      - run: ./ci/browser_tests_chrome.sh
      - store_test_results:
          path: ./reports/tests
      - store_artifacts:
          path: ./reports/screenshots

  remix-ide-firefox:
    docker:
      # specify the version you desire here
      - image: circleci/node:9.11.2-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: "assets background.js build icon.png index.html manifest.json README.md soljson.js package.json"
    working_directory: ~/remix-ide

    parallelism: 20
    steps:
      - checkout
      - run: npm install
      - run: npm run lint && npm run test && npm run make-mock-compiler
      - run:
          name: Download Selenium
          command: ./node_modules/.bin/selenium-standalone install --config=../remix-ide/seleniumConfig.js
      - run:
          name: Start Selenium
          command: ./node_modules/.bin/selenium-standalone start --config=../remix-ide/seleniumConfig.js
          background: true
      - run:
          name: Download Latest Firefox
          command: sudo apt-get purge -y firefox && wget https://sourceforge.net/projects/ubuntuzilla/files/mozilla/apt/pool/main/f/firefox-mozilla-build/firefox-mozilla-build_73.0.1-0ubuntu1_amd64.deb
      - run:
          name: Install Firefox
          command: sudo dpkg -i firefox-mozilla-build_73.0.1-0ubuntu1_amd64.deb
      - run: ./ci/browser_tests_firefox.sh
      - store_test_results:
          path: ./reports/tests
      - store_artifacts:
          path: ./reports/screenshots

  remix-ide-run-deploy:
    docker:
      # specify the version you desire here
      - image: circleci/node:9.11.2-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: "assets background.js build icon.png index.html manifest.json README.md soljson.js package.json"
    working_directory: ~/remix-ide

    steps:
      - checkout
      - run: npm install
      - run: npm run lint && npm run test && npm run make-mock-compiler
      - run:
          name: Download Selenium
          command: ./node_modules/.bin/selenium-standalone install --config=../remix-ide/seleniumConfig.js
      - run:
          name: Start Selenium
          command: ./node_modules/.bin/selenium-standalone start --config=../remix-ide/seleniumConfig.js
          background: true
      - run: ./ci/browser_tests_run_deploy.sh
      - store_artifacts:
          path: ./reports/screenshots


  deploy-remix-live:
    docker:
      # specify the version you desire here
      - image: circleci/node:9.11.2-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: "assets background.js build icon.png index.html manifest.json README.md soljson.js package.json"
    working_directory: ~/remix-ide

    steps:
      - checkout
      - run: npm install
      - run: npm run lint && npm run test && npm run make-mock-compiler
      - run: 
          name: Deploy
          command: |
            if [ "${CIRCLE_BRANCH}" == "remix_live" ]; then
              ./ci/deploy_from_travis_remix-live.sh;
            fi
      - store_artifacts:
          path: ./reports/screenshots

  publish-docker:
    docker:
      # specify the version you desire here
      - image: circleci/node:10.19.0-buster

      # 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: "assets background.js build icon.png index.html manifest.json README.md soljson.js package.json"
    working_directory: ~/remix-ide

    steps:
      - checkout
      - setup_remote_docker
      - run: npm install
      - run: npm run build
      - run: ./ci/build_and_publish_docker_images.sh

  deploy-remix-alpha:
    docker:
      # specify the version you desire here
      - image: circleci/node:9.11.2-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: "assets background.js build icon.png index.html manifest.json README.md soljson.js package.json"
    working_directory: ~/remix-ide

    steps:
      - checkout
      - run: npm install
      - run: npm run lint && npm run test && npm run make-mock-compiler
      - run: 
          name: Deploy
          command: |
            if [ "${CIRCLE_BRANCH}" == "master" ]; then
              ./ci/deploy_from_travis_remix-alpha.sh;
            fi
      - store_artifacts:
          path: ./reports/screenshots

workflows:
  version: 2
  build_all:
    jobs:
      - remix-ide-chrome
      - remix-ide-firefox
      - remix-ide-run-deploy
      - publish-docker:
          requires:
            - remix-ide-chrome
            - remix-ide-firefox
            - remix-ide-run-deploy
      - deploy-remix-live:          
          requires:
            - remix-ide-chrome
            - remix-ide-firefox
            - remix-ide-run-deploy
          filters:
            branches:
              only: remix_live
      - deploy-remix-alpha:          
          requires:
            - remix-ide-chrome
            - remix-ide-firefox
            - remix-ide-run-deploy
          filters:
            branches:
              only: master
