瀏覽代碼

ci: use a fancy matrix (#1709)

* ci: try a fancy matrix

* ci: separate lint build

* build: update some dependencies for node 12 compat

* ci: do typing checks as part of LINT run

* ci: conditionally run ACCEPTANCE and WEBSITE jobs

* ci: is sauce checking domain names or what?

* ci: only build the website when we actually deploy it

* Revert "ci: is sauce checking domain names or what?"

This reverts commit a29fc7ecf999392d793e8eee98956f691c04b71f.

* ci: i might have misinterpreted this config?

* ci: rename acceptance → endtoend for consistency

* test: may need to update element reference after click?

* ci: try to only use sauce connect for endtoend runs

* ci: fix sauce_connect property name

* ci: comment the travis config a bit [skip ci]
Renée Kooi 5 年之前
父節點
當前提交
54c347dfb7
共有 5 個文件被更改,包括 105 次插入44 次删除
  1. 69 20
      .travis.yml
  2. 2 0
      bin/travis-deploy
  3. 10 9
      test/endtoend/create-react-app/test.js
  4. 0 1
      test/endtoend/wdio.remote.conf.js
  5. 24 14
      website/package-lock.json

+ 69 - 20
.travis.yml

@@ -1,17 +1,75 @@
 language: node_js
-node_js:
-- "10.15.3"
+
+# Addons configuration that can be referenced by each matrix entry,
+# this way we can easily enable Sauce Connect for end-to-end tests only.
+.apt: &APT
+  sources:
+  - ubuntu-toolchain-r-test
+  packages:
+  - g++-4.8
+.hosts: &HOSTS
+  - companion.test
+.sauce_connect: &SAUCE
+  username:
+    secure: nAMJ/d1fm9urTYsQ+1uqj6Jjf71J8rzwYBSZbTDAeUEZzAdvGc0a9H3PYWM4pnUDPo5s1c9MMetXi2XNdUbXgMKHbEnePZ2mJamqFtXMmpG8pgFmMqj+btMd7Yybt070tRsn4Vy0uBSi2H/en7F3j+grABJV+SAXqWkSB7CU1fZaN/u0DpoGBNj1ZNwkYCIhpLueYJTPRWBOodMAarXuFv5+7KFOKuZM3tF/JjsMNSSaDgTkz13BZnbX6vNPxGJJNJcyJGSaXrVW8hh1Zmvnk/XdiLy+vt7Wz1wz3A9ebiFDuydo5AAkxrLFsCJ5nGEqLg3bkr6NaTRpbM84ZT3i1FQMTdKP6OHHqwAeBscB6BkyhZhzvsFtl2YRBNK9mA3OtOYvBmTkFkNqvrPQlfu7cFtyG5+AUfSCiTTgS/vWIwoqSVAXaOEqN8Fp54ecUdkzCTttl3gXteZzNLRYvyQcFpoJb6E+dS8qAW0OFOteiwKVuPCh3nGUzBP13bRo1i9UAX7ZCTlpjinkxE8ryzbToo6ZcVQMBAkKhaw/x8GzOtfm5rgYMeQzGEoBJNfr7qqfs7JMxAIEMYjrTL9PXVOp/R8F3FdsqbV70jSyfsxMSMkwSWFRmVslG8+Djy8P3LnckGy1FEbMHnH8GZHZg+hbBzN8Be1/1fV0oRRAr939WRc=
+  access_key:
+    secure: OY3oWwiJghfty9wSPVvlhirvFGxPHDdIRuVkzAv6j7C/hj2BWYAP/UHrwdQ9XiYisHi/B5mGeyRVlrAf0MNGrG84rTDUbTWZbmktfuxl7A+Y6c0czk+s4SdhOiANG5b3tFl5wKq8h7uhrWH5/jWoKQ2Fz1VDCqxTvvZQbo41jSBhi7TBia626hxEePzdaiuw6HhGFZtfaoVs/FX30ylz8WDNrBjwCynjxsT52BaQrVvgEhuyzlOpI69YkZBPOq4fc3KiZ2YR43gLTx8K+sYCE9yJxdg1xT/UAawEhmedU83nyBZVo4rr7+03AixIxtI28MUCfBMlcsGwBxcKEKY/IWcp9UkPCq6+zALQoncV478tP21eYvlmxSFhYCrv+WEQlN+BcNjr4OJlmmFDbCVaF7r9qLeQPImU0+9iJU3OjrW7lpfLxORpGDEr2Nx6awKkIJCxNyK9weefeNo6Fz3V1kkyZ/7yWFeniJnRUCbahrB2XgzxIE+W307s1Qs4fm6JK7hVLTtG4fBzjChmAyGIzu744ws9WqmjvkC9D7OfnuXqanv/VcBFqPiudInerv7NL8FketUC+fxe/7XJfcxdaDGBjk8Kq7zXDohGRGymUXEoMDNJsKkMMlaKzdf7tgqdhsRJoH9NCVqrDXuG5al0UtrDP5RS7qfoxUunJmNFhlg=
+  no_ssl_bump_domains: companion.test
+
+matrix:
+  include:
+    - node_js: 'stable'
+      env: UNIT=true
+      addons:
+        apt: *APT
+    - node_js: 10
+      env: UNIT=true
+      addons:
+        apt: *APT
+    - node_js: 10
+      env: LINT=true
+      addons:
+        apt: *APT
+    - node_js: 10
+      env: BUILD=true
+      addons:
+        apt: *APT
+    - node_js: 10
+      env: COMPANION=true
+      addons:
+        apt: *APT
+    # Build the website when things are merged to master
+    - node_js: 10
+      env: WEBSITE=true
+      if: branch = master AND type = push
+      addons:
+        apt: *APT
+    # Run e2e tests on branch builds, not PRs
+    - node_js: 10
+      env: ENDTOEND=true
+      if: type = push
+      addons:
+        apt: *APT
+        hosts: *HOSTS
+        sauce_connect: *SAUCE
 before_install:
 - nvm install-latest-npm
 install:
 - npm install
 - npm run bootstrap -- --no-ci
 script:
-- npm run build
-- npm run test
-- if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then npm run test:endtoend; fi
+- 'if [ -n "${LINT-}" ]; then npm run lint; fi'
+- 'if [ -n "${LINT-}" ]; then npm run test:type; fi'
+# only install website deps when we're going to deploy;
+# note this should be removed when the lerna-link-convert switch happens
+- 'if [ -n "${WEBSITE-}" ]; then npm run web:install; fi'
+- 'if [ -n "${UNIT-}" ]; then npm run test:unit; fi'
+- 'if [ -n "${COMPANION-}" ]; then npm run test:companion; fi'
+- 'if [ -n "${ENDTOEND-}" ] && [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then npm run test:endtoend; fi'
+- 'if [ -n "${BUILD-}" ]; then npm run build; fi'
+# Publish release commits to CDN after a `BUILD=true` run, because we have all the files now
 - |
-  if [ "${TRAVIS_PULL_REQUEST}" = "false" ] &&\
+  if [ -n "${BUILD-}" ] && [ "${TRAVIS_PULL_REQUEST}" = "false" ] &&\
      [[ "${TRAVIS_COMMIT_MESSAGE}" =~ ^Release* ]]; then
     npm run uploadcdn uppy
     npm run uploadcdn @uppy/robodog
@@ -23,21 +81,8 @@ cache:
   - "~/.npm"
   - "~/.transloadit"
 services:
+# Only required for companion builds, but it's fast so who cares!
 - docker
-addons:
-  hosts:
-    - companion.test
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - g++-4.8
-  sauce_connect:
-    username:
-      secure: nAMJ/d1fm9urTYsQ+1uqj6Jjf71J8rzwYBSZbTDAeUEZzAdvGc0a9H3PYWM4pnUDPo5s1c9MMetXi2XNdUbXgMKHbEnePZ2mJamqFtXMmpG8pgFmMqj+btMd7Yybt070tRsn4Vy0uBSi2H/en7F3j+grABJV+SAXqWkSB7CU1fZaN/u0DpoGBNj1ZNwkYCIhpLueYJTPRWBOodMAarXuFv5+7KFOKuZM3tF/JjsMNSSaDgTkz13BZnbX6vNPxGJJNJcyJGSaXrVW8hh1Zmvnk/XdiLy+vt7Wz1wz3A9ebiFDuydo5AAkxrLFsCJ5nGEqLg3bkr6NaTRpbM84ZT3i1FQMTdKP6OHHqwAeBscB6BkyhZhzvsFtl2YRBNK9mA3OtOYvBmTkFkNqvrPQlfu7cFtyG5+AUfSCiTTgS/vWIwoqSVAXaOEqN8Fp54ecUdkzCTttl3gXteZzNLRYvyQcFpoJb6E+dS8qAW0OFOteiwKVuPCh3nGUzBP13bRo1i9UAX7ZCTlpjinkxE8ryzbToo6ZcVQMBAkKhaw/x8GzOtfm5rgYMeQzGEoBJNfr7qqfs7JMxAIEMYjrTL9PXVOp/R8F3FdsqbV70jSyfsxMSMkwSWFRmVslG8+Djy8P3LnckGy1FEbMHnH8GZHZg+hbBzN8Be1/1fV0oRRAr939WRc=
-    access_key:
-      secure: OY3oWwiJghfty9wSPVvlhirvFGxPHDdIRuVkzAv6j7C/hj2BWYAP/UHrwdQ9XiYisHi/B5mGeyRVlrAf0MNGrG84rTDUbTWZbmktfuxl7A+Y6c0czk+s4SdhOiANG5b3tFl5wKq8h7uhrWH5/jWoKQ2Fz1VDCqxTvvZQbo41jSBhi7TBia626hxEePzdaiuw6HhGFZtfaoVs/FX30ylz8WDNrBjwCynjxsT52BaQrVvgEhuyzlOpI69YkZBPOq4fc3KiZ2YR43gLTx8K+sYCE9yJxdg1xT/UAawEhmedU83nyBZVo4rr7+03AixIxtI28MUCfBMlcsGwBxcKEKY/IWcp9UkPCq6+zALQoncV478tP21eYvlmxSFhYCrv+WEQlN+BcNjr4OJlmmFDbCVaF7r9qLeQPImU0+9iJU3OjrW7lpfLxORpGDEr2Nx6awKkIJCxNyK9weefeNo6Fz3V1kkyZ/7yWFeniJnRUCbahrB2XgzxIE+W307s1Qs4fm6JK7hVLTtG4fBzjChmAyGIzu744ws9WqmjvkC9D7OfnuXqanv/VcBFqPiudInerv7NL8FketUC+fxe/7XJfcxdaDGBjk8Kq7zXDohGRGymUXEoMDNJsKkMMlaKzdf7tgqdhsRJoH9NCVqrDXuG5al0UtrDP5RS7qfoxUunJmNFhlg=
-    no_ssl_bump_domains: companion.test
 env:
   global:
   - CXX=g++-4.8
@@ -67,14 +112,18 @@ env:
 notifications:
   slack:
     secure: L3iQQE8sZ0ik1Z26gPoNMiIam9EOEwYhraHCY60Jk/wmfH6SW/727yKXpgcb/yayx37rUZplvoO7H8e05ISxTJKSepEeqbBUIBQs48S8hr+FHk0VPtpP4HGxqaITRLm+mI1coPRvfISxzrB8d240oup6muhC9Ws4/LXi6v8miyIOs2zoYmGxd56TrUeON3UYlKt6dMava0V4bugARzrafN/tfyI9ccqbHzQLBspQvBI61DzZ5I2vnWpkjfWgIHz9Fl4VzXHqMXwjuTUEu8ibA12b3dHZiJEAoqeb9Oj9QcLPbstPLhlNTZZaOrfiFtwLctI2rFh37slDpAfk5idv3ycxcoG5rbCxgyg5i6dpQqrqHxnyglgHg2/nZ+YA5okeS7nJJNtU/4S6AFRWOUUWMVVY0VBEV+8w+uurl0PDy80RUY3uyK64qAgQ8U0M81/Ys1oyWyn78TqHcbby7V2Ws5I9Yakrq8D+mdfsWYCio8F6LXHSwJ0mt2FanJtdDvpPk9sAwsXZN0n8xhELt5TiRp3bzVIQ0IPUgF54dTG9/zWRvC1P4TFaFU/2fg73ZEUC5aWJoFMnLSZjbZvp5gwpCVd0MjSBk80nF9dHYcavIgJ0wMGI3BMb8Nn6+T11Gw/ycr7OGU4NMkj7i8vSFgKF74piWZyiNW8orkMN6XZgM+o=
+# Travis docs: Note that pull request builds skip deployment step altogether.
+# https://docs.travis-ci.com/user/deployment/#Conditional-Releases-with-on
 deploy:
 - provider: script
   skip_cleanup: true
   script: bin/travis-deploy
   on:
     branch: master
+    env: $WEBSITE = true
 - provider: script
   skip_cleanup: true
   script: packages/@uppy/companion/infra/kube/gcloud-deploy.sh
   on:
     branch: master
+    env: $COMPANION = true

+ 2 - 0
bin/travis-deploy

@@ -4,6 +4,8 @@ set -o errexit
 set -o nounset
 # set -o xtrace
 
+if [ -n "${WEBSITE-}" ]; then exit 0; fi
+
 git config --global user.name 'Uppy Bot'
 git config --global user.email 'uppybot@uppy.io'
 

+ 10 - 9
test/endtoend/create-react-app/test.js

@@ -37,19 +37,20 @@ describe('React: Dashboard', () => {
     const el = await $('#inline-dashboard .uppy-Dashboard-inner')
     await el.waitForExist()
 
-    const toggle = await $('#inline-dashboard-toggle')
+    async function toggle () {
+      const button = await $('#inline-dashboard-toggle')
+      await button.click()
+      await browser.pause(250)
+    }
+
     // close
-    await toggle.click()
-    await browser.pause(250)
+    await toggle()
     // open
-    await toggle.click()
-    await browser.pause(250)
+    await toggle()
     // close
-    await toggle.click()
-    await browser.pause(250)
+    await toggle()
     // open
-    await toggle.click()
-    await browser.pause(250)
+    await toggle()
 
     // open GDrive panel
     const gdriveButton = await $('.uppy-DashboardTab:nth-child(2) button')

+ 0 - 1
test/endtoend/wdio.remote.conf.js

@@ -51,7 +51,6 @@ exports.config = {
     ...base.config.services,
     'sauce'
   ],
-  sauceConnect: true,
   user: process.env.SAUCE_USERNAME,
   key: process.env.SAUCE_ACCESS_KEY
 }

+ 24 - 14
website/package-lock.json

@@ -3870,9 +3870,9 @@
       }
     },
     "fstream": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
