stepback: true ignore: - "*.md" - ".github/*" # github CODEOWNERS configuration variables: - &node NODEJS_VERSION: 8.11.3 - &drivers CHROMEDRIVER_URL: https://chromedriver.storage.googleapis.com/2.40/chromedriver_linux64.zip GECKODRIVER_URL: https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz functions: preamble: - *get-project - *fetch-node - *install get-project: &get-project command: git.get_project type: setup params: directory: lobster fetch-node: &fetch-node command: shell.exec type: setup params: working_dir: . shell: bash script: | set -ex if [ -d "nodejs" ]; then exit 0 fi curl --silent --show-error --fail --location --retry 3 --output nodejs.tar.xz https://nodejs.org/dist/v${NODEJS_VERSION}/node-v${NODEJS_VERSION}-linux-x64.tar.xz tar xf nodejs.tar.xz mv node-v* nodejs chmod +x nodejs/bin/* install: &install command: shell.exec type: setup params: working_dir: lobster shell: bash script: | set -ex export PATH="${workdir}/nodejs/bin:$PATH" export CI=true export NPM_CONFIG_CACHE="./.node_cache" npm install || npm install || npm install mkdir build npm: command: shell.exec type: test params: working_dir: lobster shell: bash script: | set -ex export PATH="${workdir}/nodejs/bin:$PATH" export CI=true export NPM_CONFIG_CACHE="./.node_cache" npm ${cmd} results-attach: command: attach.xunit_results params: files: - "./lobster/build/*-junit.xml" results-clean: command: shell.exec type: test params: working_dir: lobster shell: bash continue_on_err: true ignore_standard_error: true silent: true script: rm build/*-junit.xml chromedriver: command: shell.exec type: setup params: shell: bash script: | set -ex export PATH="/opt/google/chrome:$PWD:${workdir}/nodejs/bin:$PATH" which chrome mkdir driver cd driver curl --silent --show-error --fail --location -o chromedriver.zip ${CHROMEDRIVER_URL} --retry 3 unzip chromedriver.zip rm chromedriver.zip geckodriver: command: shell.exec type: setup params: shell: bash script: | set -ex which firefox mkdir driver cd driver curl -L --silent --show-error --fail --location -o geckodriver.tar.gz ${GECKODRIVER_URL} --retry 3 tar xf geckodriver.tar.gz rm geckodriver.tar.gz e2e: command: shell.exec params: working_dir: lobster shell: bash script: | set -ex export PATH="/opt/google/chrome:${workdir}/driver:${workdir}/nodejs/bin:$PATH" export CI=true export NPM_CONFIG_CACHE="./.node_cache" export IS_VM=true npm run test:e2e -- --browser ${browser} killallthethings: command: shell.exec params: working_dir: lobster shell: bash silent: true ignore_standard_error: true ignore_standard_out: true script: | # do not set -ex this! killall node killall npm killall chromedriver killall chrome killall geckodriver killall firefox post: - command: shell.exec params: working_dir: lobster shell: bash continue_on_err: true ignore_standard_error: true silent: true script: | cat ./.node_cache/_logs/*log rm ./.node_cache/_logs/*log - func: results-attach - func: results-clean - func: killallthethings tasks: - name: dist commands: - func: preamble - func: npm vars: cmd: run-script build - name: lint commands: - func: preamble - func: npm vars: cmd: run-script lint - name: flow commands: - func: preamble - func: npm vars: cmd: run-script flow -- check --temp-dir=.node_cache/_logs - name: generate-tests commands: - func: preamble - func: npm vars: cmd: run-script generate-tasks - command: generate.tasks params: files: - lobster/build/.tasks.json - name: e2e-chrome depends_on: - name: dist variant: ubuntu1604 commands: - func: preamble - func: chromedriver - func: npm vars: cmd: run-script build - func: e2e vars: browser: chrome - name: e2e-firefox depends_on: - name: dist variant: ubuntu1604 commands: - func: preamble - func: geckodriver - func: npm vars: cmd: run-script build - func: e2e vars: browser: firefox buildvariants: - name: ubuntu1604 display_name: Ubuntu 16.04 expansions: <<: *node run_on: - ubuntu1604-test tasks: - name: "dist" - name: "lint" - name: "generate-tests" - name: "flow" - name: ubuntu1804 display_name: Ubuntu 18.04 (e2e) expansions: <<: *node <<: *drivers run_on: - ubuntu1804-test tasks: - name: "e2e-chrome" - name: "e2e-firefox"