## 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 December 2019. See # https://github.com/nodejs/Release. # # TODO(nweiz): Run Node tests on Windows when [this issue][] is fixed. # # [this issue]: https://travis-ci.community/t/windows-instances-hanging-before-install/250/28. - &node-tests name: Node tests | Dart stable | Node stable language: node_js node_js: lts/* install: pub run grinder before-test script: tool/travis/task/node_tests.sh - <<: *node-tests name: Node tests | Dart stable | Node Carbon node_js: lts/carbon - <<: *node-tests name: Node tests | Dart stable | Node Dubnium node_js: lts/dubnium - <<: *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} - 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: "JUBfLfJr+5RIvxkk+1qqtyJxaHq2A9x78G9L9bUTjBD3C7XJOmJtt8u+pAgperL+fIfrlcAVzmYTyRGLj+0PL4VcxMTrmn604FIn+ffcgatylYKtPdpJq5dnXQ4U0+ROaZnq1mPZeUI7OHwRlVcQStIWkPxk7Eno+ZqxFyziLZ4wxo7l809iCAbhJttCfWPupyHX75cHhBMFaPEk9LYUrxQURyE0GKMQgDKHY/ehe87gyuKt3o79gi7/E0chQApv1jeua4xz5tyNBNQH/nwuJmmBCab/IdgTLn2vj4qjT1ENeB5PINCfFOT98IPVREOLbY+jiGRVwQFJbC55mOBQH21mfIt/XLhcjYHe80X4PyYhtJJ2GDadcyrzppZmHpEDHzfR8B29LEKhNM1VfUTZ8I9+TudXW8uMjtqCsXyi8bKZLsuZNNSlWVh1qIR+FXMDTrYNOnTcvgzv5yi6fbD10Uf8k1G0pHtKQiFainWatmJhNIMtGoYe7LRAB0Rj7OGWDMv/PHy/+Z7BKIj3b0LefVN1xpeuy3mMhMq9g5Q8HI8yk37DNmZQ9kwgHpIUk/t2xAdwzZ0XMSDFW9iHV48/iHwi0t5M2RCFRnI8ZaUNU5Z8QLUPHnazCucIvR4N8ns1yFwDgNQ5CzlBFrV70EwgqZhjjToAOhnIXpHMWr3AVAw=" 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 deploy: provider: script script: pub run grinder pkg-github-windows skip_cleanup: true on: {tags: true}