mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2024-09-28 20:35:51 +00:00
fd9f633a77
Current focus is on CLI UX. Fair amount of change needs to happen to cater for Alice (nectar) restart scenarios.
167 lines
5.2 KiB
YAML
167 lines
5.2 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- 'staging'
|
|
- 'trying'
|
|
- 'master'
|
|
|
|
jobs:
|
|
static_analysis:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
components: rustfmt, clippy
|
|
|
|
- name: Cache ~/.cargo/bin directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cargo/bin
|
|
key: ubuntu-rust-${{ env.RUST_TOOLCHAIN }}-cargo-bin-directory-v1
|
|
|
|
- name: Install tomlfmt
|
|
run: which cargo-tomlfmt || cargo install cargo-tomlfmt
|
|
|
|
- name: Check Cargo.toml formatting
|
|
run: |
|
|
cargo tomlfmt -d -p Cargo.toml
|
|
cargo tomlfmt -d -p monero-harness/Cargo.toml
|
|
cargo tomlfmt -d -p swap/Cargo.toml
|
|
|
|
- name: Check code formatting
|
|
run: cargo fmt --all -- --check
|
|
|
|
- name: Run clippy with default features
|
|
run: cargo clippy --workspace --all-targets -- -D warnings
|
|
|
|
- name: Run clippy with all features enabled (e.g. tor)
|
|
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
|
|
|
|
build_test:
|
|
env:
|
|
RUST_TEST_TASKS: 2
|
|
strategy:
|
|
matrix:
|
|
target: [ x86_64-unknown-linux-gnu, x86_64-apple-darwin ]
|
|
include:
|
|
- target: x86_64-unknown-linux-gnu
|
|
os: ubuntu-latest
|
|
- target: x86_64-apple-darwin
|
|
os: macos-latest
|
|
skip_tests: true # Most likely do not work due to docker usage, TODO: add feature flag to allow unit tests
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install and stop tor in case it was running
|
|
if: (matrix.os == 'ubuntu-latest' && !matrix.skip_tests)
|
|
run: |
|
|
sudo apt install software-properties-common
|
|
sudo curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo gpg --import
|
|
sudo gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
|
|
sudo add-apt-repository 'deb https://deb.torproject.org/torproject.org bionic main'
|
|
sudo apt update
|
|
sudo apt install tor deb.torproject.org-keyring
|
|
sudo /etc/init.d/tor stop
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Cache target directory
|
|
uses: actions/cache@v1
|
|
if: matrix.os == 'ubuntu-latest'
|
|
with:
|
|
path: target
|
|
key: rust-${{ matrix.target }}-target-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Cache ~/.cargo/registry directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cargo/registry
|
|
key: rust-${{ matrix.target }}-cargo-registry-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Cargo check release code with default features
|
|
run: cargo check --workspace
|
|
|
|
- name: Cargo check all features
|
|
run: cargo check --workspace --all-targets --all-features
|
|
|
|
- name: Build tests
|
|
run: cargo build --tests --workspace --all-features
|
|
|
|
- name: Run monero-harness tests
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: cargo test --package monero-harness --all-features
|
|
|
|
- name: Run library tests for swap
|
|
run: cargo test --package swap --lib --all-features
|
|
|
|
- name: Build binary
|
|
run: |
|
|
cargo build -p swap --target ${{ matrix.target }}
|
|
|
|
- name: Upload binary
|
|
uses: actions/upload-artifact@v2-preview
|
|
with:
|
|
name: swap-${{ matrix.target }}
|
|
path: target/${{ matrix.target }}/debug/swap
|
|
|
|
docker_tests:
|
|
env:
|
|
TARGET: x86_64-unknown-linux-gnu
|
|
strategy:
|
|
matrix:
|
|
test_name: [
|
|
happy_path,
|
|
happy_path_restart_bob_after_comm,
|
|
happy_path_restart_bob_after_lock_proof_received,
|
|
happy_path_restart_bob_before_comm,
|
|
punish,
|
|
bob_refunds_using_cancel_and_refund_command,
|
|
bob_refunds_using_cancel_and_refund_command_timelock_not_exired,
|
|
bob_refunds_using_cancel_and_refund_command_timelock_not_exired_force,
|
|
]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Cache target directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: target
|
|
key: rust-${{ env.TARGET }}-target-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Cache ~/.cargo/registry directory
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cargo/registry
|
|
key: rust-${{ env.TARGET }}-cargo-registry-directory-${{ hashFiles('Cargo.lock') }}-v1
|
|
|
|
- name: Run test ${{ matrix.test_name }}
|
|
run: cargo test --package swap --all-features --test ${{ matrix.test_name }} ""
|
|
env:
|
|
MONERO_ADDITIONAL_SLEEP_PERIOD: 60000
|
|
RUST_MIN_STACK: 16777216 # 16 MB. Default is 8MB. This is fine as in tests we start 2 programs: Alice and Bob.
|