name: CI
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
env:
CARGO_TERM_COLOR: always
jobs:
lint:
name: Coding style check
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
override: true
- name: Install just
uses: extractions/setup-just@v1
- name: Run lint
run: |
just lint
unit-test:
name: Unit test
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
override: true
- name: Install just
uses: extractions/setup-just@v1
- name: Install cargo-nextest
uses: baptiste0928/cargo-install@v1
with:
crate: cargo-nextest
locked: true
- name: Run tests
run: |
just unit-test
integration-test:
name: Integration test
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
scenario: [native-tun, wiretun-to-wiretun, wireguard-to-wiretun]
runs-on: ${{ matrix.os }}
timeout-minutes: 30
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
override: true
- name: Install just
uses: extractions/setup-just@v1
- name: Install WireGuard tools (Linux)
if: runner.os == 'Linux'
run: |
sudo apt update -y
sudo apt install -y wireguard
- name: Set up Homebrew (MacOS)
if: runner.os == 'macOS'
uses: Homebrew/actions/setup-homebrew@master
- name: Install WireGuard tools (MacOS)
if: runner.os == 'macOS'
run: |
brew install wireguard-tools
- name: Run tests
run: |
just integration-test-${{ matrix.scenario }}