mirror of https://github.com/fafhrd91/actix-net
				
				
				
			
		
			
				
	
	
		
			134 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
name: CI
 | 
						|
 | 
						|
on:
 | 
						|
  pull_request: {}
 | 
						|
  merge_group: { types: [checks_requested] }
 | 
						|
  push: { branches: [master] }
 | 
						|
 | 
						|
permissions:
 | 
						|
  contents: read
 | 
						|
 | 
						|
concurrency:
 | 
						|
  group: ${{ github.workflow }}-${{ github.ref }}
 | 
						|
  cancel-in-progress: true
 | 
						|
 | 
						|
jobs:
 | 
						|
  read_msrv:
 | 
						|
    name: Read MSRV
 | 
						|
    uses: actions-rust-lang/msrv/.github/workflows/msrv.yml@v0.1.0
 | 
						|
 | 
						|
  build_and_test:
 | 
						|
    needs:
 | 
						|
      - read_msrv
 | 
						|
 | 
						|
    strategy:
 | 
						|
      fail-fast: false
 | 
						|
      matrix:
 | 
						|
        # prettier-ignore
 | 
						|
        target:
 | 
						|
          - { name: Linux, os: ubuntu-latest, triple: x86_64-unknown-linux-gnu }
 | 
						|
          - { name: macOS, os: macos-latest, triple: x86_64-apple-darwin }
 | 
						|
          - { name: Windows, os: windows-latest, triple: x86_64-pc-windows-msvc }
 | 
						|
          - { name: Windows (MinGW), os: windows-latest, triple: x86_64-pc-windows-gnu }
 | 
						|
        version:
 | 
						|
          - { name: msrv, version: "${{ needs.read_msrv.outputs.msrv }}" }
 | 
						|
          - { name: stable, version: stable }
 | 
						|
 | 
						|
    name: ${{ matrix.target.name }} / ${{ matrix.version.name }}
 | 
						|
    runs-on: ${{ matrix.target.os }}
 | 
						|
 | 
						|
    env: {}
 | 
						|
 | 
						|
    steps:
 | 
						|
      - name: Setup Routing
 | 
						|
        if: matrix.target.os == 'macos-latest'
 | 
						|
        run: sudo ifconfig lo0 alias 127.0.0.3
 | 
						|
 | 
						|
      - uses: actions/checkout@v5
 | 
						|
 | 
						|
      - name: Free Disk Space
 | 
						|
        if: matrix.target.os == 'ubuntu-latest'
 | 
						|
        run: ./scripts/free-disk-space.sh
 | 
						|
 | 
						|
      - name: Setup mold linker
 | 
						|
        if: matrix.target.os == 'ubuntu-latest'
 | 
						|
        uses: rui314/setup-mold@v1
 | 
						|
 | 
						|
      - name: Install nasm
 | 
						|
        if: matrix.target.os == 'windows-latest'
 | 
						|
        uses: ilammy/setup-nasm@v1.5.2
 | 
						|
 | 
						|
      - name: Install OpenSSL
 | 
						|
        if: matrix.target.os == 'windows-latest'
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          set -e
 | 
						|
          choco install openssl --version=1.1.1.2100 -y --no-progress
 | 
						|
          echo 'OPENSSL_DIR=C:\Program Files\OpenSSL' >> $GITHUB_ENV
 | 
						|
          echo "RUSTFLAGS=-C target-feature=+crt-static" >> $GITHUB_ENV          
 | 
						|
 | 
						|
      - name: Install Rust (${{ matrix.version.name }})
 | 
						|
        uses: actions-rust-lang/setup-rust-toolchain@v1.15.2
 | 
						|
        with:
 | 
						|
          toolchain: ${{ matrix.version.version }}
 | 
						|
 | 
						|
      - name: Install just, cargo-hack, cargo-nextest, cargo-ci-cache-clean
 | 
						|
        uses: taiki-e/install-action@v2.62.33
 | 
						|
        with:
 | 
						|
          tool: just,cargo-hack,cargo-nextest,cargo-ci-cache-clean
 | 
						|
 | 
						|
      - name: Generate Cargo.lock
 | 
						|
        run: cargo generate-lockfile
 | 
						|
 | 
						|
      - name: workaround MSRV issues
 | 
						|
        if: matrix.version.name == 'msrv'
 | 
						|
        run: just downgrade-for-msrv
 | 
						|
 | 
						|
      - name: check lib
 | 
						|
        if: >
 | 
						|
          matrix.target.os != 'ubuntu-latest'
 | 
						|
          && matrix.target.triple != 'x86_64-pc-windows-gnu'          
 | 
						|
        run: cargo ci-check-lib
 | 
						|
      - name: check lib
 | 
						|
        if: matrix.target.os == 'ubuntu-latest'
 | 
						|
        run: cargo ci-check-lib-linux
 | 
						|
      - name: check lib
 | 
						|
        if: matrix.target.triple != 'x86_64-pc-windows-gnu'
 | 
						|
        run: cargo ci-check-min
 | 
						|
 | 
						|
      - name: check full
 | 
						|
        # TODO: compile OpenSSL and run tests on MinGW
 | 
						|
        if: >
 | 
						|
          matrix.target.os != 'ubuntu-latest'
 | 
						|
          && matrix.target.triple != 'x86_64-pc-windows-gnu'          
 | 
						|
        run: cargo ci-check
 | 
						|
      - name: check all
 | 
						|
        if: matrix.target.os == 'ubuntu-latest'
 | 
						|
        run: cargo ci-check-linux
 | 
						|
 | 
						|
      - name: tests
 | 
						|
        run: just test
 | 
						|
 | 
						|
      - name: CI cache clean
 | 
						|
        run: cargo-ci-cache-clean
 | 
						|
 | 
						|
  docs:
 | 
						|
    name: Documentation
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v5
 | 
						|
 | 
						|
      - name: Install Rust (nightly)
 | 
						|
        uses: actions-rust-lang/setup-rust-toolchain@v1.15.2
 | 
						|
        with:
 | 
						|
          toolchain: nightly
 | 
						|
 | 
						|
      - name: Install just
 | 
						|
        uses: taiki-e/install-action@v2.62.33
 | 
						|
        with:
 | 
						|
          tool: just
 | 
						|
 | 
						|
      - name: doc tests
 | 
						|
        run: just test-docs
 |