]> git.lizzy.rs Git - rust.git/blob - .travis.yml
Rollup merge of #44531 - QuietMisdreavus:bump-gcc, r=alexcrichton
[rust.git] / .travis.yml
1 language: shell
2 sudo: required
3 dist: trusty
4 services:
5   - docker
6
7 git:
8   depth: 1
9   submodules: false
10
11 matrix:
12   fast_finish: true
13   include:
14     # Images used in testing PR and try-build should be run first.
15     - env: IMAGE=x86_64-gnu-llvm-3.7 ALLOW_PR=1 RUST_BACKTRACE=1
16     - env: IMAGE=dist-x86_64-linux DEPLOY=1 ALLOW_TRY=1
17
18     # "alternate" deployments, these are "nightlies" but don't have assertions
19     # turned on, they're deployed to a different location primarily for projects
20     # which are stuck on nightly and don't want llvm assertions in the artifacts
21     # that they use.
22     - env: IMAGE=dist-x86_64-linux DEPLOY_ALT=1
23     - env: >
24         RUST_CHECK_TARGET=dist
25         RUST_CONFIGURE_ARGS="--enable-extended --enable-profiler"
26         SRC=.
27         DEPLOY_ALT=1
28         RUSTC_RETRY_LINKER_ON_SEGFAULT=1
29         SCCACHE_ERROR_LOG=/tmp/sccache.log
30         MACOSX_DEPLOYMENT_TARGET=10.7
31         NO_LLVM_ASSERTIONS=1
32       os: osx
33       osx_image: xcode7
34
35     # macOS builders. These are placed near the beginning because they are very
36     # slow to run.
37
38     # OSX builders running tests, these run the full test suite.
39     #
40     # Note that the compiler is compiled to target 10.8 here because the Xcode
41     # version that we're using, 8.2, cannot compile LLVM for OSX 10.7.
42     - env: >
43         RUST_CHECK_TARGET=check
44         RUST_CONFIGURE_ARGS="--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler"
45         SRC=.
46         RUSTC_RETRY_LINKER_ON_SEGFAULT=1
47         SCCACHE_ERROR_LOG=/tmp/sccache.log
48         MACOSX_DEPLOYMENT_TARGET=10.8
49         MACOSX_STD_DEPLOYMENT_TARGET=10.7
50         NO_LLVM_ASSERTIONS=1
51       os: osx
52       osx_image: xcode8.2
53     - env: >
54         RUST_CHECK_TARGET=check
55         RUST_CONFIGURE_ARGS=--build=i686-apple-darwin
56         SRC=.
57         RUSTC_RETRY_LINKER_ON_SEGFAULT=1
58         SCCACHE_ERROR_LOG=/tmp/sccache.log
59         MACOSX_DEPLOYMENT_TARGET=10.8
60         MACOSX_STD_DEPLOYMENT_TARGET=10.7
61         NO_LLVM_ASSERTIONS=1
62       os: osx
63       osx_image: xcode8.2
64
65     # OSX builders producing releases. These do not run the full test suite and
66     # just produce a bunch of artifacts.
67     #
68     # Note that these are running in the `xcode7` image instead of the
69     # `xcode8.2` image as above. That's because we want to build releases for
70     # OSX 10.7 and `xcode7` is the latest Xcode able to compile LLVM for 10.7.
71     - env: >
72         RUST_CHECK_TARGET=dist
73         RUST_CONFIGURE_ARGS="--build=i686-apple-darwin --enable-extended --enable-profiler"
74         SRC=.
75         DEPLOY=1
76         RUSTC_RETRY_LINKER_ON_SEGFAULT=1
77         SCCACHE_ERROR_LOG=/tmp/sccache.log
78         MACOSX_DEPLOYMENT_TARGET=10.7
79         NO_LLVM_ASSERTIONS=1
80       os: osx
81       osx_image: xcode7
82     - env: >
83         RUST_CHECK_TARGET=dist
84         RUST_CONFIGURE_ARGS="--target=aarch64-apple-ios,armv7-apple-ios,armv7s-apple-ios,i386-apple-ios,x86_64-apple-ios --enable-extended --enable-sanitizers --enable-profiler"
85         SRC=.
86         DEPLOY=1
87         RUSTC_RETRY_LINKER_ON_SEGFAULT=1
88         SCCACHE_ERROR_LOG=/tmp/sccache.log
89         MACOSX_DEPLOYMENT_TARGET=10.7
90         NO_LLVM_ASSERTIONS=1
91       os: osx
92       osx_image: xcode7
93
94     # Linux builders, remaining docker images
95     - env: IMAGE=arm-android
96     - env: IMAGE=armhf-gnu
97     - env: IMAGE=cross DEPLOY=1
98     - env: IMAGE=dist-aarch64-linux DEPLOY=1
99     - env: IMAGE=dist-android DEPLOY=1
100     - env: IMAGE=dist-arm-linux DEPLOY=1
101     - env: IMAGE=dist-armhf-linux DEPLOY=1
102     - env: IMAGE=dist-armv7-linux DEPLOY=1
103     - env: IMAGE=dist-fuchsia DEPLOY=1
104     - env: IMAGE=dist-i586-gnu-i686-musl DEPLOY=1
105     - env: IMAGE=dist-i686-freebsd DEPLOY=1
106     - env: IMAGE=dist-i686-linux DEPLOY=1
107     - env: IMAGE=dist-mips-linux DEPLOY=1
108     - env: IMAGE=dist-mips64-linux DEPLOY=1
109     - env: IMAGE=dist-mips64el-linux DEPLOY=1
110     - env: IMAGE=dist-mipsel-linux DEPLOY=1
111     - env: IMAGE=dist-powerpc-linux DEPLOY=1
112     - env: IMAGE=dist-powerpc64-linux DEPLOY=1
113     - env: IMAGE=dist-powerpc64le-linux DEPLOY=1
114     - env: IMAGE=dist-s390x-linux DEPLOY=1
115     - env: IMAGE=dist-x86_64-freebsd DEPLOY=1
116     - env: IMAGE=dist-x86_64-musl DEPLOY=1
117     - env: IMAGE=dist-x86_64-netbsd DEPLOY=1
118     - env: IMAGE=asmjs
119     - env: IMAGE=i686-gnu
120     - env: IMAGE=i686-gnu-nopt
121     # - env: IMAGE=wasm32 issue 42646
122     - env: IMAGE=x86_64-gnu
123     - env: IMAGE=x86_64-gnu-full-bootstrap
124     - env: IMAGE=x86_64-gnu-aux
125     - env: IMAGE=x86_64-gnu-debug
126     - env: IMAGE=x86_64-gnu-nopt
127     - env: IMAGE=x86_64-gnu-distcheck
128     - env: IMAGE=x86_64-gnu-incremental
129
130 env:
131   global:
132     - SCCACHE_BUCKET=rust-lang-ci-sccache
133     - AWS_ACCESS_KEY_ID=AKIAJAMV3QAMMA6AXHFQ
134     # AWS_SECRET_ACCESS_KEY=...
135     - secure: "j96XxTVOSUf4s4r4htIxn/fvIa5DWbMgLqWl7r8z2QfgUwscmkMXAwXuFNc7s7bGTpV/+CgDiMFFM6BAFLGKutytIF6oA02s9b+usQYnM0th7YQ2AIgm9GtMTJCJp4AoyfFmh8F2faUICBZlfVLUJ34udHEe35vOklix+0k4WDo="
136
137 before_install:
138   # If we are building a pull request, do the build if $ALLOW_PR == 1
139   # Otherwise, do the build if we are on the auto branch, or the try branch and $ALLOW_TRY == 1
140   - >
141     if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
142         if [[ "$ALLOW_PR" == "1" ]]; then
143             export SKIP_BUILD=false;
144         else
145             export SKIP_BUILD=true;
146         fi;
147     elif [[ "$TRAVIS_BRANCH" == "auto" || ( "$ALLOW_TRY" == "1" && "$TRAVIS_BRANCH" == "try" ) ]]; then
148         export SKIP_BUILD=false;
149     else
150         export SKIP_BUILD=true;
151     fi
152   - >
153     if [[ "$SKIP_BUILD" == false ]]; then
154       zcat $HOME/docker/rust-ci.tar.gz | docker load || true
155     fi
156   - mkdir -p $HOME/rustsrc
157
158 install:
159   - >
160     if [[ "$SKIP_BUILD" == true ]]; then
161       echo echo skipping, not a full build > $HOME/stamp &&
162         chmod +x $HOME/stamp &&
163         export PATH=$PATH:$HOME;
164     else
165       case "$TRAVIS_OS_NAME" in
166         linux)
167           travis_retry curl -fo $HOME/stamp https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-03-17-stamp-x86_64-unknown-linux-musl &&
168             chmod +x $HOME/stamp &&
169             export PATH=$PATH:$HOME
170           ;;
171         osx)
172           if [[ "$RUST_CHECK_TARGET" == dist ]]; then
173             travis_retry brew update &&
174             travis_retry brew install xz;
175           fi &&
176           travis_retry curl -fo /usr/local/bin/sccache https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-05-12-sccache-x86_64-apple-darwin &&
177             chmod +x /usr/local/bin/sccache &&
178           travis_retry curl -fo /usr/local/bin/stamp https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-03-17-stamp-x86_64-apple-darwin &&
179             chmod +x /usr/local/bin/stamp
180           ;;
181       esac
182     fi
183
184 before_script:
185   - >
186       echo "#### Disk usage before running script:";
187       df -h;
188       du . | sort -nr | head -n100
189   - >
190       RUN_SCRIPT="src/ci/init_repo.sh . $HOME/rustsrc";
191       if [ "$TRAVIS_OS_NAME" = "osx" ]; then
192           export RUN_SCRIPT="$RUN_SCRIPT && src/ci/run.sh";
193       else
194           export RUN_SCRIPT="$RUN_SCRIPT && src/ci/docker/run.sh $IMAGE";
195       fi
196
197 # Log time information from this machine and an external machine for insight into possible
198 # clock drift. Timezones don't matter since relative deltas give all the necessary info.
199 script:
200   - >
201       date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
202   - stamp sh -x -c "$RUN_SCRIPT"
203   - >
204       date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
205
206 after_success:
207   - >
208       echo "#### Build successful; Disk usage after running script:";
209       df -h;
210       du . | sort -nr | head -n100
211
212 after_failure:
213   - >
214       echo "#### Build failed; Disk usage after running script:";
215       df -h;
216       du . | sort -nr | head -n100
217
218   # One of these is the linux sccache log, one is the OSX sccache log. Instead
219   # of worrying about what system we are just cat both. One of these commands
220   # will fail but that's ok, they'll both get executed.
221   - cat obj/tmp/sccache.log
222   - cat /tmp/sccache.log
223
224   # Random attempt at debugging currently. Just poking around in here to see if
225   # anything shows up.
226   - ls $HOME/Library/Logs/DiagnosticReports/
227
228   # attempt to debug anything killed by the oom killer on linux, just to see if
229   # it happened
230   - dmesg | grep -i kill
231
232 # Save tagged docker images we created and load them if they're available
233 # Travis saves caches whether the build failed or not, nuke rustsrc if
234 # the failure was while updating it (as it may be in a bad state)
235 # https://github.com/travis-ci/travis-ci/issues/4472
236 before_cache:
237   - docker history -q rust-ci |
238     grep -v missing |
239     xargs docker save |
240     gzip > $HOME/docker/rust-ci.tar.gz
241
242 notifications:
243   email: false
244
245 cache:
246   directories:
247     - $HOME/docker
248
249 before_deploy:
250   - mkdir -p deploy/$TRAVIS_COMMIT
251   - >
252       if [ "$TRAVIS_OS_NAME" == "osx" ]; then
253           rm -rf build/dist/doc &&
254           cp -r build/dist/* deploy/$TRAVIS_COMMIT;
255       else
256           rm -rf obj/build/dist/doc &&
257           cp -r obj/build/dist/* deploy/$TRAVIS_COMMIT;
258       fi
259
260 deploy:
261   - provider: s3
262     bucket: rust-lang-ci
263     skip_cleanup: true
264     local_dir: deploy
265     upload_dir: rustc-builds
266     acl: public_read
267     region: us-east-1
268     access_key_id: AKIAJVBODR3IA4O72THQ
269     secret_access_key:
270       secure: "kUGd3t7JcVWFESgIlzvsM8viZgCA9Encs3creW0xLJaLSeI1iVjlJK4h/2/nO6y224AFrh/GUfsNr4/4AlxPuYb8OU5oC5Lv+Ff2JiRDYtuNpyQSKAQp+bRYytWMtrmhja91h118Mbm90cUfcLPwkdiINgJNTXhPKg5Cqu3VYn0="
271     on:
272       branch: auto
273       condition: $DEPLOY = 1
274
275   - provider: s3
276     bucket: rust-lang-ci
277     skip_cleanup: true
278     local_dir: deploy
279     upload_dir: rustc-builds-try
280     acl: public_read
281     region: us-east-1
282     access_key_id: AKIAJVBODR3IA4O72THQ
283     secret_access_key:
284       secure: "kUGd3t7JcVWFESgIlzvsM8viZgCA9Encs3creW0xLJaLSeI1iVjlJK4h/2/nO6y224AFrh/GUfsNr4/4AlxPuYb8OU5oC5Lv+Ff2JiRDYtuNpyQSKAQp+bRYytWMtrmhja91h118Mbm90cUfcLPwkdiINgJNTXhPKg5Cqu3VYn0="
285     on:
286       branch: try
287       condition: $DEPLOY = 1 && $ALLOW_TRY = 1
288
289   # this is the same as the above deployment provider except that it uploads to
290   # a slightly different directory and has a different trigger
291   - provider: s3
292     bucket: rust-lang-ci
293     skip_cleanup: true
294     local_dir: deploy
295     upload_dir: rustc-builds-alt
296     acl: public_read
297     region: us-east-1
298     access_key_id: AKIAJVBODR3IA4O72THQ
299     secret_access_key:
300       secure: "kUGd3t7JcVWFESgIlzvsM8viZgCA9Encs3creW0xLJaLSeI1iVjlJK4h/2/nO6y224AFrh/GUfsNr4/4AlxPuYb8OU5oC5Lv+Ff2JiRDYtuNpyQSKAQp+bRYytWMtrmhja91h118Mbm90cUfcLPwkdiINgJNTXhPKg5Cqu3VYn0="
301     on:
302       branch: auto
303       condition: $DEPLOY_ALT = 1