dart-sass/.travis.yml
Jennifer Thakar 830bb3aab2
Move Node tests on Windows to Travis (#1063)
* Move Node tests on Windows to Travis

Appveyor is flaky and can't be restarted by all team members, so moving
everything to Travis is preferable if we can get it to work.

* Actually use latest stable Node

This should also workaround the issue with lts/* not working on
Windows.

* Use npm.cmd instead of raw npm on Windows

* Use p.prettyUri() for Node API tests

Co-authored-by: Natalie Weizenbaum <nweiz@google.com>
2020-09-08 09:23:46 -07:00

235 lines
9.0 KiB
YAML

## Testing
language: shell
env:
global:
- DART_CHANNEL=stable
- DART_VERSION=latest
# Only building master means that we don't run two builds for each pull request.
branches:
only:
- master
# Feature branches beginning with "feature."
- "/^feature\\..*/"
# Semantic version tags and legacy branches of the form "1.2.x".
- "/^\\d+\\.\\d+\\.(\\d+([+-].*)?|x)$/"
cache:
directories:
- $HOME/.pub-cache
# Install the Dart SDK.
before_install:
- tool/travis/use_dart.sh
- export PATH="$PATH:`pwd`/dart-sdk/bin";
- dart --version
jobs:
include:
## Testing
# Language specs, defined in sass/sass-spec. These need Ruby to run the spec
# runner.
- &specs
name: sass-spec | Dart stable | synchronous
language: ruby
# Work around an issue where bundler isn't installed correctly on Ruby 2.5.
# We should remove this, and the explicit "gem install bundler" line, once
# Travis uses Ruby 2.6 by default.
rvm: 2.6
install:
- export sass_spec_ref=`tool/travis/sass-spec-ref.sh`
- git init sass-spec
- git -C sass-spec fetch git://github.com/sass/sass-spec "$sass_spec_ref" --depth 1
- git -C sass-spec checkout FETCH_HEAD
- gem install bundler
- bundle install --gemfile=sass-spec/Gemfile --jobs=3 --retry=3
script: tool/travis/task/specs.sh
- <<: *specs
name: sass-spec | Dart dev | synchronous
env: DART_CHANNEL=dev
- <<: *specs
name: sass-spec | Dart stable | asynchronous
env: ASYNC=true
# Pure Dart unit tests, defined in test/.
- &dart-tests
name: Dart tests | Dart stable
install: pub run grinder pkg-standalone-dev
script: tool/travis/task/dart_tests.sh
- <<: *dart-tests
name: Dart tests | Dart dev
env: DART_CHANNEL=dev
- <<: *dart-tests
os: windows
env: DART_CHANNEL=stable
- <<: *dart-tests
os: osx
# Unit tests that use Node.js, defined in test/.
#
# The versions should be kept up-to-date with the latest LTS Node releases.
# They next need to be rotated April 2021. See
# https://github.com/nodejs/Release.
- &node-tests
name: Node tests | Dart stable | Node stable
language: node_js
node_js: node
install: pub run grinder before-test
script: tool/travis/task/node_tests.sh
- <<: *node-tests
name: Node tests | Dart stable | Node Dubnium
node_js: lts/dubnium
- <<: *node-tests
name: Node tests | Dart stable | Node Erbium
node_js: lts/erbium
- <<: *node-tests
os: windows
- <<: *node-tests
os: osx
- <<: *node-tests
name: Node tests | Dart dev | Node stable
env: DART_CHANNEL=dev
# Miscellaneous checks.
- name: static analysis
language: dart
dart_task: {dartanalyzer: --fatal-warnings --fatal-infos lib tool test}
# TODO(jathak): Re-enable this once dart-lang/dart_style#940 is fixed.
# - name: code formatting
# language: dart
# dart_task: dartfmt
## Deployment
# Sanity check before releasing anywhere.
- stage: sanity check
if: &deploy-if
(type IN (push, api)) AND (repo = sass/dart-sass) AND tag =~ ^\d+\.\d+\.\d+([+-].*)?$
script: pub run grinder sanity-check-before-release
# Deploy Linux releases to GitHub. Mac OS and Windows releases are deployed in
# a later stage so that we can build native snapshots on bots with the same
# operating system.
- stage: deploy 1
name: "GitHub: Linux"
if: *deploy-if
env: &github-env
- GITHUB_USER=sassbot
# GITHUB_TOKEN="..."
#
# Note that this overrides the read-only auth token that's set for all
# builds.
- secure: "jTN3v1KndVb29vWAIk4fnw9gcCIJ/6RWhUhk739GHdmsqWI85c8Ibjl3mwT4XYaOZv0KnfvcORFOpYCUkd4FcR7ihp5Dq44oE503IqBi55xvBct1lkan/5jE+KA/RkfvLcnkuHeV+gGJAYIde9lPPW8iTBfGbTmQPCsV3ZTcguXnt8gNc0P0KA6823Ubmim6bSSevUgK8uzospBqqKTqpedFZQBAW9DzsoMtNRhiR8da96L/AN3qixuqlJcraXVoqygNd70WW9LJuFXRFsJwDsyLmzRd4mbHcEqfu4z7Vvh0tqc4eQxvfJqal3wGe3/y15FlNNzGtn7jBa8XW7/hEBWDRWch8OsFSEwHP2cT5G9vOW6PswPTB6lJJViKAoxQLgjRfvnMcyqR+fgzGWKN5nC2cLgdV8R1zTrc8mReXuZclXZceP0Qkq1COf8zj52ip/P0FVuFLd99Wfy5BWmlgVu6xaX8j4/EblE0sT0KiH8Si8+ftUtQwiZE5oZnJ6vHzJwKO7C0uUEInStOr00ZzFQ2Jej3PB+yTdl5POCz9cHHSJpyUNvB55E8qsOZp7wKG9Md8we5IFs3WTSLrdhSJZ6xTawnWO0x08SYGr6Wym98wI7J/FyOD23X5AT1UwSIlflvpJLVBBKnKLQRdWrXofnv4NkmzlpBr2stBfBfpeA="
script: skip # Don't run tests
deploy:
provider: script
script: pub run grinder pkg-github-release pkg-github-linux
skip_cleanup: true # Don't clean up the Dart SDK.
# This causes the deploy to only be build when a tag is pushed. This
# is because the `tag` attribute in `if:` statements has a different
# understanding of the "current tag" than this, which uses the
# `TRAVIS_TAG` environment variable. `if:` statements check whether a
# tag exists that refers to the current commit, whereas `TRAVIS_TAG`
# checks whether the current build was caused by a tag.
#
# We check `if:` because it avoids unnecessary build steps, and
# `on: {tags: true}` ensures that we only deploy on the build caused
# by pushing a tag, not the build caused by pushing master.
on: {tags: true}
# Deploy to npm.
- name: npm
if: *deploy-if
env:
# NPM_TOKEN="..."
- secure: "pwOMlV/hUTYYKrdULkhM0pHKCjXR1uWAuBbfxMxWCPH/AGkW3CP/WED8p5/Q6B8Itzca6eYg85PnkzeLl4hK9ANnYrQsHutfszGyzcqqAeWWPXm3Bq6Rqt5XpA4JCSdZBPKOLZ7yGzMCPVRMAet4fvORRU6nFCTJcm/B1JZNIAWY5TnjgcjwLa77Eo4Bflv58CTA5FyngN7hAMIo2JaassmReRHxtyVBh631IYFBvmo8vmC0gruPY0axj9a/4+F1Nx2ChOAjji0SRMJP1FSp7zOXCG+VrcqXMW3KCfBu/70szcdDVXOYYyJpCeiP6vVtRgi+9zqin9wOATIklRPMTy/zVbT4r9kfA7+GFSfsfAQ7K79VbvJQHbxon3E5JnWANjZr3q+iicX+sElL6IngoSw8pXRUHVJD979WcPTcKX+dd2KKqDR0S+rG8d7ZgyjIggCSGsyxvuX0vd/VaPmZA/4+tVfSHYxCq3P3sncVX9raP41UNFW9KyEQzKfxTs6I4U5IffFcLZRRoP1uMSdiru9cIvVCX64UTk6+TTiPXRj4o84dG/NQkYoc3EhHsRL4E7SAq827Ya1gA8GLSCJidtvGPG16VimvgT372pHPZ+l9Pb5XkMnZ+dji3o37xYTSbRESOk+pnMwq3f4lQz6YFuI+EjbO5RYCs5IxHjgW8Ak="
script: skip
language: node_js
node_js: lts/*
deploy:
provider: script
script: pub run grinder pkg-npm-deploy
skip_cleanup: true
on: {tags: true}
# Deploy to pub.
- name: pub
if: *deploy-if
env:
# PUB_CREDENTIALS="..."
- secure: "L7p8nH1qhGbOdqXZSPJzaC4wv1Rf4gJUiPpy2e0pgkk78jFyaLJ4Vt6c/976hQxETZQ8q1mChj7xrgEI4d6rN+iBEDSdgCiV+toVVYCzX9gnzb8+a5qTBbRNLrcC4jPr5+6LPK+qklrAyYi56JCYI2CgCOxUzo/CHOk/nHbEWwxMoD5Ifzat3NXwyb/9RKHH/4YYBi2PRkBrIuGTvZi4VqyIJ7AJu8eCZYPD8e1ij5muLhTxgQvycIf6fkSBbhMoC/ULExkV3zFEgY1eU/UMdXPR68/qgne+q0ph4K5ArTgFoPAVVIDYv4CZfpx2NVEpluWz2OQ/Lr+VxTqAYMGDCEEreeTTTE26JFCquUwSypNBSo7jtAoMtFDrX3fwa0jt9lhkwTMlEQtLg3ykpABsn7E4nEYw6K3hAqjV5kJFdgNFqli83QpXXu9mfUtif7Wzlekiw6DuN7FKTr8VohaqlVgp5gSExp/zuFCOFQn3+LnzxZtFJbkiQw0Bbii4TBwrASrhvNcPE/CrCbq0OLrNYrJH8UiLsZGoz1iAuPyCvbpiD7eXrL4vodR73IGUBx2hKTbolP8EWseR/nw4InH50kc+jhDMaT+Lj34q+9Icv2Q4ICWsPky7NhLDJWvLntiExwkos4fPtmr5SuaV/dCVox1Qvkzg7NBoqihrdQC8Tak="
script: skip
deploy:
provider: script
script: pub run grinder pkg-pub-deploy
skip_cleanup: true
on: {tags: true}
# Deploy to Homebrew.
- name: Homebrew
if: *deploy-if
env: *github-env
script: skip
deploy:
provider: script
script: pub run grinder pkg-homebrew-update
skip_cleanup: true
on: {tags: true}
# Redeploy sass-lang.com.
- name: sass-lang.com
if: *deploy-if
env:
# HEROKU_TOKEN="..."
- secure: "DAc49oGWMLOk+q06zqRgKxrD+do8WAd8QM9Tq5TN25Rwfs8w1Y8Mt+7fqRymVRjsakFiCtVgAYF5/6GjgsH1DUaqkEmIBU6cz6nS6hLmXSOpjBxjiv+b4AGAZwsVK4DE+kxRBWjpHrZYJVN1h7322EnAgJ5i2GM6iCqP0rmY7/ptjzXuqUwFtr1abtLSf2s9+LCH3u7H4IOnNSLFjPTWBXptlLPIvi1j1OEILcDJs/YI1oWxtuQtI1arAMdG26TuuQc66xVdWrwxCC+kf3G3X2uXL6WcKtGEgqTxqKj+ru40R18syOI0BpPpk0AH9dHcQWtL+YDKIfy+T/5trfDZe/U7/3I66lB/ckNmRC60zUm934Q5C96suL09Rq5WyyiYnmd1Fbwwv2vL70bsc6flO+pEr9ErwNfJFn2JtVVELFOm0S5tAbmic85deSRRHRwPMjdJ0w5j/TK04Mvd2n40kKUv4rYVeqmjB7QtQ1l5dMK+hOnqYvrz6YjEK7VB3R4j3/op1y8tbMDXzzrkbVSDPJI1Bp5HeH9L4pOdVLJVpBXXPlO7F2e6oLaUSGwbWV9uGc/EVlbxImkbY7WC4KZM4WKvQeoMApwYaKvRcRYsQ1XhGSiURnNeoaZl++MkqQVhCc33kb6Ik8oy81nP1vLhWBHoNyjNsJXoe4EvBxxe+zw="
install: skip
script: skip
deploy:
provider: script
# Heroku doesn't have a public API endpoint for this yet, so we use the
# private endpoint instead.
script: tool/travis/deploy/heroku.sh
on: {tags: true}
# Deploy to Bazel. This is in a separate deploy stage because it needs to
# install the npm package.
- stage: deploy 2
name: Bazel
if: *deploy-if
env: *github-env
script: skip
language: node_js
node_js: lts/*
deploy:
provider: script
script: pub run grinder update-bazel
skip_cleanup: true
on: {tags: true}
- name: "GitHub: Mac OS"
if: *deploy-if
env: *github-env
script: skip
os: osx
deploy:
provider: script
script: pub run grinder pkg-github-macos
skip_cleanup: true
on: {tags: true}
- name: "GitHub: Windows"
if: *deploy-if
env: *github-env
script: skip
os: windows
deploy:
provider: script
script: pub run grinder pkg-github-windows
skip_cleanup: true
on: {tags: true}