Skip to content

v1.1.0

v1.1.0 #544

Workflow file for this run

name: CI
on:
push:
branches:
- main-v1
- main-v2
pull_request: {}
jobs:
check-format:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: true
# Use nightly Rust to check the format
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt, clippy
- name: Check format
run: cargo fmt --all -- --check
check-rust-sdk:
needs:
- check-format
strategy:
fail-fast: true
matrix:
os: [ubuntu-22.04, windows-latest, macos-13]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Check with clippy
run: cargo clippy -p longport --all-features
- name: Test
run: cargo test -p longport --all-features
check-python-sdk:
needs:
- check-format
strategy:
fail-fast: true
matrix:
os: [ubuntu-22.04, windows-latest, macos-13]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Check with clippy
run: cargo clippy -p longport-python --all-features
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
manylinux: auto
args: -i python${{ matrix.python-version }} --out dist -m python/Cargo.toml
- name: Install built wheel
run: |
pip install longport --no-index --find-links dist --force-reinstall
python -c "import longport"
build-python-sdk-macos:
needs:
- check-python-sdk
runs-on: macos-13
strategy:
fail-fast: true
matrix:
python:
- version: "3.7"
universal2: false
- version: "3.8"
universal2: true
- version: "3.9"
universal2: true
- version: "3.10"
universal2: true
- version: "3.11"
universal2: true
- version: "3.12"
universal2: true
- version: "3.13"
universal2: true
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python.version }}
architecture: x64
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
default: true
- name: Build wheels - x86_64
uses: PyO3/maturin-action@v1
with:
target: x86_64
args: -i python --out dist -m python/Cargo.toml
- name: Install built wheel - x86_64
run: |
pip install longport --no-index --find-links dist --force-reinstall
- name: Build wheels - universal2
if: ${{ matrix.python.universal2 }}
uses: PyO3/maturin-action@v1
with:
args: -i python --target universal2-apple-darwin --out dist -m python/Cargo.toml
- name: Install built wheel - universal2
if: ${{ matrix.python.universal2 }}
run: |
pip install longport --no-index --find-links dist --force-reinstall
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.python.version }}
path: dist
build-python-sdk-windows:
needs:
- check-python-sdk
runs-on: windows-latest
strategy:
fail-fast: true
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
target: [x64, x86]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.target }}
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
default: true
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: -i python --out dist -m python/Cargo.toml
- name: Install built wheel
run: |
pip install longport --no-index --find-links dist --force-reinstall
python -c "import longport"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.target }}-${{ matrix.python-version }}
path: dist
build-python-sdk-linux:
needs:
- check-python-sdk
runs-on: ubuntu-22.04
strategy:
fail-fast: true
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
target: [x86_64, i686]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: -i python${{ matrix.python-version }} --out dist -m python/Cargo.toml
- name: Install built wheel
if: matrix.target == 'x86_64'
run: |
pip install longport --no-index --find-links dist --force-reinstall
python -c "import longport"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}-${{ matrix.python-version }}
path: dist
build-python-sdk-linux-cross:
needs:
- check-python-sdk
runs-on: ubuntu-22.04
strategy:
fail-fast: true
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
target: [aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: true
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: 2_28
args: -i python${{ matrix.python-version }} --out dist -m python/Cargo.toml
- uses: uraimo/run-on-arch-action@v2
name: Install built wheel
with:
arch: none
distro: none
base_image: "--platform=linux/aarch64 ubuntu:20.04"
githubToken: ${{ github.token }}
dockerRunArgs: |
--volume "${PWD}/dist:/artifacts"
install: |
apt-get update
apt-get install -y --no-install-recommends python3 python3-venv software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt-get update
apt-get install -y curl python${{ matrix.python-version }}-venv
run: |
ls -lrth /artifacts
PYTHON=python${{ matrix.python-version }}
$PYTHON -m venv venv
venv/bin/pip install -U pip
venv/bin/pip install longport --no-index --find-links /artifacts --force-reinstall
venv/bin/python -c 'import longport'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}-${{ matrix.python-version }}
path: dist
check-nodejs-sdk:
needs:
- check-format
strategy:
fail-fast: true
matrix:
settings:
- host: ubuntu-22.04
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-alpine
build: |
yarn build:debug
strip -x *.node
- host: ubuntu-22.04
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:lts-debian-aarch64
build: |
yarn build:debug --target aarch64-unknown-linux-gnu
aarch64-unknown-linux-gnu-strip *.node
- host: macos-13
architecture: x64
build: |
yarn build:debug
strip -x *.node
- host: windows-latest
build: yarn build:debug
architecture: x64
- host: ubuntu-22.04
build: |
yarn build:debug
strip *.node
- host: macos-13
target: aarch64-apple-darwin
build: |
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*;
export CC=$(xcrun -f clang);
export CXX=$(xcrun -f clang++);
SYSROOT=$(xcrun --sdk macosx --show-sdk-path);
export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT";
yarn build:debug --target aarch64-apple-darwin
strip -x *.node
runs-on: ${{ matrix.settings.host }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup node
uses: actions/setup-node@v3
if: ${{ !matrix.settings.docker }}
with:
node-version: 16
check-latest: true
architecture: ${{ matrix.settings.architecture }}
- name: Install Rust
uses: actions-rs/toolchain@v1
if: ${{ !matrix.settings.docker }}
with:
toolchain: stable
override: true
components: rustfmt, clippy
target: ${{ matrix.settings.target }}
- name: Check with clippy
run: cargo clippy -p longport-nodejs --all-features
- name: Install dependencies
working-directory: nodejs
run: yarn install --ignore-scripts --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
- name: Build
if: ${{ !matrix.settings.docker }}
working-directory: nodejs
run: ${{ matrix.settings.build }}
- name: Build in Docker
uses: addnab/docker-run-action@v3
if: ${{ matrix.settings.docker }}
with:
image: ${{ matrix.settings.docker }}
options: "--user 0:0 -v ${{ github.workspace }}:/build -w /build/nodejs"
run: ${{ matrix.settings.build }}
- name: Move artifacts
run: |
mkdir -p artifacts
mv longport.*.node artifacts/
yarn artifacts
working-directory: ./nodejs
- name: List packages
run: ls -R ./npm
shell: bash
working-directory: ./nodejs
check-java-sdk:
needs:
- check-format
strategy:
fail-fast: true
matrix:
os: [ubuntu-22.04, windows-latest, macos-13]
java-version: ["8"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install JDK
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
distribution: "temurin"
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Check with clippy
run: cargo clippy -p longport-java --all-features
- name: Compile java sources
working-directory: java/javasrc
run: mvn package
check-cpp-sdk:
needs:
- check-format
strategy:
fail-fast: true
matrix:
os: [ubuntu-22.04, windows-latest, macos-13]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install MSBuild
if: ${{ matrix.os == 'windows-latest' }}
uses: microsoft/setup-msbuild@v1.1
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Get CMake
uses: lukka/get-cmake@latest
- name: Install cargo make
uses: davidB/rust-cargo-make@v1
- name: Check with clippy
run: cargo clippy -p longport-c --all-features
- name: Build with cmake
run: |
cargo make cmake
cargo make c
cargo make cpp
check-ios-cpp-sdk:
needs:
- check-format
strategy:
fail-fast: true
matrix:
settings:
- target: aarch64-apple-ios
platform: OS64
- target: aarch64-apple-ios-sim
platform: SIMULATOR64
runs-on: macos-13
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Install target
run: |
rustup target install ${{ matrix.settings.target }}
- name: Build C
working-directory: c
run: |
cargo rustc --crate-type=staticlib --target --target ${{ matrix.settings.target }}
- name: Get CMake
uses: lukka/get-cmake@latest
- name: Build CPP
working-directory: cpp
run: |
mkdir cmake.build
cd cmake.build && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=../static/toolchains/ios.cmake -DPLATFORM=${{ matrix.settings.platform }} -DDENABLE_BITCODE=true ../static && make
check-android-cpp-sdk:
needs:
- check-format
strategy:
fail-fast: true
matrix:
settings:
- target: armv7-linux-androideabi
cc: armv7a-linux-androideabi28-clang
cxx: armv7a-linux-androideabi28-clang++
ar: llvm-ar
- target: aarch64-linux-android
cc: aarch64-linux-android28-clang
cxx: aarch64-linux-android28-clang++
ar: llvm-ar
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Install target
run: |
rustup target install ${{ matrix.settings.target }}
- name: Setup NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: r26d
add-to-path: true
- name: Build C
working-directory: c
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
CC: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/${{ matrix.settings.cc }}
AR: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/${{ matrix.settings.ar }}
run: |
cargo rustc --crate-type=staticlib --target ${{ matrix.settings.target }}
- name: Get CMake
uses: lukka/get-cmake@latest
- name: Build CPP
working-directory: cpp
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
CC: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/${{ matrix.settings.cc }}
CXX: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/${{ matrix.settings.cxx }}
AR: ${{ steps.setup-ndk.outputs.ndk-path }}/toolchains/llvm/prebuilt/linux-x86_64/bin/${{ matrix.settings.ar }}
run: |
mkdir cmake.build
cd cmake.build && cmake -DCMAKE_BUILD_TYPE=Debug ../static && make