summaryrefslogtreecommitdiffstats
path: root/.travis.yml
blob: 8c48da19c8bae3b73c460d01b63f6fdc9a1a615a (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
language: rust
# We deliberately do NOT cache with `cache: cargo` because these caches grow to
# gigabytes in size at which point downloading, unpacking and repacking takes
# way longer than just building things fresh every time.

addons:
  apt:
    packages:
      # Install musl for some Linux builds
      - musl-tools

env:
  global:
    - ANSI2HTML_VERSION=1.5.2
before_install:
  # For formatting tests
  - pip install --user ansi2html==${ANSI2HTML_VERSION}
# Default script for test stage
script:
  - cargo build --target $CARGOTARGET $CARGOFLAGS --verbose
  - cargo test --target $CARGOTARGET $CARGOFLAGS --verbose
  # Make sure that we can format w/o panic or error
  - cargo run --target $CARGOTARGET $CARGOFLAGS -- sample/common-mark.md

# Check formatting before running tests, and lint afterwards
stages:
  - formatting
  - test
  - lint
  - release
jobs:
  include:
    # Deploy binary to GitHub
    - &deploy-settings
      name: Linux binary (static with musl, only terminology)
      stage: release
      # Our release tags start with "mdcat-", so we only build for such tags
      if: tag =~ ^mdcat-
      os: linux
      rust: stable
      before_install: rustup target add x86_64-unknown-linux-musl
      env:
        - CARGOTARGET=x86_64-unknown-linux-musl
        # Exclude iterm2 from release artifacts on Linux, and build against Musl
        - CARGOFLAGS='--no-default-features --features terminology'
      # Inhibit Travis’ default "cargo build --verbose" install step because we
      # make an explicit release build in the "script" phase
      install: ""
      script: cargo build --target "$CARGOTARGET" $CARGOFLAGS --release --verbose
      before_deploy:
        # Strip the binary to reduce its size
        - strip "target/${CARGOTARGET}/release/mdcat"
        # Put all the things into a dedicated directory, as usual with TAR files
        - export ARCHIVE_NAME="${TRAVIS_TAG}-${CARGOTARGET}"
        - echo "Building ${ARCHIVE_NAME}"
        - mkdir "/tmp/${ARCHIVE_NAME}"
        - cp README.md CHANGELOG.md LICENSE "/tmp/${ARCHIVE_NAME}"
        - cp "target/${CARGOTARGET}/release/mdcat" "/tmp/${ARCHIVE_NAME}"
        # Pack the tarball
        - export ARCHIVE_FILE="/tmp/${ARCHIVE_NAME}.tar.gz"
        - tar -czf "${ARCHIVE_FILE}" -C /tmp/ "${ARCHIVE_NAME}"
      deploy:
        skip_cleanup: true
        provider: releases
        api_key:
          secure: "QLjmQJo/ak94aIdyrd6DMiPtAVr06XwjVfm9qZzd0EKbnagBYlVOW+SxpS3juBCifwz1H4eADoAfktWoKiY//BqwUXOTv9uBctQSHDl7xevGdFTOTIpRIuvDtdzk+8j+5tL2fVyPUBWIPOzBu/s+10nyHK8mPsF1Ia+CoTfPfauJPDIAI0x29OBl8vLap/DCh9aua268d8q7R9H32tDGNm9nNF3FXkWS+4yp4F83tkj8/RANOjYJMweCN1fXhziNfe+WdsVZsgnaNVKSXjTACdkXZc3mNRwi9SbtpHur9+R3wPle4m7BeRdcXo38tiWEEZfyEh4h/DpNWe5XaqRIBSR9QUHquWyN8j/KHVJ/UMs1o/yojciH2ylW0K3ak44btkPabkbwszBHvlmFiMOl4tgYsefF9Bo4x5jG8PgO3O040QyJV9ex2UkoUQYOo5xV4OeYtUUdNQRE6F0O3BUY71y0q4b+4F2ClA01gMXW41QfJmPnS8uChLqHw+w3Gzt9v03WR/la5BQixFIfMx4t0aZLGgx63c1u7gdaHc7mAjYRCdiZlWuFQ3r+6/Z4RU7/57QuRM+A0TjwElhjn2hfuFz7hssuwzG9RFYKbsMBinsm+wEWuMhkQ/P7vac3FEmYlKEgfCoUhZmxP9sEV+mxVjXOTzLYkaxNzAS0lLyQDeQ="
        file: "${ARCHIVE_FILE}"
        on:
          tags: true
    - <<: *deploy-settings
      name: macOS binary (only iterm2)
      os: osx
      before_install: ""
      env:
        - CARGOTARGET=x86_64-apple-darwin
        # Only include iterm2 when building for macos, and also enable remote
        # resources for iterm2
        - CARGOFLAGS='--no-default-features --features iterm2,remote_resources'
    - <<: *deploy-settings
      name: Windows binary (no features)
      os: windows
      before_install: ""
      env:
        - CARGOTARGET=x86_64-pc-windows-msvc
        - CARGOFLAGS='--no-default-features'
      before_deploy:
        # Windows likes file extensions :)
        - mv LICENSE LICENSE.txt
        # and ZIP files
        - export ARCHIVE_FILE="${TRAVIS_TAG}-${CARGOTARGET}.zip"
        # The leading dots are important: They make 7z ignore the path part and
        # add the file directly to the archive root.
        - 7z a "${ARCHIVE_FILE}" "./target/${CARGOTARGET}/release/mdcat.exe" ./README.md ./CHANGELOG.md ./LICENSE.txt