Merge v2.4.0 codes #1
This file contains hidden or 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: EasyTier OHOS | |
| on: | |
| push: | |
| branches: ["develop", "main", "releases/**"] | |
| pull_request: | |
| branches: ["develop", "main"] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| defaults: | |
| run: | |
| # necessary for windows | |
| shell: bash | |
| jobs: | |
| pre_job: | |
| # continue-on-error: true # Uncomment once integration is finished | |
| runs-on: ubuntu-latest | |
| # Map a step output to a job output | |
| outputs: | |
| # do not skip push on branch starts with releases/ | |
| should_skip: ${{ steps.skip_check.outputs.should_skip == 'true' && !startsWith(github.ref_name, 'releases/') }} | |
| steps: | |
| - id: skip_check | |
| uses: fkirc/skip-duplicate-actions@v5 | |
| with: | |
| # All of these options are optional, so you can remove them if you are happy with the defaults | |
| concurrent_skipping: 'same_content_newer' | |
| skip_after_successful_duplicate: 'true' | |
| cancel_others: 'true' | |
| paths: '["Cargo.toml", "Cargo.lock", "easytier/**", "easytier-contrib/easytier-ohrs/**", ".github/workflows/ohos.yml", ".github/workflows/install_rust.sh"]' | |
| build-ohos: | |
| runs-on: ubuntu-latest | |
| needs: pre_job | |
| if: needs.pre_job.outputs.should_skip != 'true' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| build-essential \ | |
| wget \ | |
| unzip \ | |
| git \ | |
| pkg-config | |
| sudo apt-get clean | |
| - name: Download and extract native SDK | |
| working-directory: ../../../ | |
| run: | | |
| echo $PWD | |
| wget -q \ | |
| https://github.com/openharmony-rs/ohos-sdk/releases/download/v5.1.0/ohos-sdk-windows_linux-public.tar.gz.aa | |
| wget -q \ | |
| https://github.com/openharmony-rs/ohos-sdk/releases/download/v5.1.0/ohos-sdk-windows_linux-public.tar.gz.ab | |
| cat ohos-sdk-windows_linux-public.tar.gz.aa ohos-sdk-windows_linux-public.tar.gz.ab > sdk.tar.gz | |
| echo "Extracting native..." | |
| mkdir sdk | |
| tar -xzf sdk.tar.gz ohos-sdk/linux/native-linux-x64-5.1.0.107-Release.zip | |
| tar -xzf sdk.tar.gz ohos-sdk/linux/toolchains-linux-x64-5.1.0.107-Release.zip | |
| unzip -qq ohos-sdk/linux/native-linux-x64-5.1.0.107-Release.zip -d sdk | |
| unzip -qq ohos-sdk/linux/toolchains-linux-x64-5.1.0.107-Release.zip -d sdk | |
| ls -la sdk/native/llvm/bin/ | |
| rm -rf ohos-sdk-windows_linux-public.tar.gz.aa ohos-sdk-windows_linux-public.tar.gz.ab ohos-sdk/ | |
| - name: Download and Extract Custom SDK | |
| run: | | |
| wget https://github.com/FrankHan052176/Easytier-OHOS-sdk/releases/download/v1/ohos-sdk.zip -O /tmp/ohos-sdk.zip | |
| sudo unzip -o /tmp/ohos-sdk.zip -d /tmp/custom-sdk | |
| sudo cp -rf /tmp/custom-sdk/linux/native/* $HOME/sdk/native | |
| echo "Custom SDK files deployed to $HOME/sdk/native" | |
| ls -a $HOME/sdk/native | |
| - name: Setup build environment | |
| run: | | |
| echo "OHOS_NDK_HOME=$HOME/sdk" >> $GITHUB_ENV | |
| echo "TARGET_ARCH=aarch64-linux-ohos" >> $GITHUB_ENV | |
| - name: Create clang wrapper script | |
| run: | | |
| sudo mkdir -p $OHOS_NDK_HOME/native/llvm | |
| sudo tee $OHOS_NDK_HOME/native/llvm/aarch64-unknown-linux-ohos-clang.sh > /dev/null <<'EOF' | |
| #!/bin/sh | |
| exec $OHOS_NDK_HOME/native/llvm/bin/clang \ | |
| -target aarch64-linux-ohos \ | |
| --sysroot=$OHOS_NDK_HOME/native/sysroot \ | |
| -D__MUSL__ \ | |
| "$@" | |
| EOF | |
| sudo chmod +x $OHOS_NDK_HOME/native/llvm/aarch64-unknown-linux-ohos-clang.sh | |
| - name: Build | |
| working-directory: ./easytier-contrib/easytier-ohrs | |
| run: | | |
| sudo apt-get install -y llvm clang lldb lld | |
| sudo apt-get install -y protobuf-compiler | |
| bash ../../.github/workflows/install_rust.sh | |
| source env.sh | |
| cargo install ohrs | |
| rustup target add aarch64-unknown-linux-ohos | |
| cargo update easytier | |
| ohrs doctor | |
| ohrs build --release --arch aarch | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: easytier-ohos | |
| path: ./easytier-contrib/easytier-ohrs/dist/arm64-v8a/libeasytier_ohrs.so | |
| retention-days: 5 | |
| if-no-files-found: error |