Update github actions. #460
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ci | |
on: [push, pull_request] | |
jobs: | |
test: | |
strategy: | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
# - windows-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: install rust toolchain | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: stable | |
- name: test leaf | |
run: cargo test -p leaf | |
build-cli-cross: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- x86_64-unknown-linux-musl | |
- i686-unknown-linux-musl | |
- aarch64-unknown-linux-musl | |
- arm-unknown-linux-musleabi | |
- armv7-unknown-linux-musleabihf | |
- x86_64-pc-windows-gnu | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: install rust toolchain | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: stable | |
- name: install deps | |
run: | | |
sudo apt update && sudo apt install llvm-dev libclang-dev clang libssl-dev pkg-config protobuf-compiler make -y | |
- name: install cross | |
run: | | |
cargo install cross | |
- name: build | |
run: | | |
export CFG_COMMIT_HASH=`git log --pretty=format:'%h' -n 1` | |
export CFG_COMMIT_DATE=`git log --format="%ci" -n 1` | |
cross build --release --target ${{ matrix.target }} | |
- name: rename and compress artifacts | |
if: ${{ matrix.target == 'x86_64-pc-windows-gnu' }} | |
run: | | |
mv target/${{ matrix.target }}/release/leaf.exe leaf-${{ matrix.target }}.exe | |
- name: rename and compress artifacts | |
if: ${{ matrix.target != 'x86_64-pc-windows-gnu' }} | |
run: | | |
mv target/${{ matrix.target }}/release/leaf leaf-${{ matrix.target }} | |
- name: upload assets | |
if: ${{ matrix.target == 'x86_64-pc-windows-gnu' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: leaf-${{ matrix.target }}.exe | |
path: leaf-${{ matrix.target }}.exe | |
- name: upload assets | |
if: ${{ matrix.target != 'x86_64-pc-windows-gnu' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: leaf-${{ matrix.target }} | |
path: leaf-${{ matrix.target }} | |
build-cli-macos: | |
runs-on: [macos-latest] | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- aarch64-apple-darwin | |
- x86_64-apple-darwin | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: show last commit | |
run: | | |
git show --summary | |
- name: install rust toolchain | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: stable | |
- name: install llvm | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
brew install llvm protobuf | |
- name: install target | |
run: | | |
rustup target add ${{ matrix.target }} | |
- name: build | |
run: | | |
export CFG_COMMIT_HASH=`git log --pretty=format:'%h' -n 1` | |
export CFG_COMMIT_DATE=`git log --format="%ci" -n 1` | |
cargo build --release --target ${{ matrix.target }} -p leaf-cli | |
- name: rename and compress artifacts | |
run: | | |
mv target/${{ matrix.target }}/release/leaf leaf-${{ matrix.target }} | |
- name: upload assets | |
uses: actions/upload-artifact@v4 | |
with: | |
name: leaf-${{ matrix.target }} | |
path: leaf-${{ matrix.target }} | |
build-lib-apple: | |
runs-on: macos-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: install rust | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: stable | |
- name: install toolchain | |
run: | | |
cargo install cbindgen | |
brew install llvm unzip protobuf | |
- name: build | |
run: | | |
./scripts/build_apple_xcframework.sh | |
- name: zip artifacts | |
run: | | |
mv target/apple/release/leaf.xcframework . | |
zip -r leaf.xcframework.zip leaf.xcframework | |
- name: upload assets | |
uses: actions/upload-artifact@v4 | |
with: | |
name: leaf.xcframework.zip | |
path: leaf.xcframework.zip | |
build-lib-android: | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: install rust | |
uses: hecrj/setup-rust-action@v1 | |
with: | |
rust-version: stable | |
- name: install toolchain | |
run: | | |
cargo install cbindgen | |
apt update && apt install -y make llvm-dev libclang-dev clang pkg-config unzip curl default-jdk build-essential | |
export ANDROID_HOME=/tmp/Android/sdk | |
export NDK_HOME=/tmp/Android/sdk/ndk/25.2.9519653 | |
export PATH=$ANDROID_HOME/cmdline-tools/bin:$PATH | |
cd /tmp/ | |
curl -OL https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip | |
unzip commandlinetools-linux-6858069_latest.zip | |
mkdir -p $ANDROID_HOME | |
mv cmdline-tools $ANDROID_HOME | |
yes | sdkmanager --sdk_root=$ANDROID_HOME --licenses | |
sdkmanager --sdk_root=$ANDROID_HOME "ndk;25.2.9519653" "platforms;android-21" | |
- name: build | |
run: | | |
export ANDROID_HOME=/tmp/Android/sdk | |
export NDK_HOME=/tmp/Android/sdk/ndk/25.2.9519653 | |
./scripts/build_android.sh | |
- name: zip artifacts | |
run: | | |
mv target/leaf-android-libs . | |
zip -r leaf-android-libs.zip leaf-android-libs | |
- name: upload assets | |
uses: actions/upload-artifact@v4 | |
with: | |
name: leaf-android-libs.zip | |
path: leaf-android-libs.zip |