aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: f25093f45531c7dc700a47c4c301082ac33e6c1c (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
name: CI

on:
  pull_request:
  push:
    branches: 
    - master
  schedule:
  - cron: '0 22 * * *'

env:
  RUST_BACKTRACE: 1
  # Some of the bindgen tests generate "deref-nullptr" warnings, see https://github.com/rust-lang/rust-bindgen/issues/1651
  RUSTFLAGS: "--deny=warnings --allow deref-nullptr"
  TEST_BIND: 1

jobs:
  Linux-Format:
    name: Linux-Format
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - run: sudo apt-get install -y clang-tidy-9
    - run: sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-9 100
    - run: which cargo && cargo version && clang --version && openssl version && which cmake && cmake --version
    - run: cargo xtask submodule
    - run: cargo fmt --all -- --check
    - run: cargo clippy --all -- -D clippy::all && cargo clippy --all --no-default-features --features prost-codec -- -D clippy::all
    - run: cargo xtask clang-lint && git diff-index --quiet HEAD

  Linux-Stable:
    strategy:
      matrix:
        include:
          - host: ubuntu-latest
            profile: 
            suffix:
          - host: ARM64
            profile: --release
            suffix: -Arm64
    name: Linux-Stable${{ matrix.suffix }}
    runs-on: ${{ matrix.host }}
    steps:
    - uses: actions/checkout@v2
    - run: sudo apt install -y protobuf-compiler
    - run: which cargo && cargo version && clang --version && openssl version
    - run: cargo xtask submodule
    - run: env TEST_BIND=0 cargo xtask bindgen && git diff --exit-code HEAD
    - run: cargo xtask codegen && git diff --exit-code HEAD;
    - run: cargo xtask bindgen
    - run: cargo build --no-default-features
    - run: cargo build --no-default-features --features protobuf-codec
    - run: cargo build --no-default-features --features prost-codec
    - run: cd proto && cargo build --no-default-features --features prost-codec
    - run: cargo build
    - run: cargo test --all ${{ matrix.profile }}

  Linux-Stable-openssl:
    strategy:
      matrix:
        include:
          - host: ubuntu-latest
            profile: 
            suffix:
          - host: ARM64
            profile: --release
            suffix: -Arm64
    name: Linux-Stable-openssl${{ matrix.suffix }}
    runs-on: ${{ matrix.host }}
    steps:
    - uses: actions/checkout@v2
    - run: which cargo && cargo version && clang --version && openssl version
    - run: cargo xtask submodule
    - run: cargo test --features "openssl-vendored" --all ${{ matrix.profile }}
    - run: cargo clean
    - run: cargo test --features "openssl" --all ${{ matrix.profile }}

  Linux-Nightly:
    name: Linux-Nightly
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - run: rustup default nightly
    - run: which cargo && cargo version && clang --version && openssl version
    - run: cargo xtask submodule
    - run: cargo build --no-default-features
    - run: cargo build --no-default-features --features protobuf-codec
    - run: cargo build --no-default-features --features prost-codec
    - run: cargo build
    - run: cargo test --all
    - run: RUSTFLAGS="-Z sanitizer=address" cargo test --all --target x86_64-unknown-linux-gnu

  Mac:
    name: Mac
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v2
    - run: which cargo && cargo version && clang --version && openssl version
    - run: cargo xtask submodule
    - run: cargo build --no-default-features --features use-bindgen
    - run: cargo build --no-default-features --features "protobuf-codec use-bindgen"
    - run: cargo build --no-default-features --features "prost-codec use-bindgen"
    - run: cargo build
    - run: cargo test --all

  Mac-openssl:
    name: Mac-openssl
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v2
    - run: brew update && brew upgrade openssl@1.1
    - run: which cargo && cargo version && clang --version && openssl version
    - run: cargo xtask submodule
    - run: OPENSSL_ROOT_DIR="/usr/local/opt/openssl@1.1/" cargo test --features "openssl" --all
    - run: cargo test --features "openssl-vendored" --all

  Win:
    name: Windows
    runs-on: windows-latest
    env:
      LIBCLANG_PATH: 'C:\Program Files\LLVM\bin'
      RUSTFLAGS: ""
    steps:
    - uses: actions/checkout@v2
    - run: choco install -y llvm
    - run: refreshenv
    - run: go version ; cargo version ; cmake --version 
    - run: cargo xtask submodule
    - run: cargo build
    - run: cargo test --all
  
  Pre-Release:
    name: Pre-Release
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - run: cargo xtask submodule
    - run: cd grpc-sys && cargo publish --dry-run
    - name: Check generated package size
      run: |
        ls -alh target/package/grpcio-sys-*.crate
        test `cat target/package/grpcio-sys-*.crate | wc -c` -le 10485760