-      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
       "requires": {
         "graceful-fs": "^4.1.2",
         "inherits": "~2.0.0",
@@ -5885,9 +5885,9 @@
       }
     },
     "node-sass-magic-importer": {
-      "version": "5.3.1",
-      "resolved": "https://registry.npmjs.org/node-sass-magic-importer/-/node-sass-magic-importer-5.3.1.tgz",
-      "integrity": "sha512-YV01gIyhU5Sw9XPW0dA6ntnpE8VHtpX7ojIAJDFJseLFcHOm8d6CstmGP8EzQu2fGbIelr5Y3KPDFQh6t4Ml9w==",
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/node-sass-magic-importer/-/node-sass-magic-importer-5.3.2.tgz",
+      "integrity": "sha512-T3wTUdUoXQE3QN+EsyPpUXRI1Gj1lEsrySQ9Kzlzi15QGKi+uRa9fmvkcSy2y3BKgoj//7Mt9+s+7p0poMpg6Q==",
       "requires": {
         "css-node-extract": "^2.1.3",
         "css-selector-extract": "^3.3.6",
@@ -5895,7 +5895,17 @@
         "glob": "^7.1.3",
         "object-hash": "^1.3.1",
         "postcss-scss": "^2.0.0",
-        "resolve": "^1.10.0"
+        "resolve": "^1.10.1"
+      },
+      "dependencies": {
+        "resolve": {
+          "version": "1.11.0",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
+          "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
+          "requires": {
+            "path-parse": "^1.0.6"
+          }
+        }
       }
     },
     "nopt": {
@@ -7578,9 +7588,9 @@
       },
       "dependencies": {
         "postcss": {
-          "version": "7.0.14",
-          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz",
-          "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==",
+          "version": "7.0.17",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz",
+          "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==",
           "requires": {
             "chalk": "^2.4.2",
             "source-map": "^0.6.1",
@@ -9401,12 +9411,12 @@
       }
     },
     "tar": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
-      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+      "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
       "requires": {
         "block-stream": "*",
-        "fstream": "^1.0.2",
+        "fstream": "^1.0.12",
         "inherits": "2"
       }
     },