forked from sass/dart-sass
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
233 lines (212 loc) · 9.03 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
## 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:https://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.
#
# 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 Dubnium
node_js: lts/dubnium
- <<: *node-tests
name: Node tests | Dart stable | Node Erbium
node_js: lts/erbium
- <<: *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: "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
deploy:
provider: script
script: pub run grinder pkg-github-windows
skip_cleanup: true
on: {tags: true}