aboutsummaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 543c7debddaa36159ad6d861c915b327e478c640 (plain)
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
sudo: required

language: generic

env:
  global:
    # This will be part of the release tarball
    - PROJECT_NAME=ilc

matrix:
  fast_finish: true
  include:
    # Stable channel
    - os: linux
      env: TARGET=arm-unknown-linux-gnueabihf CHANNEL=stable
      # Extra packages only for this job
      addons:
        apt:
          packages: &arm_unknown_linux_gnueabihf
            # Cross compiler and cross compiled C libraries
            - gcc-arm-linux-gnueabihf
            - libc6-armhf-cross
            - libc6-dev-armhf-cross
            # Emulator
            - qemu-user
    - os: osx
      env: TARGET=i686-apple-darwin CHANNEL=stable
    - os: linux
      env: TARGET=i686-unknown-linux-gnu CHANNEL=stable
      addons:
        apt:
          packages: &i686_unknown_linux_gnu
            # Cross compiler and cross compiled C libraries
            - gcc-multilib
    - os: osx
      env: TARGET=x86_64-apple-darwin CHANNEL=stable
    - os: linux
      env: TARGET=x86_64-unknown-linux-gnu CHANNEL=stable
    - os: linux
      env: TARGET=x86_64-unknown-linux-musl CHANNEL=stable
      addons:
        apt:
          packages: &x86_64_unknown_linux_musl
            - musl-gcc

    # Beta channel
    - os: linux
      env: TARGET=arm-unknown-linux-gnueabihf CHANNEL=beta
      addons:
        apt:
          # Use the same packages the stable version uses
          packages: *arm_unknown_linux_gnueabihf
    - os: osx
      env: TARGET=i686-apple-darwin CHANNEL=beta
    - os: linux
      env: TARGET=i686-unknown-linux-gnu CHANNEL=beta
      addons:
        apt:
          packages: *i686_unknown_linux_gnu
    - os: osx
      env: TARGET=x86_64-apple-darwin CHANNEL=beta
    - os: linux
      env: TARGET=x86_64-unknown-linux-gnu CHANNEL=beta
    - os: linux
      env: TARGET=x86_64-unknown-linux-musl CHANNEL=beta
      addons:
        apt:
          packages: *x86_64_unknown_linux_musl

    # Nightly channel
    - os: linux
      env: TARGET=arm-unknown-linux-gnueabihf CHANNEL=nightly
      addons:
        apt:
          # Use the same packages the stable version uses
          packages: *arm_unknown_linux_gnueabihf
    - os: osx
      env: TARGET=i686-apple-darwin CHANNEL=nightly
    - os: linux
      env: TARGET=i686-unknown-linux-gnu CHANNEL=nightly
      addons:
        apt:
          packages: *i686_unknown_linux_gnu
    - os: osx
      env: TARGET=x86_64-apple-darwin CHANNEL=nightly
    - os: linux
      env: TARGET=x86_64-unknown-linux-gnu CHANNEL=nightly
    - os: linux
      env: TARGET=x86_64-unknown-linux-musl CHANNEL=nightly
      addons:
        apt:
          packages: *x86_64_unknown_linux_musl

  allow_failures:
    # NOTE This target appears to be broken on Rust 1.7.0
    # TODO You may want to remove this entry by the time Rust 1.8.0 is out
    - os: linux
      env: TARGET=arm-unknown-linux-gnueabihf CHANNEL=stable
    - os: linux
      env: TARGET=x86_64-unknown-linux-musl CHANNEL=stable
    - os: linux
      env: TARGET=x86_64-unknown-linux-musl CHANNEL=beta
    - os: linux
      env: TARGET=x86_64-unknown-linux-musl CHANNEL=nightly

install:
  - export PATH="$PATH:~/multirust/bin"
  - bash ci/install.sh

script:
  - bash ci/script.sh

before_deploy:
  - bash ci/before_deploy.sh

deploy:
  provider: releases
  # - Go to 'https://github.com/settings/tokens/new' and generate a Token with only the
  # `public_repo` scope enabled
  # - Call `travis encrypt $github_token` where $github_token is the token you got in the previous
  # step and `travis` is the official Travis CI gem (see https://rubygems.org/gems/travis/)
  # - Enter the "encrypted value" below
  api_key:
    secure: BnQxKEtnxUL6K8T8WHsmC09KgTZho22z5MBlVEcX+glHMLkzehCs+LaiXQ0lsvs8Z7ngxEs+FG4qfCXtMeFJh3n4tzTYAe9xvNFhieRZKUKkkycNTTraRL1Pzpj7i+dT3/OG+vSMhgwa+I6gZwuPVHkcY1EU8fdzI95R7SLJJREM/yAE5/seYZNxA0TX4BiZIZksg+bzwSr1WJEsX0N9rv3ANqkemjMvHkeYQb6dogo8iIIBG03L/OKvuHELsdVdiyiIdq2YU62x3wPQc2w/StDkrk+dq5eMW9H7Gh0MqDGF4ZKkWlQzrxPxJnJBbWRPcKczRgGMXeIXKfBU52Pn4L92dRC7RpJmKOVZwDgyeqNLXvHYiMpL0NH3DU3V2LFpVNHJtK3f6hsVPBS0w00kpg7iQhN5EejHe7GlD6SF41J2W53XsN1+5qmNew+El+Ugnk7Jp4GFDPpYAR5u9FW7GAChGTyFjBkAOYGlnl9ZrtMC53+pPuDtGwywszf7+MXpB2HmSWy/eC1tnEE9tZt9rAVO0BTM1gCPkvDNA0czvA76gwNphEG7QCADI89WiGiVDruOGrMpF7Yi6NavmfQUwflMI2vZ+rqeBhVocK9pYLd/lg3yXyue//EejW+BE42R+IbB3OfFGgpK1+oHnbWr8UobwD3sa3iKJo232wPKozU=
  file: ${PROJECT_NAME}-${TARGET}.tar.gz
  # don't delete the artifacts from previous phases
  skip_cleanup: true
  # deploy when a new tag is pushed
  on:
    condition: $CHANNEL = stable
    tags: true

branches:
  only:
    # Pushes and PR to the master branch
    - master
    # IMPORTANT Ruby regex to match tags. Required, or travis won't trigger deploys when a new tag
    # is pushed. This regex matches semantic versions like v1.2.3-rc4+2016.02.22
    - /^v\d+\.\d+\.\d+.*$/

notifications:
  email:
    on_success: never