mirror of
https://mirror.suhoan.cn/https://github.com/EasyTier/EasyTier.git
synced 2025-12-13 21:27:25 +08:00
115 lines
4.3 KiB
YAML
115 lines
4.3 KiB
YAML
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
|