mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2026-01-22 23:44:27 +01:00
* feat(rt-sync): add persistency layer (#555) * feat(rt-sync): add pull and merge (#556) * feat(rt-sync): add push logic and run method (#568) * feat(rt-sync): integrate rt-sync with the sdk fix: add formatting command to build feat: add secondary trigger to sync deps: add tonic tls-webpki-roots feat: prevent double claiming on status stream handlers fix: add tx commit to chain swap update (#588) fix: ensure we pull records before prepare_send fix: fmt and tests * fix: set initial pulled state to `Recoverable` * feat(rt-sync): add `last_derivation_index` to sync service * Single chain source * Handle Recoverable state * fix(rt-sync): chain recovery integration (#590) Co-authored-by: yse <hydra_yse@proton.me> * feat(rt-sync): add `pair_fees_json` * fix(rt-sync): clean already persisted incoming records * feat: cache wallet info (#591) * log: add status-stream logging for non-local swaps * Sync improvements (#598) * Full sync on new Bitcoin block * Track the last unconfirmed refund tx * Trigger synced event on partial sync * fix: remove `REPLACE` clause from swap insert/update * fix(rt-sync): update chain swap payer/receiver amount (#604) * Fix syncing last derivation index * fix: update bindings and lockfile * remove logs * fix(rt-sync): avoid reuse of derivation index update logic (#608) * Add 5 index buffer to full scan * Fix storing claim_address (#609) * Filter incoming MRH txs by swap timestamp * fix liquid panding timestamp * persist tx data timestamp * Update unconfirmed transactions * feat: add API key (#618) * Use configured lazy connect channel in sync service * fix: set lower-case header (#624) * fix error message * Store & Sync LNURL info (#617) * Persist and decrypt LNURL info * Update Notification Plugin * Sync payment details * Update list payments to include chain swaps with only user lockup (#620) * Update payments query to include chain swaps without txs * Allow emitting a payment event without tx_id * fix: bindings --------- Co-authored-by: Ross Savage <hello@satimoto.com> Co-authored-by: Ross Savage <551697+dangeross@users.noreply.github.com> Co-authored-by: Roei Erez <roeierez@gmail.com>
380 lines
12 KiB
YAML
380 lines
12 KiB
YAML
name: CI
|
|
|
|
# Controls when the workflow will run
|
|
on:
|
|
# Triggers the workflow on push events but only for the "main" branch
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
|
|
fmt:
|
|
name: Cargo Format
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Check Rust Formatting
|
|
run: |
|
|
cd lib
|
|
cargo fmt -- --check
|
|
cd ../cli
|
|
cargo fmt -- --check
|
|
|
|
clippy:
|
|
name: Cargo Clippy
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: |
|
|
lib -> target
|
|
cli -> target
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
version: "27.2"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Check Rust Clippy
|
|
run: |
|
|
cd lib
|
|
cargo clippy -- -D warnings
|
|
cd ../cli
|
|
cargo clippy -- -D warnings
|
|
|
|
build:
|
|
name: Cargo Build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: |
|
|
lib -> target
|
|
cache-on-failure: "true"
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
version: "27.2"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- run: cargo build
|
|
working-directory: lib
|
|
|
|
- name: Check git status
|
|
env:
|
|
GIT_PAGER: cat
|
|
run: |
|
|
status=$(git status --porcelain)
|
|
if [[ -n "$status" ]]; then
|
|
echo "Git status has changes"
|
|
echo "$status"
|
|
git diff
|
|
exit 1
|
|
else
|
|
echo "No changes in git status"
|
|
fi
|
|
|
|
tests:
|
|
name: Test sdk-core
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: |
|
|
lib -> target
|
|
cli -> target
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
version: "27.2"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Run sdk-core tests
|
|
working-directory: lib/core
|
|
run: cargo test
|
|
|
|
build-bindings:
|
|
name: Test bindings
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: |
|
|
lib -> target
|
|
cli -> target
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
version: "27.2"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build bindings
|
|
working-directory: lib/bindings
|
|
run: cargo build
|
|
|
|
- name: Build C# bindings
|
|
working-directory: lib/bindings
|
|
run: |
|
|
cargo install uniffi-bindgen-cs --git https://github.com/NordSecurity/uniffi-bindgen-cs --tag v0.8.0+v0.25.0
|
|
uniffi-bindgen-cs src/breez_sdk_liquid.udl -o ffi/csharp -c ./uniffi.toml
|
|
cp ../target/debug/libbreez_sdk_liquid_bindings.so ffi/csharp
|
|
|
|
- name: Build golang bindings
|
|
working-directory: lib/bindings
|
|
run: |
|
|
cargo install uniffi-bindgen-go --git https://github.com/NordSecurity/uniffi-bindgen-go --tag v0.2.1+v0.25.0
|
|
uniffi-bindgen-go src/breez_sdk_liquid.udl -o ffi/golang -c ./uniffi.toml
|
|
cp ../target/debug/libbreez_sdk_liquid_bindings.so ffi/golang
|
|
cp -r ffi/golang/breez_sdk_liquid tests/bindings/golang/
|
|
|
|
- name: Setup go
|
|
uses: actions/setup-go@v4
|
|
with:
|
|
go-version: '1.19.9'
|
|
|
|
- name: Setup python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.11'
|
|
|
|
- name: Run bindings tests
|
|
run: |
|
|
curl -o jna-5.12.1.jar https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar
|
|
export CLASSPATH=$(pwd)/jna-5.12.1.jar;
|
|
cd lib/bindings
|
|
cargo test
|
|
|
|
notification-plugin:
|
|
name: Check notification plugin
|
|
runs-on: macOS-14
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: |
|
|
lib -> target
|
|
cli -> target
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
version: "27.2"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Set up Java 17
|
|
uses: actions/setup-java@v2
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: 17
|
|
|
|
- name: Build bindings
|
|
working-directory: lib/bindings
|
|
run: cargo build
|
|
|
|
- name: Build Android bindings
|
|
working-directory: lib/bindings
|
|
run: |
|
|
cargo run --features=uniffi/cli --bin uniffi-bindgen generate src/breez_sdk_liquid.udl --no-format --language kotlin -o langs/android/lib/src/main/kotlin
|
|
|
|
- name: Run Android build
|
|
working-directory: lib/bindings/langs/android
|
|
run: |
|
|
./gradlew build
|
|
|
|
- name: Build Swift bindings
|
|
working-directory: lib/bindings
|
|
run: |
|
|
cargo run --features=uniffi/cli --bin uniffi-bindgen generate src/breez_sdk_liquid.udl --no-format --language swift -o langs/swift/Sources/BreezSDKLiquid
|
|
mv langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquid.swift langs/swift/Sources/BreezSDKLiquid/BreezSDKLiquid.swift
|
|
cp langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h langs/swift/breez_sdk_liquidFFI.xcframework/ios-arm64/breez_sdk_liquidFFI.framework/Headers
|
|
cp langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h langs/swift/breez_sdk_liquidFFI.xcframework/ios-arm64_x86_64-simulator/breez_sdk_liquidFFI.framework/Headers
|
|
cp langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h langs/swift/breez_sdk_liquidFFI.xcframework/macos-arm64_x86_64/breez_sdk_liquidFFI.framework/Headers
|
|
cp langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h langs/flutter/breez_sdk_liquidFFI/include/
|
|
rm langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.h
|
|
rm langs/swift/Sources/BreezSDKLiquid/breez_sdk_liquidFFI.modulemap
|
|
|
|
- name: Run Swift build
|
|
working-directory: lib/bindings/langs/swift
|
|
run: |
|
|
swift build
|
|
|
|
react-native:
|
|
name: Check react native bindings
|
|
runs-on: macOS-14
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: React native codegen
|
|
working-directory: packages/react-native
|
|
run: |
|
|
yarn global add tslint typescript
|
|
brew install kotlin ktlint swiftformat
|
|
make react-native
|
|
|
|
- name: Check git status
|
|
env:
|
|
GIT_PAGER: cat
|
|
run: |
|
|
status=$(git status --porcelain)
|
|
if [[ -n "$status" ]]; then
|
|
echo "Git status has changes"
|
|
echo "$status"
|
|
git diff
|
|
exit 1
|
|
else
|
|
echo "No changes in git status"
|
|
fi
|
|
|
|
flutter:
|
|
name: Check Dart/Flutter bindings
|
|
runs-on: macOS-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Flutter
|
|
uses: subosito/flutter-action@v2
|
|
with:
|
|
channel: stable
|
|
flutter-version: 3.22.3 # Pinned until resource linking issues on Android is resolved with 3.24
|
|
- run: flutter --version
|
|
|
|
- name: Set up just
|
|
uses: extractions/setup-just@v2
|
|
|
|
- name: Set up Melos
|
|
uses: bluefireteam/melos-action@v3
|
|
with:
|
|
run-bootstrap: false
|
|
|
|
- name: Initialize the workspace
|
|
working-directory: lib/bindings/langs/flutter/
|
|
run: |
|
|
just clean
|
|
just init
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
version: "27.2"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Install flutter_rust_bridge_codegen dependencies
|
|
working-directory: lib/bindings/langs/flutter/
|
|
run: just frb
|
|
|
|
- name: Generate Dart/Flutter bindings & Softlink C Headers
|
|
working-directory: lib/bindings/langs/flutter/
|
|
run: just codegen
|
|
|
|
- name: Build iOS Framework & Softlink C Headers
|
|
working-directory: lib/bindings/langs/flutter/
|
|
if: ${{ success() || failure() }}
|
|
run: just build-ios-framework
|
|
|
|
- name: Generate FFI bindings
|
|
working-directory: lib/bindings/langs/flutter/
|
|
if: ${{ success() || failure() }}
|
|
run: just ffigen
|
|
|
|
- name: Static Analysis
|
|
working-directory: lib/bindings/langs/flutter/
|
|
if: ${{ success() || failure() }}
|
|
run: melos analyze
|
|
|
|
- name: Check Formatting
|
|
working-directory: lib/bindings/langs/flutter/
|
|
run: melos check-format
|
|
|
|
# This step is added to ensure version recipe was run to update podspec files & CMake script.
|
|
# It does not catch the case where 'packages/flutter/pubspec.yaml' wasn't updated properly.
|
|
- name: Update version number on podspec files & CMake scripts
|
|
working-directory: lib/bindings/langs/flutter/
|
|
run: just version
|
|
|
|
- name: Check git status
|
|
env:
|
|
GIT_PAGER: cat
|
|
run: |
|
|
status=$(git status --porcelain)
|
|
if [[ -n "$status" ]]; then
|
|
echo "Git status has changes"
|
|
echo "$status"
|
|
git diff
|
|
exit 1
|
|
else
|
|
echo "No changes in git status"
|
|
fi
|
|
|
|
# Create a new plain Rust project, add the Liquid SDK as single dependency and try to compile it.
|
|
# This tests whether the SDK compiles with the latest version of the dependencies that can be updated.
|
|
#
|
|
# See discussion at https://github.com/breez/breez-sdk/pull/971
|
|
check-sdk-as-dependency:
|
|
name: Check SDK as Rust dependency in fresh project
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install rust
|
|
run: |
|
|
rustup set auto-self-update disable
|
|
rustup toolchain install stable --profile minimal
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
workspaces: |
|
|
lib -> target
|
|
|
|
- name: Install Protoc
|
|
uses: arduino/setup-protoc@v3
|
|
with:
|
|
version: "27.2"
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: test-new-project-with-sdk-dependency
|
|
run: |
|
|
mkdir new-project
|
|
cd new-project
|
|
cargo init --name test_project --vcs none
|
|
|
|
# A project might reference our SDK as a git repository
|
|
# cargo add --git https://github.com/breez/breez-sdk-liquid breez-sdk-liquid
|
|
|
|
# In this test, we reference the checked out repo (e.g. this PR branch)
|
|
cargo add --path ../lib/core breez-sdk-liquid
|
|
|
|
# Add the secp256k1-zkp patch: https://github.com/BlockstreamResearch/rust-secp256k1-zkp/pull/48/commits
|
|
echo "[patch.crates-io]" >> Cargo.toml
|
|
echo "secp256k1-zkp = {git = 'https://github.com/sanket1729/rust-secp256k1-zkp.git', rev = '60e631c24588a0c9e271badd61959294848c665d'}" >> Cargo.toml
|
|
# Propagate the patch in Cargo.lock
|
|
rm Cargo.lock
|
|
cargo update --package secp256k1-zkp
|
|
|
|
cargo clippy -- -D warnings
|