krill 0.9.0

Resource Public Key Infrastructure (RPKI) daemon
Documentation
name: CI

on:
  # permit manual invocation of the workflow via the GitHub Actions web UI
  workflow_dispatch: 

  # run the tests for any direct push to main
  push:
    branches: ['main']
    paths-ignore:
      - '.dockerignore'
      - '.github/workflow/e2e.yml'
      - '.github/workflow/pkg.yml'
      - '.github/workflow/e2e test cache rebuild.yml'
      - 'Changelog.md'
      - 'Dockerfile'
      - 'doc/**'
      - 'docker/**'
      - 'LICENSE'
      - 'README.md'
      - 'tests/e2e/**'

  # run the tests on creation or update of any pull request
  pull_request:
    paths-ignore:
      - '.dockerignore'
      - '.github/workflow/e2e.yml'
      - '.github/workflow/pkg.yml'
      - '.github/workflow/e2e test cache rebuild.yml'
      - 'Changelog.md'
      - 'Dockerfile'
      - 'doc/**'
      - 'docker/**'
      - 'LICENSE'
      - 'README.md'
      - 'tests/e2e/**'

jobs:
  build:
    name: build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]

        # Test against Rust 1.45.0 because in build.rs we say that is the oldest supported version.
        # Test against beta Rust to get early warning of any problems that might occur with the upcoming Rust release.
        # Order: oldest Rust to newest Rust.
        rust: [1.45.0, stable, beta]

        # Test with default features, all features and no features.
        # Note: "functional-tests,ui-tests" bulds the same Krill as "" because these features only enable more types
        # of test, they don't change the compilation of Krill itself.
        # Order: fewest features to most features.
        args: ["--no-default-features", "--features functional-tests,ui-tests", "--all-features"] 
    steps:
    - name: Checkout repository
      uses: actions/checkout@v1
    - name: Install Rust
      uses: hecrj/setup-rust-action@v1
      with:
        rust-version: ${{ matrix.rust }}
    - run: cargo build --verbose ${{ matrix.args }} --locked
    - run: cargo test --verbose ${{ matrix.args }} -- --test-threads=1 2>&1
    - name: Archive Cypress UI test image & video captures
      if: ${{ always() }}
      uses: actions/upload-artifact@v2
      with:
        name: cypress-ui-test-captures ${{ matrix.os }} ${{ matrix.rust }}
        path: target/ui/