summaryrefslogtreecommitdiffstats
path: root/.travis.yml
blob: fc356f4b40f3290f7db3d9630da7392c97c8c6e9 (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
language: rust
cache: cargo
matrix:
  # allow_failures:
  #   - rust: nightly
  include:
    # Stable channel.
    - os: linux
      rust: stable
      env: TARGET=x86_64-unknown-linux-gnu
    - os: linux
      rust: stable
      env: TARGET=x86_64-unknown-linux-musl
    - os: linux
      rust: stable
      env: TARGET=i686-unknown-linux-gnu
    - os: linux
      rust: stable
      env: TARGET=i686-unknown-linux-musl
    - os: osx
      rust: stable
      env: TARGET=x86_64-apple-darwin

    # Beta channel.
    - os: linux
      rust: beta
      env: TARGET=x86_64-unknown-linux-gnu
    # Disabled to reduce total CI time
    # - os: linux
    #   rust: beta
    #   env: TARGET=x86_64-unknown-linux-musl
    # - os: linux
    #   rust: beta
    #   env: TARGET=i686-unknown-linux-gnu
    # - os: linux
    #   rust: beta
    #   env: TARGET=i686-unknown-linux-musl
    # - os: osx
    #   rust: beta
    #   env: TARGET=x86_64-apple-darwin

    # Nightly channel.
    - os: linux
      rust: nightly
      env: TARGET=x86_64-unknown-linux-gnu
    # Disabled to reduce total CI time
    # - os: linux
    #   rust: nightly
    #   env: TARGET=x86_64-unknown-linux-musl
    # - os: linux
    #   rust: nightly
    #   env: TARGET=i686-unknown-linux-gnu
    # - os: linux
    #   rust: nightly
    #   env: TARGET=i686-unknown-linux-musl
    # - os: osx
    #   rust: nightly
    #   env: TARGET=x86_64-apple-darwin

    # Minimum Rust supported channel.
    - os: linux
      rust: 1.20.0
      env: TARGET=x86_64-unknown-linux-gnu
    - os: linux
      rust: 1.20.0
      env: TARGET=x86_64-unknown-linux-musl
    - os: linux
      rust: 1.20.0
      env: TARGET=i686-unknown-linux-gnu
    - os: linux
      rust: 1.20.0
      env: TARGET=i686-unknown-linux-musl
    - os: osx
      rust: 1.20.0
      env: TARGET=x86_64-apple-darwin

    # Code formatting check
    - os: linux
      rust: nightly
      # skip the global install step
      install:
        - cargo install --debug --force rustfmt-nightly
      script: cargo fmt -- --write-mode=diff

addons:
  apt:
    packages:
      # needed for i686-unknown-linux-gnu target
      - gcc-multilib
      # needed to build deb packages
      - fakeroot

env:
  global:
    # Default target on travis-ci.
    # Used as conditional check in the install stage
    - HOST=x86_64-unknown-linux-gnu
    # Used on the deployment script
    - PROJECT_NAME=fd

install:
  # prevent target re-add error from rustup
  - if [[ $TRAVIS_OS_NAME = linux && $HOST != $TARGET ]]; then rustup target add $TARGET; fi

script:
  # Incorporate TARGET env var to the build and test process
  - cargo build --target $TARGET --verbose
  - cargo test --target $TARGET --verbose

before_deploy:
  - bash ci/before_deploy.bash

deploy:
  provider: releases
  # NOTE updating the `api_key.secure`
  # - go to: https://github.com/settings/tokens/new
  # - generate new token using `public_repo` scope
  # - encrypt it using: `travis encrypt API_KEY_HERE`
  # - paste the output below
  api_key:
    secure: "RyFdh2lpDmaNhPar7ezsb18Xz+6XFM40y7cZCDRML+Sk+eYK1xtDNfEhDRJU5Qo1ReVsByds/QJTSXr2KmZPk3lXwG3SiN7UtrLUxCxFr6qrcM/iujlKTf5UxeRklkzPXxnH95DEyEgxvgbVhWTGVDWoyMnrVQXZKDy6z1iAiYB5h2Zl1rs+MRb/Enlt5q6XIKAlG0ppGtl8CfYudq5ZiqfJaMWTt9SWm2YskC8FeMc0S3IM6/EhTvaNYLdaarFqVWQEVql+6oCuL3ayPzmGyxLdxM37tIMNQ0f97zxqWodacXTG5ULdRD8if1l/SmTujrtjbZ0KWRjsjOq4vBtxBJKGdprcSiB0xH/hToqqtTSO0z5FPXi5cB8UlK6YLDDHcP3kXNer8CYMLI1VPaUDLTF57/0/RPi2DZiiGfZsIAS6PsICbHdTQVzxQckM4lN1vnAGgkhXIMbztml21pv+QrGy98OZJ0ubf5ztgQhpT0WPH4JXT8M6htsoo8dZf8lQ5aLfmW9RKePJDqixQwPqmimPIkrlxRDTDGII0ZAZws7l779eOLmEcM2tH2HbsUKUCZIG/pRHLSlP45Jn2bULGzuXZ2daq70z6zvIbom0CUzSXIvdTXEZI2AM5RBvPYGGaKI8YlxgRdQvJp3h0BzPdFOXI3RAxscCY7PJpa/RdIg="
  # for uploading multiple files
  file_glob: true
  # NOTE explanation on each env variable
  # - PROJECT_NAME: name of the project, set on the `env.global` above
  # - TRAVIS_TAG: tag name that the build is being deployed for, usually the version number
  # - TARGET: target triple of the build
  file:
    - $PROJECT_NAME-$TRAVIS_TAG-$TARGET.*
    - $PROJECT_NAME*.deb
  # don't delete artifacts from previous stage
  skip_cleanup: true
  on:
    # deploy only if we push a tag
    tags: true
    # deploy only on stable channel that has TARGET env variable sets
    condition: $TRAVIS_RUST_VERSION = stable && $TARGET != ""

notifications:
  email:
    on_success: never