aboutsummaryrefslogblamecommitdiff
path: root/.github/workflows/build.yml
blob: 3d82c609e967a9e8bb152046ea9a08f201e41456 (plain) (tree)
1
2
3
4
5
6
7
8
           
   
               
       
              
                         






                                 
                          






                                      
                                  
                                  
                                 
                                                                                   
                               
                                  
                            
                                                                                
                                    
                                  
                      
                                                                                       
 
                                 



                        
                             

                                 
                          



                                      
                                       
                        
                                  
                                  
                                 
                                                                                   
                               
                                  
                            
                                                                                
                                    
                                  
                      
                                                                                       
 
                                 

                       
             
                                                         
                      
 




                                 
                          







                                      
                                  
                                  
                                 
                                                                                   
                               
                                  
                            
                                                                                
                                    
                                  
                      
                                                                                       
 
                                 




                                 

                              
name: Build
on:
  pull_request:
  push:
    branches:
      - master
  schedule:
    - cron: '00 01 * * *'

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2
        with:
          submodules: true

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Cache cargo registry
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v1-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-v1-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo target dir
        uses: actions/cache@v2.1.6
        with:
          path: target
          key: ${{ runner.os }}-v1-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

      - name: Run cargo check
        uses: actions-rs/cargo@v1
        with:
          command: check

  test:
    name: Test Suite
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2
        with:
          submodules: true

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true

      - name: Cache cargo registry
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v1-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-v1-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo target dir
        uses: actions/cache@v2.1.6
        with:
          path: target
          key: ${{ runner.os }}-v1-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test

    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        rust: [stable]

  lints:
    name: Lints
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2
        with:
          submodules: true

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt, clippy

      - name: Cache cargo registry
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v1-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-v1-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo target dir
        uses: actions/cache@v2.1.6
        with:
          path: target
          key: ${{ runner.os }}-v1-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

      - name: Run cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

      - name: Run cargo clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: -- -D warnings