diff --git a/.circleci/config.yml b/.circleci/config.yml index ec4d79a3..60c8023f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,8 +1,81 @@ -version: 2 +version: 2.1 + +orbs: + tokenbridge-orb: + commands: + install-chrome: + steps: + - run: + name: Install Chrome + command: | + wget -O chrome.deb https://www.slimjet.com/chrome/download-chrome.php?file=files%2F75.0.3770.80%2Fgoogle-chrome-stable_current_amd64.deb + sudo dpkg -i chrome.deb + install-node: + steps: + - run: + name: Install Node + command: | + export NVM_DIR="/opt/circleci/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + + nvm install 11.4.0 && nvm alias default 11.4.0 + + echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV + echo ' [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV + install-yarn: + steps: + - run: + name: Install Yarn + command: | + curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - + echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list + sudo apt-get update && sudo apt-get -y install yarn + yarn-install-cached-on-machine: + steps: + - restore_cache: + name: Restore Machine Yarn Package Cache + keys: + - yarn-machine-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }} + - run: + name: Install npm dependencies using Yarn + command: nvm use default; yarn install --frozen-lockfile + - save_cache: + name: Save Machine Yarn Package Cache + key: yarn-machine-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }} + paths: + - ~/.cache/yarn + wait-for-oracle: + steps: + - run: + name: Install redis tools + command: sudo apt-get install -y redis-tools + - run: + name: Wait for the Oracle to start + command: | + set +e + i=0 + while [[ $(redis-cli GET native-erc-collected-signatures:lastProcessedBlock) = "" ]]; do + ((i++)) + if [ "$i" -gt 30 ] + then + exit -1 + fi + + echo "Sleeping..." + sleep 3 + done + executors: + docker-node: + docker: + - image: circleci/node:10.15 + machine-with-docker-caching: + machine: + image: circleci/classic:latest + docker_layer_caching: true + jobs: initialize: - docker: - - image: circleci/node:10.15 + executor: tokenbridge-orb/docker-node steps: - checkout - run: git submodule update --init @@ -36,35 +109,30 @@ jobs: paths: - ~/project initialize-root: - docker: - - image: circleci/node:10.15 + executor: tokenbridge-orb/docker-node steps: - checkout - run: sudo su - -c 'export CI=true && cd /home/circleci/project && yarn initialize && yarn test' build: - docker: - - image: circleci/node:10.15 + executor: tokenbridge-orb/docker-node steps: - restore_cache: key: initialize-{{ .Environment.CIRCLE_SHA1 }} - run: yarn run build lint: - docker: - - image: circleci/node:10.15 + executor: tokenbridge-orb/docker-node steps: - restore_cache: key: initialize-{{ .Environment.CIRCLE_SHA1 }} - run: yarn run lint test: - docker: - - image: circleci/node:10.15 + executor: tokenbridge-orb/docker-node steps: - restore_cache: key: initialize-{{ .Environment.CIRCLE_SHA1 }} - run: yarn run test oracle-e2e: - docker: - - image: circleci/node:10.15 + executor: tokenbridge-orb/docker-node steps: - checkout - run: git submodule update --init @@ -72,123 +140,57 @@ jobs: docker_layer_caching: true - run: yarn run oracle-e2e ui-e2e: - machine: - image: circleci/classic:latest - docker_layer_caching: true + executor: tokenbridge-orb/machine-with-docker-caching steps: - checkout - - run: | - echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV - echo ' [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> $BASH_ENV - - run: nvm install 11.4.0 && nvm alias default 11.4.0 - - run: curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - - - run: echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list - - run: sudo apt-get update && sudo apt-get install yarn - - run: wget -O chrome.deb https://www.slimjet.com/chrome/download-chrome.php?file=files%2F75.0.3770.80%2Fgoogle-chrome-stable_current_amd64.deb - - run: sudo dpkg -i chrome.deb + - tokenbridge-orb/install-node + - tokenbridge-orb/install-yarn + - tokenbridge-orb/install-chrome - run: git submodule update --init - - restore_cache: - name: Restore Machine Yarn Package Cache - keys: - - yarn-machine-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }} - - run: yarn install --frozen-lockfile - - save_cache: - name: Save Machine Yarn Package Cache - key: yarn-machine-{{ checksum "package.json" }}-{{ checksum "yarn.lock" }} - paths: - - ~/.cache/yarn + - tokenbridge-orb/yarn-install-cached-on-machine - run: yarn run ui-e2e monitor-e2e: - machine: - image: circleci/classic:latest - docker_layer_caching: true + executor: tokenbridge-orb/machine-with-docker-caching steps: - checkout - run: git submodule update --init - run: ./monitor-e2e/run-tests.sh cover: - docker: - - image: circleci/node:10.15 + executor: tokenbridge-orb/docker-node steps: - restore_cache: key: initialize-{{ .Environment.CIRCLE_SHA1 }} - run: yarn workspace ui run coverage - run: yarn workspace ui run coveralls deployment-oracle: - machine: - image: circleci/classic:latest - docker_layer_caching: true + executor: tokenbridge-orb/machine-with-docker-caching steps: - checkout - run: deployment/molecule/molecule.sh oracle deployment-ui: - machine: - image: circleci/classic:latest - docker_layer_caching: true + executor: tokenbridge-orb/machine-with-docker-caching steps: - checkout - run: deployment/molecule/molecule.sh ui deployment-monitor: - machine: - image: circleci/classic:latest - docker_layer_caching: true + executor: tokenbridge-orb/machine-with-docker-caching steps: - checkout - run: deployment/molecule/molecule.sh monitor ultimate-native-to-erc: - machine: - image: circleci/classic:latest - docker_layer_caching: true + executor: tokenbridge-orb/machine-with-docker-caching steps: - checkout - run: git submodule update --init - - run: - name: Install redis tools - command: sudo apt-get install -y redis-tools - - run: - name: Install node - command: | - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash - export NVM_DIR="/opt/circleci/.nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" - nvm install v10.15.3 - nvm alias default v10.15.3 - - echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV - echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV - - run: - name: Install Chrome - command: | - wget -O chrome.deb https://www.slimjet.com/chrome/download-chrome.php?file=files%2F75.0.3770.80%2Fgoogle-chrome-stable_current_amd64.deb - sudo dpkg -i chrome.deb - - run: - name: Install yarn - command: | - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list - sudo apt-get update && sudo apt-get install yarn - - run: - name: Install npm packages - command: nvm use default; yarn install --frozen-lockfile + - tokenbridge-orb/install-node + - tokenbridge-orb/install-chrome + - tokenbridge-orb/install-yarn + - tokenbridge-orb/yarn-install-cached-on-machine - run: name: Prepare the infrastructure command: e2e-commons/up.sh deploy native-to-erc no_output_timeout: 30m - - run: - name: Wait for the Oracle to start - command: | - set +e - i=0 - while [[ $(redis-cli GET native-erc-collected-signatures:lastProcessedBlock) = "" ]]; do - ((i++)) - if [ "$i" -gt 30 ] - then - exit -1 - fi - - echo "Sleeping..." - sleep 3 - done + - tokenbridge-orb/wait-for-oracle - run: name: Run the ui-e2e tests command: | @@ -196,7 +198,6 @@ jobs: node ./e2e-commons/scripts/blocks.js & cd ui-e2e; yarn mocha -g "NATIVE TO ERC" -b ./test.js workflows: - version: 2 tokenbridge: jobs: - initialize