Files
reqwest-impersonate/.github/workflows/ci.yml
est31 3ea9f92f24 Add rustls-tls-manual-roots feature to allow callers to specify roots
Now, callers have more control over the set of roots.

Note that, due to cargo unification, other dependencies in the
dependency tree might enable rustls-tls-webpki-roots
or rustls-tls.
This will affect connections initiated by code that explicitly
enabled rustls-tls-manual-roots.

So for now, the choice is done once per entire cargo
dependency graph. If people want more precise control
over things, they can add methods that allow controlling
this on a per-connection level. Even if such methods
are available, the *-manual-roots feature will still be
helpful with eliminating the webpki-roots dependency
for those cargo graphs where there is no unification.
2020-11-19 13:13:36 -08:00

260 lines
6.9 KiB
YAML

name: CI
on:
pull_request:
push:
branches:
- master
env:
REQWEST_TEST_BODY_FULL: 1
RUST_BACKTRACE: 1
jobs:
style:
name: Check Style
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
profile: minimal
override: true
- name: cargo fmt -- --check
uses: actions-rs/cargo@v1
with:
command: fmt
args: -- --check
build:
name: ${{ matrix.name }}
needs: [style]
runs-on: ${{ matrix.os || 'ubuntu-latest' }}
# The build matrix does not yet support 'allow failures' at job level.
# See `jobs.nightly` for the active nightly job definition.
strategy:
matrix:
name:
- linux / stable
- linux / beta
# - linux / nightly
- macOS / stable
- windows / stable-x86_64-msvc
- windows / stable-i686-msvc
- windows / stable-x86_64-gnu
- windows / stable-i686-gnu
- "feat.: default-tls disabled"
- "feat.: rustls-tls"
- "feat.: rustls-tls-manual-roots"
- "feat.: native-tls"
- "feat.: default-tls and rustls-tls"
- "feat.: cookies"
- "feat.: blocking"
- "feat.: gzip"
- "feat.: brotli"
- "feat.: json"
- "feat.: stream"
- "feat.: socks/default-tls"
- "feat.: socks/rustls-tls"
- "feat.: trust-dns"
include:
- name: linux / stable
test-features: "--features __internal_proxy_sys_no_cache"
- name: linux / beta
rust: beta
test-features: "--features __internal_proxy_sys_no_cache"
# - name: linux / nightly
# rust: nightly
# test-features: "--features __internal_proxy_sys_no_cache"
- name: macOS / stable
os: macOS-latest
test-features: "--features __internal_proxy_sys_no_cache"
- name: windows / stable-x86_64-msvc
os: windows-latest
target: x86_64-pc-windows-msvc
features: "--features blocking,gzip,brotli,json"
- name: windows / stable-i686-msvc
os: windows-latest
target: i686-pc-windows-msvc
features: "--features blocking,gzip,brotli,json"
- name: windows / stable-x86_64-gnu
os: windows-latest
rust: stable-x86_64-pc-windows-gnu
target: x86_64-pc-windows-gnu
features: "--features blocking,gzip,brotli,json"
- name: windows / stable-i686-gnu
os: windows-latest
rust: stable-i686-pc-windows-gnu
target: i686-pc-windows-gnu
features: "--features blocking,gzip,brotli,json"
- name: "feat.: default-tls disabled"
features: "--no-default-features"
- name: "feat.: rustls-tls"
features: "--no-default-features --features rustls-tls"
- name: "feat.: rustls-tls-manual-roots"
features: "--no-default-features --features rustls-tls-manual-roots"
- name: "feat.: native-tls"
features: "--features native-tls"
- name: "feat.: default-tls and rustls-tls"
features: "--features rustls-tls"
- name: "feat.: cookies"
features: "--features cookies"
- name: "feat.: blocking"
features: "--features blocking"
- name: "feat.: gzip"
features: "--features gzip"
- name: "feat.: brotli"
features: "--features brotli"
- name: "feat.: json"
features: "--features json"
- name: "feat.: stream"
features: "--features stream"
- name: "feat.: socks/default-tls"
features: "--features socks"
- name: "feat.: socks/rustls-tls"
features: "--features socks,rustls-tls"
- name: "feat.: trust-dns"
features: "--features trust-dns"
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install rust
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust || 'stable' }}
target: ${{ matrix.target }}
profile: minimal
override: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: ${{ matrix.features }}
- name: Test
uses: actions-rs/cargo@v1
with:
command: test
args: ${{ matrix.features }} ${{ matrix.test-features }} -- --test-threads=1
# Separate build job for nightly because of the missing feature for allowed failures at
# job level. See `jobs.build.strategy.matrix`.
nightly:
name: linux / nightly
needs: [style]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
override: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
- name: Test
uses: actions-rs/cargo@v1
with:
command: test
args: --features __internal_proxy_sys_no_cache -- --test-threads=1
minversion:
name: Minimum version ${{ matrix.rust }}
needs: [style]
runs-on: ubuntu-latest
strategy:
matrix:
rust: [1.39.0]
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install rust
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
profile: minimal
override: true
- name: Check
uses: actions-rs/cargo@v1
with:
command: check
android:
name: Android
needs: [style]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: aarch64-linux-android
profile: minimal
override: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
# disable default-tls feature since cross-compiling openssl is dragons
args: --target aarch64-linux-android --no-default-features
wasm:
name: WASM
needs: [style]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: wasm32-unknown-unknown
profile: minimal
override: true
- name: Check
uses: actions-rs/cargo@v1
with:
command: check
args: --target wasm32-unknown-unknown