ckb-cli 1.4.0

ckb command line interface
name: CI workflow

on:
  pull_request:
    types: [ opened, synchronize, reopened ]
  push:
    branches:
      - "develop"
      - "master"
      - "pkg/*"

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: full

jobs:
  unit-test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ ubuntu-latest, macos-11, windows-2019 ]
    steps:
    - uses: actions/checkout@v2
    - if: matrix.os == 'windows-2019'
      name: Windows Dependencies
      run: |
        iwr -useb get.scoop.sh -outfile 'install-scoop.ps1'
        .\install-scoop.ps1 -RunAsAdmin
        echo "LIBCLANG_PATH=$($HOME)/scoop/apps/llvm/current/bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
        echo "$env:USERPROFILE\scoop\shims" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
        scoop install llvm yasm
    - name: UnitTest
      run: make test

  integration-test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-11]
    steps:
    - uses: actions/checkout@v2
    - name: Integration_Test
      run: make integration

  linters:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-11]
    steps:
    - uses: actions/checkout@v2
    - name: Linters
      run: |
        cargo fmt --version || rustup component add rustfmt
        cargo clippy --version || rustup component add clippy
        make fmt
        make clippy
        git diff --exit-code Cargo.lock

  security-audit:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Security Audit & Licenses
      run: |
        rustup toolchain install nightly --allow-downgrade --profile minimal
        cargo deny --version || cargo +nightly install cargo-deny --locked
        make security-audit
        make check-crates
        make check-licenses

  ci-success:
    name: ci
    needs:
      - unit-test
      - integration-test
      - linters
      - security-audit
    runs-on: ubuntu-latest
    steps:
      - name: CI succeeded
        run: exit 0