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.47.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.47.0, stable, beta] # Test with no features, default features ("") and all except UI tests. # Order: fewest features to most features. args: ["--no-default-features", "", "--features all-except-ui-tests"] 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/ if-no-files-found: ignore