271 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			271 lines
		
	
	
		
			7.2 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.: multipart"
 | |
|           - "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,multipart"
 | |
|           - name: windows / stable-i686-msvc
 | |
|             os: windows-latest
 | |
|             target: i686-pc-windows-msvc
 | |
|             features: "--features blocking,gzip,brotli,json,multipart"
 | |
|           - 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,multipart"
 | |
|           - 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,multipart"
 | |
| 
 | |
|           - 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.: multipart"
 | |
|             features: "--features multipart"
 | |
|           - 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
 | |
| 
 | |
|       - name: Check minimal versions
 | |
|         run: |
 | |
|           cargo clean
 | |
|           cargo update -Z minimal-versions
 | |
|           cargo check
 | |
|           cargo check --all-features
 | |
| 
 | |
|   minversion:
 | |
|     name: Minimum version ${{ matrix.rust }}
 | |
|     needs: [style]
 | |
| 
 | |
|     runs-on: ubuntu-latest
 | |
| 
 | |
|     strategy:
 | |
|       matrix:
 | |
|         rust: [1.45.2]
 | |
| 
 | |
|     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:
 | |
|           use-cross: true
 | |
|           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
 |